091 - Prototyping Butcher

November 1, 2020

This past week was my second week of trying to prototype as much as I can of a new gameplay feature every week.

This time I worked on prototyping the Butcher skill.

I managed to implement the basics of the Butcher skill. I have started planning out a process to automatically generate icons for items, so I did not bother making any icons for these inventory items. This video reminds me that the skeletal animation logic needs work.

A good bit of the logic for the skill as it stands now already existed.

The main thing that I needed to add was support for potentially not getting back one of the receivables from a formula, since its possible for a Butchers to make a mistake.

For this I re-used the existing RollFormula enum.

/// Used for the rate at which something can happen
#[derive(Debug, Serialize, Deserialize, Copy, Clone)]
pub enum RollFormula {
    /// There is a constant rate of success, regardless of the situation.
    // TODO: More formula inputs that allow for situational rates such as a linear interpolation
    //  between some min and max percentage based on skill level
# A YAML file containing all of Akigi's crafting formulas

  # ... snippet ...
  - received:
    - item: {id: RabbitEars, quantity: 1}
      roll: {roll: {formula: {Constant: 0.4}}, missed: ButcherRabbitEars}
    - item: {id: RabbitTail, quantity: 1}
      roll: {roll: {formula: {Constant: 0.85}}, missed: ButcherRabbitTail}
    - { id: CagedRabbit, quantity: 1 }
    - OnlyOne: [ { Has: { id: ButchersKnife } } ]
    - OnlyOne: [ { Has: { id: CagedRabbit } } ]
    xp_gains: {Butcher: 1}

I also added a way to give the player a message when they fail to receive a receivable item from a formula.

I expect the formula data structures to continue to evolve as I add more skills and have more ideas.

Butcher Skill Vision

The Butcher skill is meant to be fairly simple conceptually. Put nicely, you convert animals into raw materials.

These raw materials can then be used for other skills such as Worship or Juju.

For example, you might use a Rabbit's tail as part of a ritual, gaining some experience in Worship along the way.

As your Butcher level increases you become less likely to make a mistake while getting parts from a creature.

You can gain additional XP when you successfully extract the more difficult parts of a creature.

Placing a Butcher's Knife respawn point in the game editor. During this prototyping phase I will be throwing things into the world at arbitrary locations as I feel out different gameplay mechanics. The editor does not yet make it clear what editing mode you are in, but that will improve over time. Polishing the editor interface is not my current priority, as fun as it would be.


A friend asked me if there was a portion of the game work that I could find someone to do in order to make progress more quickly.

My answer to this has been fairly consistent over the years. If I was to ever look for help, the first place that I would start with would be the game's art.

This was on my mind throughout the week, especially after I spent a couple of hours working on a fairly simple knife model.

My current stance is that as modern tools continue to make it easier to create software and art assets, being skilled at both writing code and creating visuals positions one person to be able to accomplish what might have taken five or ten a decade prior.

This matters to me because one of my personal goals is to build a profitable, complex project alone.

I believe that over time it will continue to get easier for an individual to write robust software and to produce compelling art.

For example, a few years ago one might have reached for Photoshop when texturing a mesh. Today you would reach for a tool along the likes of Substance Painter. This is a massive productivity boost in only a few years.

I don't expect to ever be in the top twenty percent of artists in the world, or to produce triple A graphics, but I do think that over time I will get good at a style and flavor that is unique to me.

This will just take more practice and more inspiration.

Over the last year or so I have become increasingly interested in African history and mythology, so we'll see if that helps to inspire my art style as I continue to read and learn.

Other Notes / Progress

  • Added support for rendering shadows in the MetalRenderer, bringing it one step closer to the WebGlRenderer.

  • Started going through the learn-wgpu tutorial. Now that I'm somewhat familiar with Metal I expect to be able to pick up WebGPU fairly quickly, since the modern graphics APIs all rely on similar concepts and abstractions. I'll eventually implement a WebGpuRenderer that passes the engine's renderer-test suite so that can be used so that upcoming tools can be run in Linux CI.

  • Added the hotkey Ctrl + S to save a project from within the editor. Before this, even though I've had the logic for saving implemented for a month or two, I could not save my edits in the editor since it does not have a save button right now. I was just editing the data files by hand.

October's Finances

The finances for October 2020 were:

itemcost / earning
revenue+ $4.99
Stripe fees- $0.44
aws- $263.65
adobe substance- $19.90
GitHub- $9.00
adobe photoshop- $10.65
adobe illustrator- $22.38
Datadog- $8.12
Planning Retreat Lodging- $326.26
Planning Retreat Food- $106.51
total- $761.92

Spent a few hundred extra dollars this month on the planning retreat, but otherwise the costs are similar to the last few months.

Next Journal Entry

During this coming week I plan to work on bow and arrow combat.

This will rely on a number of pieces of functionality that I don't currently have in place, such as wielding items, firing projectiles and applying damage on a different tick than it was received, to name a few.

I'm expecting there to be more that I want to do here than can fit into a week at my current pace, so I will try to prioritize the development accordingly.

I will be also continue the recent trend of using the first two days of the week to work on the engine's tooling and rendering tech. This time I plan to start making progress on some of the ground work needed for an asset compilation plugin that automatically generating icons for items.

Grab butcher's knife See you next week.

Cya next time!