Otherworldly Stars is my first Ludum Dare entry. This time I worked on some base code beforehand and found the worst pitfalls during practice over the warmup weekend. Here we have a log of my development progress and a postmortem.
Pre-jamI had already decided to make a game that would run in the browser and which wouldn’t depend on a big engine like Unity, so that factored into my choice of tools. For programming language I was torn between TypeScript and Haxe (pros and cons of each are discussed at length here). I had used Haxe more recently and so it won out for me. I also wanted to make something shader-intensive – I had used three.js before and Haxe externs already existed, so it was the obvious choice. Thanks to that I had a base project set up pretty quickly. Over the warmup weekend I worked on some GLSL shaders and particle system code. I made a little particle editor and debugger using dat.gui for the ParticleShaderEngine three.js addon. I also worked out what the likely bugs were going to be and checked that my base code worked fine across different desktop web browsers. I also set up separate debug and release builds, so I could check on performance with traces turned off and debugger UI removed. For text I wanted to use signed distance field fonts, but decided it probably wouldn’t be worth the effort and made a little class that used 3D text geometry instead. After the warmup weekend I dashed off to the Lake District for a hiking holiday.
Day 1When the final round of theme voting came around I looked at the options to figure out the sort of game I could make for each one. I thought it was a great set, some of the themes were a natural fit for the sky shader in my base code – I honestly did not know some of the themes were “Night and Day” and so on. As it turned out, the selected theme was “You Are The Monster” which wasn’t so great for that – but it did sound like a good theme to make a story out of, so I took a half hour to work out a basic plot for the game:
- A God (the player) appears at a burnt shrine.
- Player explores the burnt game world looking for answers.
- Exploration gives some backstory to the world and nature of the God.
- The further east the player goes, the more hopeless it gets, the God cannot find any signs of life or followers.
- Player rushes through dozens of screens with different stuff but no sign of life looking for his people and disciples.
- Eventually this leads to a place where the land tapers away and the other Gods appear to scold the player, explaining that you charred the land in a previous life.
- Plot device that led to the God’s banishment and a “You Are The Monster” is revealed.
- Battle with lots of particle effects ensues.
- A time loop or banishment pushes you back to the beginning of the game as that was the way the other Gods banished you to the sea of otherworldly stars.
Day 2I got stuck trying to pool particle systems, the efficiency hit without pooling led to me giving up on a combat system and concentrating on the player’s journey instead. I decided to focus on the main story point to make the link with the theme obvious:
- You race through screen after screen looking for your missing disciples, only to reach the other Gods and be told that you, the fire god Agni, destroyed your disciples in a fit of anger in a past life.
- The other Gods reseal you in the West where you came, but after a while you are born again and the game repeats itself.
PostmortemI spent the last 3 hours before the competition closed spending my time running through the game looking for bugs, making a playthrough video, packaging it, uploading to itch.io, taking screenshots etc. I recommend drawing a line and then taking the time to do these things, so that the end of the competition isn’t stressful. Thanks to taking some time I was able to get rid of a few bad bugs. Overall I was happy with the result, despite the lack of proper gameplay or audio, it looks nice and is playable from start to finish.
By Blog in