Tools and tech for my game written in Rust

I took this Ludum Dare as an opportunity to practice some Rust programming. I used the Ggez engine, which provides APIs for graphics and sounds and an event loop - just what I needed. The project ended up with 667 lines of Rust for the actual game (including the hardcoded story messages), 76 lines of Python (for asset conversion), and 105 lines of Makefile.

code.png

I use VS Code as an editor, which with the Rust plugin becomes a pretty good IDE. It's amazing that I can get all of this as open source software. I developed the game on Windows, because the most powerful computer I have is my Windows desktop at work.

travis.png

For automatic builds, especially for Mac and Linux builds, I used Travis CI that amazingly can build for Mac even on their free tier. Creating software for Mac otherwise requires Apple hardware. I had set up Travis before the contest started, but since building the assets didn't work on the build machines, all builds failed so I didn't have much help from it as a Continuous Integration system. I released the Mac and Linux builds a couple of days after the deadline.

blender.png

I made the levels in Blender and wrote a script using Blender's Python API to export the meshes and trigger areas as raw binary data to be read by the game. I would have saved time if I had done this before the competition, as that's something I always need. I have scripted Blender before, but this is the first time I ran it from the command-line during the build process, which was very convenient.

Of course, Blender is not installed on the machines Travis uses for building, so for the releases I had to check in the result, something I'd rather not do. (Rule: If a file can be created from what's already checked into the repository, then it shouldn't be checked in.) I later realized that I may be able to make the build scripts download Blender if it's not installed. It's very lightweight for being a powerful piece of 3D software.

music.png

I made the "music" in FL Studio. First I started with some bassline, but that sounded a funky and didn't fit the mood I wanted at all. So I slowed that down by about 90% and switched to some FM synthesis sounds, which made me think of some 1960's experimental art music. Perfect!

The rest of the sounds are noise and tone generators in Audacity.

cover.png

I came up with a story about someone who not only can't control the spacecraft, but also has no recollection of what he/she is even doing there. You start with nothing, not even the possibility to steer.

I usually do level design last, and as this Ludum Dare ended three hours earlier than I'm used to, I had almost no time for that, so the game is short and ends abruptly. But I consider it a success anyway, because I did what I set out to do, which was to learn more about game development in Rust.

Play and vote for Legally Dead here!