Offsets, Menus, Accessibility, and 0.16

Overview

Last week I had big plans to do a hard micro-crunch, and to put out a technical preview. Sadly due to personal issues, I couldn't put in the needed time this week. Resultingly I was not able to get the game to where I wanted it to be. I will probably submit the game for future consideration, but for the sake of sustainability I had to drop it for this week.i

This being said, major work was done this week, both behind the scenes, and user facing stuff. All of which is exciting.

Bevy 0.16

The first big task was porting the game from Bevy 0.15 to 0.16. I had 3 reasons for this.

  1. I plan on starting work on belts soon. I plan on heavily using the new ECS Relationships feature to manage belt sources and sinks. Without this I would just have ended up writing "ECS Relationships at home".
  2. I wanted to use the stabilized Input Focus feature. This is important for accessibility and gamepad support. (More details below.)
  3. Bevy is a rapidly evolving game engine. To fall behind is death for Exofactory's future at this point. Once bevy becomes stable that may change, but for now upgrades are mandatory.

This wasn't too big of a struggle, mostly moving away from newly depreciated functions, and an small amount of refactoring. I took this as an opportunity to clean up some earlier code I wrote while I was newly learning Bevy, namely swapping out Queries for Single where I could. This let me delete a lot of if let Some(x) = style code removing a lot of nesting which is nice.

I had a few dependencies that hadn't updated yet, so I used either their 0.16 PR branches directly or release candidates where available.

Animated Image Showing the build menu

The other big project this week was the new complete-ish build menu.

I waited till after 0.16 because I wanted to use the accessibility/focus feature. This menu is the first in the game to use it. I strongly believe that accessibility is best practice. Building in accessibility helps everyone no matter what. This includes developers. By doing this I make it trivial to add gamepad support. After all from the perspective of code, a gamepad, and specialized accessibility hardware/software are basically the same thing.

Conclusion

This week, I didn't do as much as I wanted to in terms of quality, but I am happy with what I did do. That and sustainability is important to me. Burnout is something to be avoided.