Full Walkthrough: https://youtu.be/t7bkYbKwy90
One of the projects I’ve worked on recently is a short, minimalist puzzle platformer called ‘There Can Only Be One’. In this game, the player needs to find a way to keep all but one of his or her avatars alive each level. Some of the levels simply teach new mechanics, some are designed to confuse, and others are built around platforming challenge.
With Needurino, I started with a desired play experience in mind, but with this project I instead started with a set of programming questions which eventually turned into a core puzzle game mechanic. I wanted to learn how I could keep track of the number of players on a given stage and make this number central to the game loop itself. I created an array which would store all objects of type ‘Player’ and then store as an integer the number of entries within that array. I could then turn this value (‘c’) into a string and then present it to the user through some UI text (‘playersLeft.text = c.ToString();’). This number remains in the top right of the screen throughout most of the levels, and is simultaneously being used in a series of if statements: if (c > 1), return; if (c < 1), offer reset; if (c == 1), load next level. As I briefly touched on, the earlier levels prioritise teaching core mechanics through level design, the middle levels prioritise confusing the player with large numbers of avatars and hazards, and the later levels prioritise dexterity and caution. In these later levels, the player now needs to keep at least two alive until they’re able to dispatch the avatars in the center — either remotely by lowering spike or more directly. I created switches which needed two players at once, as well as green ‘vulnerable players’ which can be rammed into. While graphics weren’t a focal point for this project, I still wanted there to be a responsive, satisfying ‘game feel’ for the experience. I mostly did this by creating a colour-dependent particle effect as well as an 8-bit style sound I made using BFXR, creating a distinct ‘burst’ as these instantiated upon player deaths (with the intention of creating something akin to bursting a balloon). I wanted the visuals, and particularly this sound effect, to provide immediate feedback to the player — something satisfying when intentional and painful when unintentional. As playtesters needed to split their attention between several game objects, it was often this sound which first alerted them whenever they made a mistake.
Similar to graphics, ‘narrative’ also wasn’t a focal point for this particular project. Saying this, I still wanted a surprising tonal shift and, potentially, a suggestion of some narrative depth behind this abstracted world. The stages of the game were fairly discrete — stage by stage completion within very ‘gamey’, obstacle-based environments. But for the ending sequence I wanted everything to change. The player destroys all but one of the seven avatars (representing the seven surviving avatars from previous levels) in a small room, cutting off the game’s somewhat infectious retro soundtrack, before a doorway opens up. The player then leads their surviving avatar through a winding series of corridors in separate scenes, each darker than the last, before confronting their ‘mirror image’. Perhaps in an attempt to destroy this potential contender, the last remaining avatar dispatches themselves. The game transitions to a variant of the title screen, changing the title from ‘There Can Only Be One’ to ‘There Can Only Be None’ before the credits roll.
I wanted this ending sequence to be different from the rest of the experience: visually, audibly, tonally, and in terms of gameplay. I intended for it to suggest some unexpected continuity between the discrete levels, suggesting some continued existence for these avatar shapes. It also offered me an opportunity to think about staging and timing, thinking about the delays before the credits appeared and music resumed, and changing tone through music: from the upbeat, cyclical, retro vibe of ‘Blazer Rail’ to the eerie and somewhat discomforting sound of ‘The Swamp’. Both of these royalty-free music loops were sourced online and credited, and seemed to work well for my purposes at the time. Should I return to and develop this short game, I’d most likely try to generate my own music using free, accessible software like Bosca Ceoil or some more professional software at the university like Apple’s Logic Pro X. Going forward, I think having additional control over my game’s soundscape would be invaluable in creating the precise tone and tonal shifts I’m after in some of my work.