A Mid-Mortem: How We Got Here and Where We're Going: Part 2


If you haven't already read part 1 you can find it here 

I wrapped up the last post with the end of the game jam I'd initially set out to participate in. That post was built around days, this one is going to be built more around milestones, screenshots, and uploaded builds.

In the days following the game jam I did some cleanup of things I hadn't noticed before. The first was addressing a bug that made the game end if a player moved their own unit onto their starting hex.  It also looks like that's when I first added in the restriction that terrain modification required an adjacent unit. At this point I have a screenshot which I titled TurnsMovesAndMods, so I think that was meant to mean that the game was turn based, allowed you to move your unit, and let you modify terrain. Pretty similar to the end of the game jam, but with some modifications.

(6/1/23)



The next screenshot was me documenting the first significant UI/HUD elements, where the currently selected hex was displayed and let you press buttons to decide what type of terrain you wanted to turn it into. What's not visible in the screenshot is that I also added in the initial ability for the base to spawn new units when clicked and a visual selected state for units.

(6/6/23)


Following that I added in a similar visual selected state for hexes and player bases, restricted player movement to prevent units from entering empty or mountain hexes, and most notably: added in resource production at the beginning of each turn, which means this is also when I added in resources. I also added in a simple message at the top to indicate whose turn it was.

(6/22/23)


I had a few busy weeks at this point where I didn't find much time to work on the game, but I added in a few core features like charging resource costs for terrain modification and unit movement, and I made the resource counts in the UI sync up with changes. This is also when I built in the requirement that dirt be placed before a hex could be changed to any other type of terrain.

Note: I initially was charging 1 gold per unit movement, and pretty quickly decided that idea wasn't any good and I dropped it in favor of giving every unit 1 movement per turn.

(7/12/23)


After that I added in multi-selection of units and my initial battle system. At this point the game actually felt like the first playable version of what I'd imagined.

(7/18/23)




Initially I wanted to embed a web build on itch so no one would have to download anything. So I built the project for web, uploaded it, and realized pretty quickly that Mirror wouldn't work in a browser. So right off the bat Build 1 wasn't going anywhere. Oh well. I rebuilt and uploaded the windows build as Build 2.

At this point I got two of my friends to playtest the game together and give me some initial feedback as they both shared their screens on discord. I didn't get any screenshots of that, but it gave me a lot to work with as far as what needed changing. The biggest issue I saw was that the whole board was visible to both players at all times. That's pretty accurate to a board game, which I was still trying to emulate at this time, but it was actually making gameplay less interesting because there was no way to surprise your opponent, they always knew your moves. So I decided to implement a fog-of-war, where each player would only see their own units, the hexes those units occupied, and any hexes adjacent to them.  

Another issue came up in trying to playtest after that. The out-of-the-box component I was using had allowed my friends to play with each other over their local network, but they couldn't connect and play with me. So I decided it was time to connect to Steam. That wasn't built into that component, so I needed to build something for it. I didn't want to keep the old one around to get in the way, so I decided the new UI needed to also support local connections. I also just wasn't totally sure how the connections worked at this point, so I wanted to keep the option to allow someone to manually enter an IP so they could play with a friend without using Steam. I don't think I ever got that working for players on separate networks because Steam proved to be fairly easy. Anyway, the first Steam build was Build 3.

Playtesting also pointed out that it was easy to not notice that it was your turn, so I recorded a couple notes with my guitar and added it in as an audio cue when your turn starts.  I also added a game over message when the game ended. That was Build 4. (8/7/23)

Build 5 from what I can recall now was mostly just a refactor that allowed me to more easily switch off between the Transport I was using for Steam and the one I was using for local connections without having to make any code changes each time. This was the first build where I started posting a changelog in the game description on the main itch page.  (8/8/23)

Build 6 then was my first stab at a tech tree. One of the main goals of the tech tree was and continues to be to give players meaningful choices in how they play the game.  So my first attempt at that was to give players the option to sink a lot of resources into a tech now in order to get payoff from it in the future. I added 2 techs that had high costs but globally improved production. This one also came with a change to the combat system, which I've changed several times since then as well.(8/19/23)

Build 7 added a new tech: Banks which increased gold production per turn and improved the tech tree to disable tech buttons after they were purchased. My intention with this new tech was to make gold more meaningful and allow players to stockpile it for future rewards at the cost of the immediate benefit of using it for creating terrain or units earlier. This build also removed the Mountain terrain type which wasn't making much sense and replaced it with the ability to alter/increase hex height. This meant adding in some additional logic when moving units to check hex height, and it also made clear a problem that had been tolerable, if a bit annoying, so far: the edges of adjacent hexes of the same type were too unclear. The hex height also made it possible to build a hex so high that it blocked everything behind it from view.(8/22/23)

Build 8 was focused on solving those problems from build 7. I initially tried creating shaders to apply to my existing hex models to make their borders more apparent. I found a tutorial online which started guiding me to use URP (Unity Render Pipeline) and I gave it a shot, but doing so meant overhauling all of my existing materials. I probably could have gone deeper into that rabbit hole but I wanted to keep moving, so I dropped that option and decided instead to make a new hex model that was slightly more complex  and would have clearer edges. I don't have a screenshot of that image in blender, but I'll show it in-game below. It isn't anything too fancy, but it was effective. I also added "hex height" into the selected hex panel displayed on the right sidebar so players could tell the height difference between hexes even if they couldn't eyeball it. Finally I added in camera rotation with 'q' and 'e' and camera zooming with mousewheel. That last bit might actually have been enough on its own but I'm happy with the other additions as well. Somewhere along the way I also added in a 'help' button that popped up a one-page explanation of how to play. Below are some screenshots from testing and practice games I played. (8/25/23)


 I also changed the "turn indicator" text at the top to change color between green/red if it was your turn or not.


Then I updated it again to also track turn count to help me better track pacing.



Up until this point I had been keeping the page for this game locked behind a password and sharing it only when playtesting with someone, but around this time gave me two really good suggestions that I jumped on, and some others that I wrote down to come back to. The first was to make it public so I could get more eyes on it, and the second was to support local multiplayer. As it turned out it was really easy to add local multiplayer, I'd already pretty much been doing it when I tested with one client in unity and the other standalone, so I just updated the UI to make things more obvious. My timeline is actually a little unclear here, but I think this was roughly Build 9 on (9/8/23) and marks a good stopping place for this part of the mid-mortem. 

Get Topoforma

Leave a comment

Log in with itch.io to leave a comment.