Phase one complete
Published by James on 08/01/2023At the very end of last year, we stated that our primary objective for 2023 would be to focus on prototyping our 2D platforming game. Well, in order to get 2023 off to the best start possible, I’ve spent all week in Unity doing just that. Now that we’re done with the first ‘phase’ of prototyping – and since the first full week of 2023 is now behind us – I decided that it’s the perfect time for a development update!
The biggest and most important gameplay feature that we’ve focused on this week has been the platforming. Although we’ve only sketched out one (possible) level so far, for the Fungaia zone, we decided early on that we’d need at least three modes for traversing our levels. These are running, swimming, and flying. There’s a possibility that we’ll want to add more later – it’s my dream in life to get Kinoko on a motorcycle – but we knew that if we could get these core modes developed before doing anything else, we’d have a strong foundation to build on for everything else that we do.
Put simply, on each new frame, the game makes a decision based on where you are in the world, and what buttons you happen to be pressing. What movement mode should we use?
The default mode is running.
In this mode, as long as you’re not pressing anything, Kinoko simply stands on the spot and performs his idle animation. Pushing the left stick on your Xbox/Windows gamepad either to the left or right, or pressing the left and right arrow keys on your keyboard, will prompt Kinoko to run in the direction indicated, performing his running animation, until you release the stick or key. Pressing A on your gamepad, or the up arrow key on your keyboard, will prompt Kinoko to jump. A short jump can be achieved simply by tapping the button, whilst a longer jump can be achieved by holding it. This can be combined with the left or right controls in order to have Kinoko jump in the corresponding direction. Finally, pressing B on your gamepad, or the down arrow key on your keyboard, will prompt Kinoko to drop down through whatever platform he’s currently standing on, if applicable.
You’ll enter swimming mode whenever Kinoko’s head is submerged in water.
The controls for swimming are similar to those for running, but they work a little differently below the water’s surface. The left and right controls are still used to go left and right respectively, but the A button on the gamepad (or the up arrow key) is used to ascend, and the B button (or the down arrow key) is used to descend. Unless you’re actively ascending, Kinoko will always be slowly sinking whenever he’s in the water. Kinoko will also drown if he’s submerged in water for too long. There’s no visual representation on the UI for this at the moment – we could do with an oxygen meter here – but behind the scenes I’ve got a countdown timer (initialised at ten seconds, for testing purposes) which gives Kinoko a time limit – from the moment he first enters the water – to get back out again. If he doesn’t, then it’s game over for our yellow kuparkuke friend.
Finally, you’ll enter flying mode if you press the jump button whilst you are already in the air.
Again, the controls for flying are fairly similar to the controls for running and swimming. The main thing that sets flying apart is that it actually comes with two distinct states of its own: flying and gliding. In order to fly, which for Kinoko means traversing upwards, you’ve got to be continuously holding down the A button on your gamepad (or the up arrow key on your keyboard). If you release the button – or, say, you simply tap the button mid-fall, without ever actually holding it – you enter the gliding state instead. When gliding, Kinoko falls gently back down to the ground. You don’t need to press or hold anything to do this, however you can break out of the glide if you wish – and fall at full speed – by pressing the B button on your gamepad (or the down arrow key on your keyboard). At any time before you hit the surface, you can switch back into gliding by pressing A (or the down arrow key) again.
So, those are the platforming features we’ve implemented so far. We’ve got running (which also includes jumping, falling, and dropping through platforms), swimming, and flying, all done and playable. I’m really happy with the way they all feel to play, and I think the different modes blend together quite seamlessly. I’ve designed the controls in such a way that it (hopefully) feels perfectly natural switching between running, swimming, and flying. That’s not to say we won’t come back and change platforming in the future, but for now I’m totally happy with it and I’m ready to focus my efforts elsewhere.
We find ourselves, then, at a bit of a crossroads!
Since completing the fundamentals of platforming yesterday evening, I’ve kind of just been dabbling in some of the features we will want, but not necessarily the features we need right now. I’m pleased to say that I figured out what we need to do to import high-resolution graphics. Every screenshot and clip of the game that we’ve put out on Twitter thus far has been blurry, but we’re now able to use much sharper graphics. Now that I’ve provided Chelsey with the required resolution for her artwork, she’s able to go off and start producing graphics, so pretty soon we should be able to start dropping in some real art. I’ve begun adding placeholder music and sound effects, but that was really just a quick test just to prove that I could.
I think – now that we’re able to work on this game together, with Chelsey on the artwork and me on the development – we’re able to look at adding a second map. Something I’m curious to try out, and which I haven’t done in Unity before, is persistence within the levels. If you go to one level, and gather all the collectables on that level, you shouldn’t be able to exit and reenter that level and gather them all again. The game should remember that you’ve already done so. Similarly with enemies, I wouldn’t expect the player to clear a level of monsters, then to exit and reenter the level, and need to defeat them all again (at least not immediately). Chelsey’s drawing up a second map now. Once that’s done, I’d like to work on this.
In the meantime, I’ve found myself working on a simple interface. When you first make a game in Unity, there’s no way to shut it down unless you basically force-quit the process from Windows. Even though we don’t really have a need for an in-game menu this early on in development, I would like to implement a simple one, just so that we can have some way of shutting down the game from within the game itself. Further down the line, of course, this menu will be used for all sorts of other functions, like saving/loading, viewing the game’s controls, and maybe even customising them.
Currently, this ‘menu’ exists as a simple pause screen. When you press the start button on your Xbox/Windows gamepad (or the escape key on your keyboard), the game pauses, the graphics dim slightly, and you see a simple message letting you know that the game has been stopped. The game doesn’t tell you, because it’s only a temporary solution, but you can also press the B button on the gamepad to return to the main menu from here, just for testing purposes – but of course adding this into an actual menu will be the next step.
Anyway, that’s where we’re at right now! I don’t normally plan to do weekly blog posts – two per month, one on the game, one on something else, is a more comfortable schedule for me – but, on this occasion, I just thought it would be nice to do a recap of the first real week of development. We’ve had a really productive and successful week – nothing’s come up that we haven’t been able to fix, and we’re both really pleased with how things are shaping up so far. As always, we post more frequent, bite-sized updates over on our Twitter account, and I’ll also aim to write another lengthier update towards the end of the month.
Finally – just because I don’t know where else to mention it – we’ve added a new page for our services to our website. It’s empty at the moment, but eventually you’ll be able to find out about Chelsey’s commissions and their prices here. We aren’t interested in running anything like a Patreon service at the moment, because we don’t really know what we could offer for subscriptions, but if you do like what we’re doing and feel inclined to support us financially, please do consider commissioning Chelsey for some artwork or character design!