Building Menus, Gamepads, and Change

Overview

This week started with a nearly completely different set of goals than the week ended with. Things changed when Pokinsson made a call for indie game submissions, in any state, finished or not. After thinking about it, I thought I would give it a shot. In essence, that basically means that I have until April 7th to polish what I have and produce a playable technical preview.

As a result, I paused work on the half-baked gamepad support and started working toward that goal. This leaves a bunch of half-functioning gamepad code, but that's a problem for future me.

That being said, progress was made.

Half-Baked Gamepad Support

During the first half of the week, before I knew about the call for games, this was the primary area of focus. I am using Xelu's excellent button-prompt images; I strongly recommend them.

I added a lot of mappings and controller-management code, so now, going forward, I can do something like:

let focus_on_exoframe: Handle<Image> = smart_prompt_collection.focus_on_exoframe.clone();

The result will always be the correct prompt image regardless of whether you are using the Steam Deck, an Xbox One controller, or a keyboard and mouse.

I didn't get any further than this, but I do have a list of supported devices/control schemes. I plan on supporting:

The Steam Deck with built-in controllers, a keyboard and mouse, or an Xbox One controller.

Modern (Debian 11 or newer) Linux with a keyboard and mouse or an Xbox One controller.

Windows 10/11 with a keyboard and mouse or an Xbox One controller.

Other systems or controllers should work but won't be tested. For more information on what may or may not work, see gilrs, the underlying library I am using via Bevy.

Control Guide

animation showing the control guide

I also added a "control guide" panel. This panel shows you exactly what you can do at any given moment and self-updates as you play the game. Of course, you can always hide it if it gets in your way.

This is great for the technical preview and for the game in general.

Building Interface

animation showing the building interface

Last but not least, I added a core new feature to the game: an in-game building can now produce a thing!

Conclusion

Overall, it was a stressful week, and I don't want to normalize this work pace (especially with my other obligations), but a lot got done, and the preview build should come together.