Archive for the ‘LD #21’ Category
I’ve had the “change color to go through walls” idea for a bit, so I thought this would be a good chance to put together a prototype and see how it worked. The general idea is that you’ve woken up inside an alien artifact filled with color-based challenges, with said alien narrating your progress (or lack thereof) like it was studying a rat in a maze. I wanted it to seem like it was examining humanity through the concept of color, so it would try and “figure out” purple, or put together challenges with regards to mood and atmosphere that a color invokes. Red lasers, big blue crystalline structures, smooth white alien surfaces.
I didn’t really have a chance to flesh out this narrative much except for the opening text (which in all fairness could be taken as anything really). The final scene, when you finally exit into blackness at the end of the ordeal, I wanted sparks to fly out in the character’s various colors only to fade to small white stars. The view would slow spin until you’d see yourself floating away from a massive, smooth alien cube with a little pin-prick door where you came out. Maybe other doors on the surface would hint that there were other mazes, other experiments going on. I wanted to evoke an ambiguous escape, like you escaped only to…what? Float out into the abyss of space?
Anyways, without further ado…
I had some second thoughts about going with Unity again this time around for a couple of reasons. In the last couple of competitions, I’ve gotten lost in the details and not come out with anything. It doesn’t have any built-in support for 2D sprite animation and the nice libraries for handling that are commercial so I can’t submit the source required to enter the competition. Finally, I can’t produce 3D assets quickly enough to make it feasible in the time limit of the competition.
I had decided that I’d probably just be jamming on an existing Unity project unrelated to the theme anyway though, so when the theme clicked with my idea and I decided to switch gears I decided to stay in the Unity groove despite my hesitation. This actually worked out great this time around because it gave me a huge leg up building the environments. Which leads me to:
2. Hand-Crafted Levels
I love procedurally generated content. I love playing games like that, and the siren’s lure of cheap, infinite content is oh so attractive when time is so scarce. Unfortunately, most times I run into Doull’s Law and before you know it all my time is gone and I’ve been staring at my algorithm trying to get just the right random levels. This time around, with the core mechanic being a puzzle platformer, I broke out my sketchbook before I did anything else and I scribbled out eight or ten “rooms” that I could string together. That done, I took the first and simplest room and went to work putting it together in Blender. Unfortunately, I had a lot of trouble getting the results I wanted out of Blender (due to my own inexperience, not for lack of capability from the tool) and I was starting to second guess by decision to stick with Unity and the third dimension.
Then I had an idea – Unity 3 introduced a great little feature that when you hold down the ‘V’ key while moving an object, you’ll grab the actual mesh vertex under your mouse and it will snap to the closest vertex while you drag it around. My environments were already super simple, so I dumbed them down even further to be constructed of nothing but transformed cubes. Cubes for walls, cubes for floors, cubes for stairs – everything. Unity has a default Cube prefab that you can drop into your scene, and this combined with the vertex snapping let me put together a primitive room like building with Legos, much faster than I could fighting with Blender.
This time around, I made much better decisions about how to prioritize my time to tackle my game idea. In the past, I’ve been bogged down with anything from reorganizing my code to trying to get the perfect particle effect (god I hate Unity’s particle system, but that’s a different topic). This time around, I had my sketches first so I knew exactly where I was going. I knew how the first room was set up, and it was simple to help introduce the player to the core gameplay mechanic of changing colors to change surface solidity. This gave me an early goal to shoot for – get the entire game running in the first room. Get the room put together, get the player controllable, and wire up the color changing controls to the logic that changes the environment accordingly. I didn’t start work until Saturday around lunchtime and I had a fully functional system in place by the time I want to bed. I rounded out some issues when I start up again on Sunday but then all I had to do was start implementing puzzle rooms. I could work for as long as I wanted to and when it was time to be done I’d just tie off the environment and we’d be set to go.
Of course that’s not really the case most of the time. In the end, I finished the rooms I planned on for my entry (four distinct areas) with a “win” state. Towards the end I realized I wouldn’t have any time to work on it during the last day of the Jam so I decided to round out the experience by adding the necessary death/respawning and call it finished. I don’t even know where to go with sound so there’s nothing in it (not even some nice sfxr effects). Now that I’ve got “finished my gameplay” entry under my belt, I think I’ll need to get some practice doing rapid sound engineering so I’m ready next time. The key though is that taking a bite-sized chunk of my game and getting everything working in it gave me a good sense of what worked and what didn’t, and it gave me the warm fuzzy of seeing it all in action that probably carried my through the rest of the weekend.
1. Primitive Environments
This is the double-edged sword of using Unity’s cubes as my only building block. All right-angles and flat surfaces, it’s close the the alien environment I was looking for but it’s a little too angular and there’s not a lot to indicate the way forward and draw the player in that direction. There are plenty of spots crafted from a bunch of cubes that really should be a single piece of geometry (like the stairs in room two). This is okay for the white always-solid portions of the room, but it causes weird artifacts where semi-transparent colored regions overlap. If I was more comfortable with Blender, these object would be made there and I’d be able to add a little more variety and at the same time have more complicated geometry as a single mesh.
The other side of the primitive environment is the lighting. I don’t really have a strong grasp of lighting a scene well and this, combined with all the boring lines of the cubes, made the rooms look really flat and dull. I originally pictured the environment stark and harsh and geometric with lots of ambient occlusion (leveraging Unity’s lightmapping) to give it more of the look of The Witness or Mirror’s Edge’s time trial DLC. Unfortunately, with the poor lighting and the lack of interesting detail, it didn’t look anything like that. At the last minute, I added the grainy noise filter and the “your suit is broken” conceit to cover it all up.
This one comes in two flavors: movement speed and color switching. Several of the commentors complain that the controls are off and that movement is too slow. I agree, and I played some with the settings for the FPS character controller script I used from Unity’s standard assets. Moving any faster made things feel too slippery for a game where I’m asking people to jump onto floating platforms. In reality, I think maybe the starting rooms were just too big. Unfortunately, building them all out of cubes as described above makes it really hard to shorten a room. My guess is that would have been easier to do in Blender, and I could have tweaked the size of the various rooms to give it a little more flow and make the player feel faster without actually speeding him up.
On the other hand, color switching was a big question mark in my mental model for the game. I had the idea of changing colors to move through obstacles, but I had no idea how to actually let the player do so. In the end, I sort of punted and used classic FPS weapon selection with the number keys. More than one person had trouble with this configuration though, and it’s made worse by the fact that the puzzles I had in mind asked the user to switch colors on the fly (in mid-air in the case of the final room). Switching had to be easy enough to do it quickly and accurately, but also required instant access to all possible colors at once to allow any color-to-color transition. I briefly looked into a linear linked list where the player could only transition from cyan to magenta to yellow and so on to loop around to the beginning. This didn’t work since reflex-based puzzles were completely out of the question when there was n possible colors in between you and the one you wanted.
3. Too Many Colors vs. Not Enough
This brings us the the color selection. The final jam entry only has three (plus the “all off” white color). I originally included red, green, and blue as well, but I didn’t have a chance to build out more environments to use those colors so I pulled them out (this is a sideways compliment about Unity as well, as my color-switching component can have new colors added and removed right in the inspector without any other code and the UI and the world respond accordingly). I’d like to include more colors since the environment’s palette is essentially bounded to this list. Too short a list and you’re environment is boring. Too long, though, and you exacerbate the control problems with color switching, as well as making colors less and less unique. I think the three worked for now, but my guess is I’d feel pretty constrained in the art department if I could only use those four colors. Who knows, though – I’ve seen some games make great use of a limited color palette.
4. User Feedback
I mentioned I hate the Unity particle system, right? Yeah…it’s a time-sucking black hole of configuration options that never seem to give me the affects I’m going for in my head. Conceptually, I wanted to send heavy sparks radiating out from the player in the color the user changed to, but I could find a good looking way to get the glowing trails that you’d expect form actual sparks. It’s made worse by the fact that they emanate so close to the camera so you get these big, ugly blurry blobs for particles. I got distracted with the sparks though (as I’m prone to do with the damn thing) and never got around to adding other feedback so there’s not a lot of action cues other than the UI to tell the user what color they are. I’d like to change the lighting of the level to whichever color the player is, but I’d have to experiment with how that changes the player’s ability to know what color other surfaces are. In the end, there’s just not a lot of feedback from your actions in the game, so everything feels a little static.
5. The Final Puzzle
The last puzzle as put down in my sketchbook was completely unworkable and I didn’t realize it until I got to implementing and testing it Sunday evening. The original plan didn’t have the walls in between the platforms, with the intention of only forcing the player to switch to the next platform’s color mid-air. The problem, though, was obvious once I’d died once – I’d given the player the ability to switch to the color white, which in effect makes everything solid. Dying automatically resets the player’s color to white and I was faced with a broken finale where the entire path to freedom was solid before me. I needed to salvage the room as best I could though rather than coming up with a whole new puzzle – the time it took to put together a room from start to finish was more time than I had at that point. The walls were a way to force the player to change their color into a non-white option, bringing us back to the original intent of the puzzle. It’s a little more complicated since it’s not exactly obvious that the platform on the other side of a transparent wall is itself transparent until you get over there (and fall through) the first time. In the end, though, I’m glad it worked out and the solution is learnable so I don’t feel it’s necessarily outside the bounds of fairness. Maybe not the final design I’d go with, but it worked for the weekend.
I think the core mechanic has some legs on it, and I think that the mental picture I have of the atmosphere and narrative might make for an interesting place to play for a while. The biggest hurdle really is the controls but it might be fun to build out a more fully-fleshed proof of concept and try out some different control schemes.
Also, I’m not sure how you make a game that’s so purely about color accessible with regards to color blindness and other related issues. A yellow wall doesn’t have any form to alter, no texture or other cues besides its color. I’d have to do some research to see if other games have solves similar problems and if there’s a way of handling it gracefully without breaking the art direction I’m aiming for.
Finally, some other random concepts to add some variety to the game, in no particular order:
1. More Hazards
Spikes, Lazers, different substances. All or most of these can be specific colors so that the player can nullify their effects with a strategic color change. Combining these with navigation might make for some fun (or frustrating) combinations.
There needs to be more variety in the environmental architecture for sure, but I always loved the sliding sequences in Mirrors Edge where you’re coming down off the side of a skyscraper. I love that sense of barely-controlled momentum, and I thought I could use something similar to introduce a timing aspect to some puzzles.
3. Paint Gun
All that geometry makes for a clean, alien environment, but that can be a little boring sometimes. I thought it’d be a fun idea to have a gun that you could hose down surfaces with that would splatter paint all over it so you could essentially walk through the splatter as door using that color. I thought the organic look of the paint splatters and the ragged “holes” they would make would be an interesting contrast to the environment as a whole, but the technical implications put it out of reach for the competition. Maybe something fun to play with later though.
Thanks for playing folks! I had a blast working on it with all of you.
I’m considering jumping into LD21 this weekend, but just the jam this time. I’m sort of on a roll with another project and I’m hesitant to change gears and risk losing my momentum there. My current plan is to see how that’s going at the end of the week and work on that this weekend if I’m still being productive. If the theme is something that works as a minigame or something, maybe I’ll look at implementing that.
I’m planning on using the same tools as usual (although I picked up a copy of Photoshop recently so that’ll be replacing Pixelmator and Pixen):
Hardware: Macbook Pro, Wacom Tablet
Game Engine, Languages, & Tools: Unity 3D Pro 3.4, C#, MonoDevelop IDE
Graphics & Art: Corel Painter 10, Photoshop CS5, Blender 2.5
Music & Audio: sfxr, Wolfram Tones for music, GarageBand