2020 Nov 02
October saw the return of Dos Game Jam, a long and open jam for making games inspired by MSDOS. I looked to Wolfenstein3D, Blood and Elvira for inspiration, and made a short no-combat delivery game set in a cemetary.
I had a raycaster engine in progress before the jam started, built with allegro4 for DOS, but it has a lot of extra functionality beyond a basic raycaster, such as multilevel floors, ceilings and wall sprites. It's not very performant, being written only in C with none of the high performance assembly that raycasters of the DOS era relied on for speed, and probably isn't even well optimised for C.
Although the raycaster 'runs fine' in DOSBOX with the virtual clock speed set to some unrealistically high number, I thought I'd write a simple raycaster specifically for modern operating systems instead.
I called the new project 'CrystalCast' after the first object I spotted in my office, and made use of the coincidentally named 'raylib' library as my basis. Raylib does not actually offer much in the way of helpful features for a raycaster beyond pixel level drawing routines, but it's quite compact, easy to understand and is under active development.
More effort was probably spent on making an editor than the actualy raycaster, the goal was to be able to quickly iterate on a game once the editor was in place.
The editor allows me to quickly modify the map, place walls, floors, 'edges' (2D walls like fences and grass), sprites and triggers for activating events. Due to time constraints more of the game functionality ended up being hardcoded than I'd like, but the editor is still fairly flexible and I hope to use it for some future game jam entries.
A Final Delivery
The game itself is a no-combat 'walking simulator' where the player is tasked with delivery a package to a disused cemetary. If they choose to follow the instructions, they can leave the package in a burnt-out office, and then leave on their delivery bicycle. But my hope was to have players avoid the obvious conclusion to the game and explore a little further.
The cemetary is littered with tombstones, one of which contains an oddly worded clue about the deceased being 'packaged' below it, and how they were the 'key' to progress. It's not very subtle. Once the package is delivered, this tombstone opens way to a small hidden area where a key can be found, which in turn opens a prominent lock that the player was unlikely to have missed on their way into the cemetary. Opening the lock grants access to a tomb area that can be entered to start the 'hidden' section of the game.
Originally I'd planned to have traditional FPS combat in this hidden section, but I ran out of time during the jam and instead went with some light puzzle mechanics. In the end, I'm glad I avoided combat because the game is more atmospheric and interesting (for a single playthrough) this way.
Overall I was pleased with my progress, I've made very few games without combat or traditional gameplay in the past. Had I more time I might have 'ruined' the game with normal FPS blasting and ended up with something less interesting. But I'm most pleased that I have a largely complete homemade game engine and editor to use in future projects, which if I can avoid excessive scope creep will largely have the technical hurdles already solved, allowing me to concentrate on the more creative aspects of game development.