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:




At this point I was feeling pretty good about the look and feel of the battle system (Excuse the Debug UI button in the top right hand corner.)  Although the game was released with bugs so I needed to make the reset button an actual part of the UI.  The last thing to do was to make music and sound FX so I hopped into Bosca Ceoil to make some simple 8 bit style tracks, and jumped over to Chiptone on Itch.io to make some killer sound FX for the game.  Links to Bosca Ceoil is here: https://boscaceoil.net/
and Chiptone here: https://sfbgames.itch.io/chiptone.  These were awesome and really helped me come up with a finished project.  


04OCT2021 -  RELEASE AND BEYOND

After the game was uploaded and released for the Jam, I immediately started to play other games released on my twitch stream, I played some really awesome games for about 2 hours until I was so exhausted I had to get some sleep.  Anyway, that was the jam for me.  Up until this point I have been trying to play 5-15 games every day and give good feedback and ratings to get people to play what I worked on, as well as to see some of the awesome things people came up with.  There is a ton of talent in the indie dev community. 

Anyway, thanks for stopping in, stay tuned for a video release about my process and how the jam went after everything is complete.  Until next time, Have a good one!

OH and here's the link to the game!!!!!


Comments

  1. Great read! incredible game, I'm excited to see what you do in the future! - Biggest fan

    ReplyDelete

Post a Comment

Popular posts from this blog

Barony: The Roguelike We All Should Love

Solo Game Development + Travel