Post Ludum Dare BlogPost
SO.... What happened?
Well, I successfully achieved what I was after with this Ludum Dare event. I went in with the little bit of base code for a trpg and ended up with a product that I was pretty proud of. I spent almost the entire first 2 days programming the complex turn based systems and the geometry challenges of working in a 2d isometric game scene. It was difficult to be honest, but the programming challenge encompassed the first two days of the competition entirely. Working until late at night usually around 3-4 am. I would then get up early the next mornings, around 8 or 9 to begin working again. I will be outlining everything that happened in this blog post so strap in it may be a long one. I will try to provide pictures and documentation from that night as best as I can.
1OCT2021 - The Kickoff
I began the competition by setting myself up at my fathers house on his farm to begin working promptly at 6:00pm. I wanted to work outside so I set myself up on the patio with an awesome view to kick off with some solid inspiration. Or just a nice ambiance to begin the event. That spot shown here:
It was Ideal as far as I could tell. A keen eye would also spot Robert Nystrom's Game Programming Patterns, which I refuse to work on any game project without, check out his website for his book here. I would highly recommend it to anyone who is a self-taught dev and doesn't have any history with design patterns or data structures.
After I had set myself up and had all of my workflows setup and my repository for the project created, it was about 5:45. I wrote out some basic goals for myself on a pad of paper and waited for the clock to strike 6.
At 6pm EST I saw the theme that we all worked on so feverishly, "Unstable." I was perplexed by the theme but knew that I could put that in as a twist rather easily to a Tactics Style Roguelike game. Which was my original intention.
The crux of the idea was a 5x5 game board that would have an exit, enemies to fight, and loot crates to unlock. The loot and experience gain would be used to purchase upgrades for the player character as they progressed through the game. The unstable twist was that the 5x5 game board would have pieces fall away periodically. This was my idea and I was ready to begin coding. I jotted some notes down quick on my notepad, and started making sticky notes to work from.
That night I worked until as late as I could, but unfortunately the Twitch stream I had been recording did not store the VOD after the stream for the first night so sadly there is no footage from that night. I mostly spent that night programming the map building system which would allow me to handmake a series of maps each which contained different spawning information for chests, enemies, the player, and the exit. These initially would be rough looking prototypical blank tiles, color coded to allow me to see what space did what. An example is shown here:
This is what those prototypical stages looked like, the different tile colors corresponding to the different "Object" type to spawn. This workflow allowed me to build multiple maps in a very short period of time. These maps would then be chosen at random by a "Battle Builder" Class which would assign random probabilities to spawn enemies and chests, adding another level of variance to the player experience, per-level. The player spawns and the exit spawns were always static however. This was to completion of the first night, it was time to call it. I finally went to bed around 4 in the morning.
02OCT2021 - 03OCT2021 - AI Programming
My goal the next morning was to put together an AI system so that my AI enemies could take turns and move around. This was an interesting undertaking and took me quite a while. If you want an in-depth code review into the system and how it works you are more than welcome to leave a comment or ask to go through it with me by e-mailing me @jp.greasefiregames@gmail.com Essentially, the BattleController class object maintains the turn order, player, followed by the enemies. (It actually functions on a speed based system which is a stat of the player, so you can really order turns however you want.) The BattleController grabs a list of all Unit classes on the board and sorts them into a turn order. This BattleController class is a Finite State Machine (Design pattern), which starts new states each time a Unit's turn is up. The individual units however operate on the Command Pattern (again, Design Pattern, READ Nystrom's book!!) so they populate a command list and then choose from them (The player Unit from input, and the AI enemies from a list of predetermined AI Command Objects).
There was a lot of messing with this and it's still not perfect, but I did end up getting it to work in a straightforward manner and was happy with the result. The previous explanation essentially explains what I was doing for the entirety of Day 02 of the jam up until the Compo was coming to a close, this is why I had to forego my attempt at the Compo and push for the jam. So I was essentially programming AI up until Sunday night meaning that there isn't much to say for 03OCT2021.
Ah, I also put together a Builder class which would handle all of the spawning and connecting the dependencies of the objects, with a Map class which housed all of the information for that particular map, I mentioned this earlier but it's not exactly clear. By this time I was feeling smoked out on coding but I finished a viable test build and pushed it to itch for my friends to try out while I began the process of polishing (Art, Music, and Animation).
This is an accurate depiction of my mental state at this point.
04OCT2021 - POLISH
After the fever dream of the first 36 hours of the Game Jam being spent programming, and fixing bugs in Visual Studio, it was time to do some artwork. I started with the player character who was a generic character holding a melee sword. I gave him some simple animations and called it good.
I know the blog is going to destroy my quality but that's ok. If you want to see him in all his glory go check out the game.
I did the enemies and revamped the chests, as well as added particle effects for gold, experience, and did a TON of UI artwork. To come up with this project looking here:
Great read! incredible game, I'm excited to see what you do in the future! - Biggest fan
ReplyDelete