2023 Year in Review

Goals

Improved Dungeon Stocking: 90% complete.

I spent the majority of the year on this goal, developing history generation and Map Components to more intelligently place content on the map. Map generation is finally sophisticated enough to do everything I’ve envisioned since I started working on this game.

Improved Performance: 80% complete.

This goal pertained to the performance of the main game loop, which was sluggish, especially during combat. The main performance gain came from displaying all actor actions at the same time instead of in sequence. Also, the most frequently executed code was optimized. There’s still some miscellaneous clunkiness to clean up.

Content Creation: 10% complete.

All the time spent on system development came at the expense of content creation. A small number of items, enemies, and objects were added over the course of the year. More progress was made in history and map generation, with dozens of history events and room types being added.

Balancing: 5% complete.

The outcome I expected from this goal was a final set of calculations and a spreadsheet that perfectly tied player stats, enemy stats, item stats, and progression together using those calculations. I couldn’t get the numbers to work. I couldn’t even settle on basic calculations such as damage. I don’t know why I struggled with this so much. Perhaps it was too abstract. I started to make progress when I put the spreadsheets away and began using a balance-as-you-go approach, where I’d adjust stats on the fly as I play-tested. Level one of the dungeon is now fairly balanced. There’s still a long way to go. I’ll need to leverage spreadsheets at some point to complete the balancing.

Unplanned Work

History Generation:

History generation started as a means to an end. I wanted maps that made sense, that weren’t completely random collections of rooms and enemies and items. For a map to make sense, I believed that it was necessary for everything in it to have a reason for being there, and for those things to be located in areas that made sense based on that reason. A pile of bones on the ground belonged to an adventurer who roamed the hallways centuries ago. The ruins that the bandits have setup their outpost in are all the remains of a dwarven city that thrived thousands of years ago. The goblins and cultists occupying opposite sides of the map have gone to war in recent days and are now battling throughout the level.

I started with an assumption that generated history events would be abstract, and therefore relatively simple to implement. That could be a safe assumption in some scenarios such as a high-level history of the world. However, for small-scale events in a confined space (a dungeon level), it doesn’t work. The farther along the implementation progressed, the more evident this fact became. The events grew more concrete and detailed, and the generator grew larger and more complex. I began to wonder if I should cut my losses and scrap history generation altogether to rein in the scope. At this point, the system works, but it functions more as scaffolding for map generation.

Map Components:

Map graphs, which represent the rooms and connections between rooms on a map, were introduced a couple of years ago. They’ve been extremely valuable for map generation. They allow a particular room to be populated based on attributes such as the number of connections to other rooms, whether the room is a dead-end, and whether the room is required to get to the end of the map.

A limitation of map graphs, until last year, was that each room had to be populated independently. Map graphs weren’t able to place guards in the room before a treasure vault, or make the entire lower half of the map a stronghold, for example. Map Components were introduced to remove this limitation. Map Components are the output of analyzing the map graph for patterns such as a linear sequence of rooms or a group of rooms that is separate from the main area of the map. They are used to place content across multiple rooms for a wide variety of purposes: faction bases, lock and key puzzles, a series of obstacles, quests, etc. 

A cavern and the associated graph. A bandit hideout occupies the western half of the map, and is represented by the large center node group on the map graph.  

Time

In 2023, I spent 487 hours (9.4 hours per week) on Legend, a 9.5% decrease from 2022. Two major health issues in my family, and work taking a larger slice of my time, accounted for the drop.

Time spent by activity type

The activity breakdown is nearly identical to 2022. Refactoring dropped 3%, which is a good thing. Otherwise, the percentages are all within 1-2% of the 2022 values. 

Community

My community activity was identical to the previous year. This remains a tiny fraction of my overall time on this project.

Reddit:

I post my weekly dev log update on Sharing Saturday in r/roguelikedev. I consider this mandatory and try to never miss a week. Rarely, I’ll reply to a post on r/roguelikes or r/roguelikedev.

Twitter / X:

I also post my weekly dev log update to Twitter. I changed the link URL from the Sharing Saturday post to the Legend website post to drive more traffic to the latter. In addition to #roguelike, I started adding #gamedev and #madewithunity to my posts. I think this accounted for some new followers. Followers increased 37% from 70 to 96.

Youtube:

I posted far fewer videos in 2023 vs 2022. Subscribers rose 29% from 21 to 27.

2024 Outlook

The milestones between now and launch are:

  1. Private demo + incorporate feedback
  2. Public demo + incorporate feedback
  3. Finish content for the rest of the game
  4. Replace stock art
  5. Steam page
  6. Steam early access + incorporate feedback
  7. Steam launch

I’m honestly not sure how far along this path I’ll get this year. I believe 1 & 2 are doable. 3 and 4 are stretch goals. 5, 6, 7 are unlikely, but not impossible.

I’m excited for 2024. I’m excited for more people to play Legend after surviving the two-person play test I held at the end of 2023. I’m excited to spend less time coding and more time designing. It’s time to put the content creation tools I’ve built over the past few years to the test. I’m excited to see new, original art go into the game. And, I’m excited to start building a real community around the game.

Thanks for reading everyone. I hope you have a happy and productive 2024!


Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *