DevLog


This post recaps my development process for the Game Jam, I'll probably do retrospective later on.

Overall, this was my first Game Jam, and my first time doing a complete game (other than the tutorials). I had a ton of fun and learned a log about Godot by going through this process. 

Timeline
I wanted to finish everything in one weekend, rather than try to account for time in a more fine grained fashion.

Friday Night
Saw the art pack announcement and started thinking about what to do with it. A top down platformer or twinstick shooter came to mind, but I'm not a huge fan of platformers and I didn't have any ideas for an interesting twist for a twinstick game. I haven't seen many (any) tutorials for making a strategy game in Godot so that seemed like an interesting choice. 

I knew I wasn't going to have a ton of time for balancing or AI so I needed to make it a very simple strategy game. DragonForce was one of my favorites from way back when (still wish it could get a re-release on a modern system), and at it's core the gameplay is pretty simple:

1. A simple battle mode where two armies of sprites fling each other at one another while the commanders shoot occasional special attacks at each other. Your control of your army in battle was very corse, victory came from your set up, rather than your reflexes.
2. A strategic map where you ferry troops and generals from castle to castle to occupy territory. When two armies meet, they go into the battle mode (https://games.kde.org/game.php?game=konquest is somewhat similar to this mode without the other elements)
3. Some  story telling and nation managements (when you meet or capture certain generals, promoting generals to keep the loyal, etc)

The AI wasn't particularly complex, yet there was a lot that emerged from the simple framework.

I figured, what the heck, let's see how much of this I could make in a weekend. 

I started a project and spent the first evening generating a configurable soldier scene that could follow simple orders and could be swapped between the various unit types in the game. 

Soldiers have some basic stats (speed, health, attack power, attack rate). When they collide with another body they check if it has the enemy soldier group, if so, they call that soldier's damage function. There are some enums that drive their "role" (which tweaks those stats and chooses which sprite to use), their faction (which uses $sprite.modulate to swap their color), and their current command. It was a great chance to learn to use Godot's 2D animation system to set up animations for their walk and attacks. After having them fight in a test scene for a bit I added damage animation (otherwise it wasn't clear that the spells had any effect). 

Then I was done for the night.

Saturday
I knew I needed Generals so cloned the basic soldiers I'd made the night before, it only took a few tweaks to get them to work well (mostly buffed their stats and tweaking their group assignment meant they wouldn't be affected by commands). 

I set up a node which periodically checked if one of the generals was dead, if so, it signaled that the battle was over. In retropect I should have had the generals signal this directly but this worked ok.

I wanted to be able to control the soldiers so I added a set of buttons which messaged the commands - again, I probably should have used signals but didn't.

Messing around with all of this made it clear that some of the original commands where wonky (I had ones that made them run directly from the general, which I reworked), so I rewrote some of those. It was pretty easy since the system was quite modular. Likewise, it was pretty easy to add a healthbar to the generals. Otherwise it was hard to tell if your dudes where doing anything to the generals.

I created a UI component for the Army deployment, but didn't wire it up.

Finally, I set up a tileset so I could make maps.

I had a bunch of family obligations so that was about it for Saturday.

Sunday

By this point, I realized there was no chance I was going to be able to get a strategic map system working in the time I had available. I pivoted and decided to make a narrative level based game using the battle system I already had.

I finished the widgets I'd use for controlling the start of the battle. Things like the widgets used for army deployment, the battle timer, and wired it up with signals.

Now I had a scene that would run the whole game loop in a blank area. I put that together with the tileset I'd created the night before and had a rough template I'd use for each level.

A few level types that came to mind:

  • Tutorial - something trivial on a blank field to let the player get used to the controls, this became the 1st level
  • Random obstacles - something that would break up blocks of troops, this became the forest level (the 2nd level)
  • A wall of ranged troops that the player would need to fight to - I wanted one where they could be reached, and one where they had to be blocked while troops fought *around* them (this became the 3rd and 4th levels)
  • Some level with an interesting twist - this became the final level with their skeleton army.

I built simple area triggers which signal the level to give commands to the enemy army. Then I set up a level loader to walk the player through the levels (it would trigger based on the buttons from the victory/defeat screens).

I wanted to have cutscenes with dialog before and after each level. I didn't have time, which led me to add a speech label to each of the generals and drove that off the same trigger system I used for sending army commands.

Adding the skeletons was super simple since the soldiers were already so modular, it just required me to add a new role and some tweaked stats (I also overrid the color system to keep them white).

Then I added splash, victory, and how-to-play screens to tie it all together. The mage shooting on the how-to-play screen was a happy accident.

Finally, it was a matter of learning how to export the game and upload to itch

Get PixelForce

Leave a comment

Log in with itch.io to leave a comment.