It's time for the Marathon Game Jam!
Well, it was a long time coming, but the Marathon game jam is complete. I started working on this project a little over a month ago during the AI and Games game jam. My initial prototype was very rough around the edges, but it demonstrated the core gameplay concept. I was told that the idea behind the game is new, innovative, and has a lot of potential, so I decided to keep going.
The Marathon Jam seemed like a great motivation to push for a more complete game in a shorter time interval. I don't consider this to be a beta quite yet, still just a gameplay concept demo, but I have made significant strides towards a complete game in just a month and a half. I made significant improvements in three key areas.
1. I learned to write shader code! In the previous iteration of Survive The Maze, I used entirely stock shaders, and toggled each wall segment on and off as the Spartan characters moved around. In the game description, I simply explained my idea to the player and asked them to use their imagination!
I found a way to create much softer and more thematic shadows. Outside of the round range of each torch, the walls cease to exist. Within the range of the light, walls that are directly lit will appear as solid, but walls that are obscured will not. I learned how to create texture masks that represent these two ideas, and I then fed those textures into a shader. The final result is a much less jagged shadow line with smooth curves at the edges.
2. I fixed the performance. The main technical feature of this game is the shadow engine. Pure shaders only go so far, I need a way for the physics objects in the game (as well as AIs) to know when a wall is solid and when it isn't. The obvious answer is ray-casting, but I quickly found myself designing a system that required 10,000 ray casts per frame. I failed to release a Web version for the AI and Games jam, not because I couldn't build, but because the game ran at 5 FPS in the browser.
A few quick fixes brought me down to 1500 ray casts, but I still was exceeding a 16ms frame budges (60 FPS) by more than 5 times. I spent a long time with the algorithm, and when I was convinced that I had as good of a concept as possible, I started optimizing. I reached a 50% improvement through code tricks, and I ended up finding a way to throttle the shadow updates without it being visible to the player. In the end, I pulled the average frame times down from half a second to around 40 FPS, at least on my computer.
3. Finally, I added a second game mode. My intention was always to make a head-to-head multiplayer game, but I started with the fundamentals and went from there. In my previous iteration, I disabled any second game mode and instead focused on the stronger of the two scenarios. You played as a minotaur defending your labyrinth, and that was it. While I didn't have time to update the AI, I did go through the long process of re-enabling a second game mode that I had previously abandoned. I had made a lot of assumptions and took a lot of shortcuts for the sake of time, so building in the possibility of the player and the AI swapping sides took a lot of work. I put this update last because I feel like it is the least complete, the second game mode is certainly present, but isn't quite playable yet.
If you read this far, thank you! I already have a strong idea of where to go next, but I would love to hear feedback/suggestions even so! I plan on fixing the parts that were rushed or missed, and I will be doing real art and sound in the coming weeks. I also want to implement some completely new ideas that aren't a part of the game yet. One major idea - now that performance is back - is to allow the Spartan team to place torches in the maze as they travel, and to enable the Minotaur to extinguish them. I believe that this would add a missing dynamic to their current struggle. Plus, it would shift balance back in favor of the Spartan team, they're having a hard time right now!
To everyone in the SoleDevelopment community - thank you for your help and support! I'm still new to the games space, and it has been incredibly helpful to have kind and intelligent people to talk to as I worked. I'm looking forward to another great month of progress - even without a jam for motivation!
Files
Get Survive The Maze
Survive The Maze
Right-click to move. Defeat the intruders by colliding with them, but don't get caught in the light for too long!
Leave a comment
Log in with itch.io to leave a comment.