Greetings Junkfish followers. I am Peter, the procedural proprietor. I have a tendency to hide up the back of the workplace, and write code to make things appear in-game.
Maize is a procedural generated game, which means the game environment is randomly set-up each time it is played, and the player shouldn’t experience the same run twice. Making a game like this is pretty complicated, and the powers above tasked me with the quest of conquering this devilish process. As such, most of my blog posts will probably feature something to do with procedural generation.
I’ve been working quite a bit with one of our artists – Adam – to bring his assets into the procedural generation process. He provided me with some temporary rooms and corridors to work with, whilst he added detail to other pieces, such as interlocking ceiling pipes in the corridors. They look really pretty and fit perfectly together, so kudos to him!
Using the assortment of bits that Adam gave me, I successfully hit a milestone last week where a full level of rooms was created and the rooms joined together by corridors. No bits overlapping, no corridors leading into nothingness, all joints between rooms and corridors rotated correctly; everything was beautiful and functional.
This week, I followed up on the first milestone by attempting to implement all the mechanics that the other programmers had crafted as part of our First-Playable-Build series. Things like the player, necessary items to win, the “victory area”, doors, and audio; it is necessary for these to interweave with the procedural system, so I tweaked some bits on them and… Milestone 2 was successfully hit! The procedurally generated levels are now properly playable, and have all the mechanics that the first builds utilised.
From here, I’m going to look into tightening up the way levels are formed, and attempt to make rooms appear across multiple levels of the ship. Hopefully we’ll soon have a full ship of rooms and corridors for the player to explore and run around. Hella’ exciting prospects.
Next week, I’ll go into more detail about how the generation works so far, and the user tools that help it function.