This is a short story that’s been kicking around my head for a while, and I finally finished it the day before Valentine’s Day. It involves serpentoids – humanoid snakes – discussing human mating rituals.
The serpentoids first showed up as mercenaries or bounty hunters in an earlier piece, hunting an elf a banshee. They’re partly inspired by the Vipers in XCOM 2, though mine will not include any breasts – they’re constrictors, and I cannot think of a sensible reason why constrictors would need them. I had originally intended them to just be generic bad guys, but reading that snakes apparently aren’t capable of affection and then wondering they just might not show it in a manner we can interpret, I decided to make them the viewpoint characters for this.
So, it is finally finished. Valentine’s Day Escape, my first Unity game that wasn’t a piece of shite, has been completed. You can find it here.
Looking back on it, it was a good learning experience. The biggest (practical) problem I had was how to procedurally generate the track, or how to build a random track as the player progresses. My solution to this is not innovative, but it works quite smoothly: the track segments, along with every obstacle and pick-up, are already placed in the scene before the game even begins, and then swapped in and out as needed. The track updates are triggered by a static collider that sits across the track and ignores everything by the player; when the player enters it, the first five pieces of the track are removed, five more are chosen at random and added to the end of the track. The collider is then moved further up the track, and it continues until the player dies.
The key point here is that I used an invisible collider to make track updates event-based, rather than constantly checking if the next update is due. This is generally better practice, as it means the CPU has to track less. Polling is a bit like a kid constantly asking “Are we nearly there yet?” – about the only reasons you’d do it is because there are no alternatives, or you might be doing something every frame (e.g. movement and input). In fact, a lot of Web-based applications are becoming more event-driven, particularly by using WebSockets.
Another problem I had, about six months ago, was lack of motivation. After working on it for a few months, I just got fed up and did a few other things. Then somebody commented on my WIP thread on the Unity forums, partly because I had looked at one of his, and his suggestions gave me the motivation I needed to finish this. So, one thing I need to work for future projects on is getting more feedback. With Spamocalypse, I am going to start posting to the Feedback Friday threads that run in the Design sub-forum on the Unity3D site.
All in all, I am reasonably proud of this. It’s not my first game, nor even the first long-term one, but it is the first I consider polished enough for general consumption.
Valentine’s Day Escape is now at version 0.6, with the following changes:
There are now downhill segments, and these will temporarily boost your speed. Adding that in has resulted in a slight reduction of the player’s maximum speed along the level segments, which I have decided is due to fluid resistance 😀
Following on from that, the ingredients and chocolate bars move around. Every so often, they and the exploding teddy bears will speed up, adding a difficulty curve.
The intro cutscene has some animations and dialogue. Currently, the dialogue sound is an alien gibbering made using Unity, and I will need to add more.
A very annoying bug in the standalone version was that the first camera would still be rendered in the background, even when disabled (see the screenshot below). However, in the Unity Editor this is not the case: instead I see a grey box around the second camera, just as expected. My fix for this is to just draw the second camera over the entire screen, rather than about a quarter of the screen as I had planned, but the FOV of the camera appears to be too low (i.e. it appears to be zoomed in too far – see the second image below)
So, I finally got some feedback on Valentine’s Day Escape, which I started before I created this blog, and I’d actually left it aside for a bit. It was purely gameplay issues – the boat turning too slowly among them – but I decided that I might as well add some extras. At this point, it’s mainly artwork I need to finish.
A bit of background to this: on Valentine’s Day 2014, I came up with the idea of making a silly game in which Big Romance (Hallmark et al) were trying to kill the player for not taking part in this waste of time. They have you trapped in a procedurally-generated canal with a load of defective gifts and mocking adverts, in an attempt to overload you with feelings of guilt and loneliness (whatever that second thing is…). All you have on your boat is a cannon that launches brack that has been in the oven for too long. How long can you last?
So, sales download pitch out of the way, here’s what I did since the last version.
Doubled turning speed for boat
Added options to change mouse sensitivity
Tweak the score settings, and display the score constantly rather than just at the end
More ingredients along the track, allowing you to launch more Brack
The Brack Launcher has a second camera for aiming. By default, this is toggled by clicking the right mouse button