101 - Deliberate

January 10, 2021

Every now and again I read a book that has an unworldly impact on how I think about my experiences in this life.

The latest to join this short list is Walden, by Thoreau. I am about half way through his book.

My mind has not stopped churning since the first page.

I am sure that the book has drawn a fair share of criticism. As most extreme choices and actions do. I can only imagine what would turn up if I entered "Walden critique" into the searching device.

For me though, the idea of living deliberately, as Henry did in the woods for a two year stretch, is inspiring.

Does having a drawer full of clothes add to, or take away from my life? Are my thoughts and writing wholly owned by me, or are the social norms of this era living rent free in my mind?

These are not rhetorical questions. I have a lot of thinking to do this year. What is my version of a deliberate life?

Making Akigi Slow

Earlier in the week I was struggling to focus. So I took a break from working on gameplay to work on a performance optimization.

I profiled. I benchmarked. I thought that I approached things well.

Oh no. That so called optimization that looked like a 20x speedup in my benchmark made the game server's roughly ten times slower in production.

Made the game server 10x slower. Oh my.

This is the danger of micro-benchmarking. Next time around I will add a macro-benchmark or two, and see if I can diagnose what happened.

Crafting System

I spent quite a bit of time planning Akigi's crafting system and eventually landed on something that I liked.

Implementing it on the backend turned out to be easier than anticipated. I have not thought through the user interface for it yet.

Right now I am working on the ability to craft a bow. This is serving as a good test bed for implementing the underlying functionality that is needed for Akigi's crafting system.

Once this all works adding new things to craft will be as simple as adding new data to a YAML file.

Here's an example entry in that YAML file. My engine's crafting and criteria systems are generic across a few different aspects, making it easy to come up with and evolve a data format to power crafting.

- requirements:
    action: Twist
          - Passes:
                GteqQuantity: [StagSinew, 1]
          - Passes:
              IngredientCountExactly: 1
        pass_requirement: All
    - item_id: StagSinew
      quantity: 1
    - item_id: TwistedSinew
      quantity: 1

As most Rust developers would expect, serde powers the de-serialization.

Other Notes / Progress

The crafting system is coming together really nicely. At least implementation wise.

When I finish implementing what I need and adding in more crafting recipe definitions I will need to create the user interface for crafting.

Then I can play with it to see how fun it feels.

I'm feeling very excited because when the crafting system is in place players can make things to their hearts content.

I feel so close to the inflection point where I have a real, playable game and can start to iterate on taking it from from okay to good to great to amazing.

Feelings can be wrong. That I know. But the feeling is there. And it makes me feel good.

Next Journal Entry

I'm going to keep pushing forwards on the crafting system. At some point this month I should be able to show you some visual progress. For now I'm deep in the land of data structures and writing test cases.

I will be back next week. Goodbye for now.