Blabyrinth - The First Few Hints
I've now spent almost a month working full-time on Blabyrinth! This game has felt just out of reach for so long. Getting to work on small snippets was always a treat but now that I'm making actual progress it's having a noticeable (and positive!) effect on my mood.
I'm very aware that Spaceteam still has a bunch of connection issues and is missing Bluetooth. I will remedy those things soon but I also need to focus on finishing a second game so I can keep this little operation running. The Spaceteam tip-jar is still clinking away and the Patreon is getting started, but having more than a single game to rely on is going to help tremendously.
So what progress has been made?
Be aware that everything below uses placeholder art. I found a great set of flexible prototype sprites here that is evocative of the final vision: Oryx 16-bit Fantasy Sprite Set
A lot of the foundational work is getting done.
- Players can connect and see each other and move around
- Rooms are connected with passages that can be opened or closed
- Items can be picked up and dropped and stored in containers
- Locked doors can be opened with keys
- Pressure plates can open doors while they are pressed
- Scenery can be examined, moved, and manipulated
- Scenery can be touched in a certain sequence to trigger... something
- Clues can be split across scraps of paper
- Keypads can trigger things with a sequence of button presses
This is a good example of the extensibility I talked about a couple of posts ago. The keypad in the example uses pictures of animals, but the button labels can just as easily be letters, numbers, astrological symbols, runes, whatever. Or they can be blank and the solution can involve their position on the grid. With a few simple changes similar puzzles can have a very different feel.
And importantly, all these behaviours and actions persist across the network.
Incidentally, my best advice for anyone building a multiplayer game: do not build a single player game and then add multiplayer to it later. Build multiplayer in from the start. Always code as if you are sending and receiving data across a network. It will keep your code better separated and save you a lot of headaches. I (claim to) know this and I still find myself taking shortcuts and making assumptions that I later have to throw away and rewrite to accommodate networking.
Next up is the Level Generator. It will begin by generating a random treasure and a secret ritual required to discover it. Clues to the ritual will be distributed throughout the level, themselves hidden in secret places, behind locked doors, or engraved onto scenery. This requires further clues, and then the process continues recursively until the labyrinth is sufficiently complex.
To help with testing I've hooked up my Palette hardware controls to the game. So far I'm just using the slider to zoom the camera in and out of the level so I can see how it has been generated. This feature will not be available to players ;)
I've only just started on the generator but I'm very excited to keep building on this foundation and see where it takes me.