The Honor Sagas Devtober Postmortem


Hi everyone, thank you to everyone who has interacted in any way (even simple Likes) with me on this project through Devtober. I want to reflect on Devtober, list out the wins, and talk about what comes next.

What is The Honor Sagas?

Since I’m submitting this as the postmortem into the Devtober Game Jam, many of you may not have ever seen this project before. In 2009, I started a company, and in 2019 I sold it. It’s not enough to retire, but it is enough to allow me to work on a dream of mine: building a story-rich, community-rich MMORPG.

The Honor Sagas is a fantasy RPG set in a world where your family is attempting to fight off the otherworldly creatures that have begun ravaging the countryside. Your choices in what quests to embark on, where to deliver the relic you discovered, or where to prioritize attacking the enemy will alter the story. Will you save the world? Or will it fall in an epic massive battle? Or will the world’s forces prevail in the final battle?

Taking inspiration from the rogue-lite genre and stories such as The Wheel of Time, your family will find itself called to help another world regardless of success or failure. Only this time, you’ve learned from your previous encounters. Your mastery of the Ways of Honor has vastly improved. This time, things will be different.

Great, when can I play it?

Sure, hold on a sec, let me show you the current gameplay trailer:

Unfortunately, Devtober was simply me kicking the project off, which means that everything you’ve read so far is just my vision of where this game will go. I’m approaching the design of this game a bit differently than I think many game developers would. I have a diverse background ranging from working on compilers to scaling ad networks to millions of hits per minute on a handful of webservers to designing my last startup’s infrastructure to operate on a relatively shoestring hosting budget for the early years while supporting over half of the worlds largest tradeshows as customers.

I’m trying to take that knowledge and apply it to designing a game from the ground up, thinking about designing game mechanics to create a single-sharded MMO that is fun to play no matter where you’re at in the world.

That being said, I am a solo developer. While I believe I can pull a vision of this off, it will not be a AAA MMO. I am making specific decisions to keep the scale manageable: It is 2d, there will be no direct PVP combat, and it will be a systematic game. I would expand further, but I’ve already spent way more time talking about the background than I intended to! If this is piquing your interest, I’d love to hear from you.

Looking back at Devtober

I’m going to start with my main challenge of the month: my 15-year-old black lab, Cocoa. As most dog people will know, the average lifespan of a large dog usually isn’t that long, so he’s had a great life, but he’s starting to struggle more, and that really impacted my ability to focus several times this month. That being said, I still worked on the project daily, but there were a couple of days where I just totally forgot to post on my Twitter.

Originally my goal for Devtober was to get a game client into people’s hands as quickly as possible. That’s why the video above has my Twitch username instead of a real character name. Midway through the month, as I was nearing a final push to reach that goal, I realized as I was designing a table schema that I was building technical debt. I hate technical debt. Once I made that realization, I took a step back and re-evaluated my goal.

Devtober really isn’t anything different than what I’ve been doing since I quit my job a year ago (to this day). Each day I focused on the next thing that seemed to block my ability to move forward with my vision at that moment in time. Today is just Devember for me now. Then Devcember? You get my point. I realized I had already gotten a few eyes on Twitter, and with a game so early in development, what else could I really expect? Would a game client that you couldn’t do anything in really get anyone excited? Nah.

So, my goal for Devtober was to be proud of what I accomplished. And I am thrilled with this list of accomplishments.

What I accomplished

If you want to know where I started, my kickoff devlog will give you a glimpse into it.

This project is pretty complicated and has many moving parts. As such, it’s best to break down the accomplishments by project:

Kludgine

