Last month I participated in the 7 day game challenge at the experimental gameplay project. The theme was repetition and I wanted to expand on the concept of replaying the same level while layering ghosts of your previous runs. I also wanted to leverage my engine to create a large world with nearly unlimited amount of simultaneous ghosts. For reference I looked at Cursor Times 10, Time Donkey and Chronotron. To make it extra difficult on myself I waited until the very last week of April to get started. Please keep reading for the whole story!
Like most games it stared as a copy of another game, in this case Spaghetti Planet. In about an hour the guts were commented out so I had a clean slate to slap in the player’s ship, weapons and controls from another game I had laying around. The core hook for this game is time travel so I focused on getting that working first. Basically it runs on a fixed time step of 60 fps and stores the player’s position and input for each frame. Then some code feeds the frame data back into a player object to make the ghost replay. Initially the details about how the time travel would work were a bit fuzzy. I knew that I wanted the player’s ghost to become a hazard if played poorly but a necessary ally if planned well. After playing Chronotron I really liked the concept of needing to return to the time machine to facilitate the kinds of puzzles that I had in mind. For most of the week I was using the working title “Time Ghosts”.
The enemy behaviors are pretty simple archetypes chosen because they were easy to implement and wouldn’t need any randomness which could cause problems with time travel. There are bouncers, shooters, seekers and seeker spawners. For the seekers there was initially a problem with clumping where they eventually cluster together in a ball so I just added a single additional force that pushes away from the nearest enemy which works amazingly well at pushing them all apart. I wanted to do a boss battle with multiple ghosts fighting the same enemy but had to cut it due to lack of time.
Door switches took a little bit of work and some changes to the editor, I kept it really simple though. Every object in this engine has unique identifier including doors that is visible in the level editor. When a switch is placed there’s an attributes box to enter the id that belongs to it’s door. The power lines are only there to create a visual line between a power line and a door and don’t have any real logic. As a variation on doors a little time was devoted to experimenting with a physical switch where something gets knocked down and falls blocking the path.
Up until the very last day there was still no real level design, only a tiny test layout and bunch of ideas scribbled on paper. Throughout the week I had been brainstorming and came up with a few key ideas to explore the core game mechanic: racing against time, order of operations, needing to kill a ghost, and forcing multiple ghosts into small areas. At first the task of building the entire level in under 6 hours seemed daunting but it progressed rapidly. Starting with a central hub style layout I tried to just make broad strokes, branching out in different directions to get the main ideas represented. There was less then an hour left for testing by the time level design was wrapped up. Thankfully my brother Ben was around to help me test it bit before I posted it to the EGP forum.
Normally I would just prefer that people download the latest version of my games, but for those interested here is a link to the 7 day version of A Stitch In Time that I submitted to EGP. You can check out the level edit mode by pressing F4.