Devtober Day 18: Almost to deployment


I’ve made a lot of progress since the last check-in, but in the spirit of Devtober I gotta get caught up because I didn’t post an update in the last two days. I have worked on this project, but I’ve been dealing with my dog getting older. We celebrated his 15th birthday last month, and for a large dog that’s a great age. He’s slowed down a lot in the past two years, and after hurting one of his back paws a few months ago, recovery has been slow. He had a particularly rough couple days which really weighed on me. Sadly, I’m sure there’s more of that to come. With that said, let’s try to focus on the positive things since the last update.

Connecting ncog.id and The Honor Sagas

The first challenge from my last update was to hook up my account management system, ncog with the game. This may not sound like much, but to better explain the process I wrote a small overview of the authentication process. Additionally, as part of learning the jsonwebtoken crate, I added proper JWT validation to the Twitch authentication flow.

I was also able to begin utilizing the role-based permissions system I wrote in ncog. There are revisions I want to do to this process, but all of them require promoting the ncog client access on the game server to having actual API keys. Currently all the validation processes can be done with public keys and public processes, so there are no private APIs between the game server and ncog. I like that design, but I also think that realistically I’m going to want to be able to make authenticated calls from the game server to ncog.

This is primarily what day 13 and 14 were comprised of.

Updated Muse

My audio synthesizer crate hadn’t been touched in a while, and after getting part of the work done on day 13, I had a desire to dust it off and explore the idea of composing music in code. I don’t mean procedural music generation, I mean being able to write music notation as expressions of types in Rust.

I didn’t get very far, although I was able to update it to the latest version of CPAL, and thought a bit more about how I might eventually design that system. In the end, I decided I wasn’t quite ready to work on that project yet – I like letting complex ideas ruminate if I can.

Add “composite” drawing support to the legion canvas

Upon having login hooked up, I really wanted to be able to display the character’s username. Unfortunately, the design I was so proud of quickly showed organizational issues. I really just wanted to have a method get called when the character was ready to be drawn, which would allow me to draw the sprite and any other decorations like a name tag within that method.

I decided the idea of “custom drawables” made a lot of sense, so that was my project for Day 15.

Adding new features to Kludgine

While my brain was trying to figure out what server architecture to design for working towards getting the game deployed, I had an idea while working on the Legion Canvas that would yield a much cleaner and more flexible API than what I currently had in my UI layer. Beacuse it’s so focused on my engine, I wrote about these changes on the forums. TL;DR: I solved some problems I was pondering with my UI frameworks’ design.

What’s next?

As the title implied, I’m almost to the point where I can deploy. The question is, what does deploy mean? Ultimately the initial “deployment” goal is giving people an opportunity to download something and be able to interact with others (if they’re online). Right now, I don’t have any interactions designed yet.

I’m thinking this coming week’s timeline is going to look something like this:

  • Keep trying to figure out how I want to split game world workloads in a horizontal-scaling design. I have one preferred approach but I’m still not loving the idea enough to start coding it yet.
  • Add the ability to emote a few different emotions.
  • Add a NPC that will emote back at you (this will help me create screenshots moving forward without needing to launch multiple clients too).
    • Perhaps of interest, I am planning on these NPCs operating over the same websocket API that the game client normally will, just in a completely headless fashion. This means that anything a bot could do would be doable by a player.

I hope everyone has an awesome week. As always, I’ll be trying to update on Twitter when I don’t have too much to report. Because of my sleep/stress issues I may not be streaming much this week, but if you’re curious to watch me work on the game and related projects, I’d love to have you join me on my stream.

See you all in a few days!

Leave a comment

Log in with itch.io to leave a comment.