Kludgine is my MIT-licensed Rust 2d game engine.

  • Added support for SpriteSheets, SpriteMaps, and SpriteCollections, a strongly-typed set of collection types that help manage loading sprites from assets and allowing the Rust compiler to ensure you can’t remove a sprite without breaking the build (for example)
  • Added a strange feature allowing you to stitch a group of sprites into a single sprite. The idea behind this feature is that the art set that I picked to start working with, TimeFantasy, uses 8x8 tiles for the borders and 16x16 tiles for the rest. Instead of manually creating the 16x16 sprites in a sprite editor, I decided to add this stitching feature to the engine. If you can’t tell from my explanation of this feature, I’m not sure if I want to keep it.
  • Updated/semi-rewrote the backend of Kludgine. I explain more about it in this devlog.
  • Implemented a Legion-driven 2d Canvas. There isn’t a current example in the Kludgine repository, and I haven’t open-sourced The Honor Sagas yet. Still, this component simplifies getting a Legion-system driven game loop running and enables rendering by simply adding components to your entities. This bullet is short, but it was a significant undertaking, and I’m still adding features to it to this day.
  • Converted the UI components into using a ECS-style storage layer and API. I am so happy with these changes, and I haven’t even fully implemented my vision for them yet. This also was a several-day undertaking.
  • Implemented a text field control, which included adding support for Focus tracking, border drawing, basic clipping support, and more.
  • Implemented a grid-based layout mechanism, and wrote a Tic-Tac-Toe example that only uses Labels, message passing, and the grid layout tweet with demo gif

ncog.id

ncog.id is my centralized account management system. I plan on needing to distract myself with a few small multiplayer games along this MMO journey, and I wanted to have a solid, GDPR-compliant account management system that I could use in all of my creations. It’s open-source as well.

  • Implemented JWT validation for Twitch OAuth
  • Added an identity verification flow, allowing a ncog client to request a token that can be exchanged to another service to prove that you are the user on Ncog that you claim to be. This process uses JWTs, as well.

The Honor Sagas

  • Implemented procedural automatic tilemap layouts. This allows me to define a terrain type, such as “Aztec Ruins Ground” or “Overworld Grass,” and the tilemap generator will automatically stitch transitions between the various terrain types together. This requires setting up mappings of what types of terrain each sprite in each sprite sheet contains, which is tedious work, but I think importing sprite sheets is always tedious work, regardless of the game engine.
  • Setup a database migrations project and initial schema for Maps, MapTiles, Families, Heroes, Accounts, and a few other internal details. The server is using PostgreSQL.
  • Setup client-side database storage using sled. I may switch to SQLite, but a lightweight key-value storage fits my current model quite well.
  • Implemented Map tile syncing and editing APIs (relevant devlog).
  • Added a main menu with a Login button and shows the connection status to both The Honor Sagas server and Ncog.
  • Determined that I’m going to use Clubhouse to manage my projects. Github Issues is just a little too lightweight for my purposes. There are APIs that I can use to create a public view of my roadmap, but for now, my planning is done behind closed doors.

Overall feelings on what I accomplished

Honestly, I’m a bit shocked at how much I got done. Seeing the list makes me proud of what I finished. I started with a project with no name or firm concept – just a vague set of goals. And at the end of the month, not only did I accomplish everything listed above, but I also have a pretty solid foundation to my game design document/wiki, and I’m really excited to develop the concept I came up with.

While the stresses of nursing an elderly dog and facing the reality that his months are getting fewer and fewer, it’s really easy to get caught up in the self-doubt that so often plagues solo development. My biggest takeaway from Devtober is that I need to continue doing monthly retrospectives because this exercise really helped lift my spirits this morning.

What’s Next?

Well, I started off October saying that I wanted to get a game client into people’s hands. That’s still my goal. I enjoy developing while streaming on Twitch, and to me, the sooner I can have chat members mess around with me inside of my creation, the better. The difference is that I think I can accomplish it this month without a lot of technical debt buildup. After all, I can type text into my engine now, so I can now implement a proper character creation flow now.

I’d love to hear from you if you’ve enjoyed reading about my journey so far. If chat is your style, I have a Discord server. Or, if you’d prefer forums (with good digest emails to follow along easily), sign up on my Discourse-powered forums.

Thank you again to everyone who has shown their support so far. I really appreciate every bit of it.

Leave a comment

Log in with itch.io to leave a comment.