As we get to the end of March, I’m really close to being able to run a pre-release test of the new extended demo. This is a relatively large update to the previous demo, with around 30 levels to play, new challenge levels and a new boss fight!
The new level set I’ve made, Ochre Hill, has been finished and includes a whole 13 new levels. These have much more of a focus on platforming than the previous level set, but there’s still a few levels with puzzles to work out too. I’ve also added my first mini game, a fun little breakout game you have to beat to move forward. The ball moves faster the longer you keep it going and if the ball hits the ground, spikes eject out and hurt Ed! Which is kind of horrible if you think about it.
I’ve added a new bee boss called Hepatitis Bee into Ochre Hill. The boss is RNG heavy with the bee flying around like crazy whilst shooting his/her bee cannon at you. You have to keep off the ground to avoid falling into the deadly honey and the second and third phases have platforms moving from side to side for added danger. I really wanted to make a frantic, fast paced boss fight and I think I’ve achieved it well. The whole fight is over in 30-60 seconds and Richard has written me an amazing fast paced song to go with it. It will very likely need difficulty adjustment once I get people play testing, but I will worry about that once feedback starts coming in.
In my previous devlog I talked about implementing random events into the game. Following that, I now have quite a few random events implemented! There’s rare NPCs, some NPCs who have alternative dialogue, arbitrary visual changes and a couple of cameos from some of my friend’s games. It’s good fun adding these in and the random number to generate events is occasionally randomly re-rolled whenever a room restarts. So you might die a couple times on a level and end up finding something new!
I have quite a variety of players who have played this game, and with that comes a variety of abilities. Some people breeze through, some people get stuck and don’t know what to do. It’s a tough thing to balance. Although I have difficulty settings that give you more/less health, people do seem reluctant to use that. I’ve added a ‘hidden’ tutorial level for people who are really stuck – to access it you must die five times on the first level. It’s a little bit sassy (which I hope people will find funny), but it holds your hands through a few of the basic mechanics. I’ve also added a few helpful sign posts throughout the game that gives you prompts for where you will want to do certain things.
Since early on in the game’s development, I’ve had LaserDiscs available to collect. To find these, you have to find the key for locked doors. Once through the door, there’s a harder level to beat to collect your reward. I’ve finally made use of the LaserDiscs now though – they’re used to unlock challenge levels. These are time trials with a target time to beat. I plan on keeping these under 1 minute long so it’s not too much to take in, the idea being that you can replay them a few times until you get good. The game will keep track of your best times and there’s also my time (the developer time) to beat too if you feel so inclined (although it’s so ridiculously optimised I’m not sure that’s possible). A lot of the secrets I added in the first demo that had no purpose are starting to fall into place and actually become useful now!
The final thing I added was attract mode – the game will play a random demo after 12 seconds of no input on the main menu. To do this I set up a system to be able to record all applicable inputs and play them back. That all worked very well, right? Well I got the recording and playback working within about an hour. The problem was I couldn’t get the random calls to repeat correctly. My playbacks were consistent, but they weren’t correct. The demo would play back and just be stupid and die because the AI wasn’t behaving as expected. I spent a whole day on this – it completely consumed me. I have never had a problem that’s taken me this long to solve before. The worst thing was, sometimes the demos would play back how they were expected to and I thought I’d solved the problem. Then other demos did not play back correctly so I’d not solved it at all!
Because entering a new level plays a transition, there’s 2 frames of the level before inputs start recording. This can be enough to change all the random number generation so it’s all off what is expected, then everything goes wrong. After hours and hours of trying to keep everything consistent, I finally came up with a solution; I set a known random seed just before changing rooms. So we have a brand new, fresh seed since no randomness occurs between room end and room start. I can also repeat this whilst loading demo data! This seems like quite an obvious thing to do in hindsight, but whilst I was losing my mind wondering why even the most minor change in my code breaks everything, I wasn’t exactly thinking rationally.
I image most people will not even know there’s an attract mode, some people will see it and just think “Huh, that’s neat”, but for those who bother to have a look, I’m dropping a few little clues in them which show you how to get some difficult to find orbs etc.
So there you go, attract mode took me about 15 hours of work to get working properly. I hope someone enjoys it.
Talk about this post and suggest new blog topics in my Community Discord!