#4: Domains, asset editor, and UI

TL;DR -- Restructured the codebase into gameplay domains, built an asset editor for layered sprites, added chat and chat bubbles, and continued building out the HUD.

What I did

Asset editor and the layering problem

Characters in a game wear equipment. That equipment has to animate along with the body, which means drawing each item on top of every frame of every animation. If you have 4 directions (2 are mirrored to get 4), 6 animations (idle, run, attack, throw, etc.), and 50 equipment pieces, that's a lot of sprites to manage and draw.

The editor helps in two ways. First, it keeps track of what is drawn and what is still missing for each item. Second, it renders items on top of the character sprite at each animation frame so you can see exactly how the item will look as the character animates, without having to load the game.

All frames still need to be drawn by hand but it's easier with the editor.

Asset Editor

Chat and chat bubbles

Players can talk to each other through a chat window opened with Enter. I also added chat bubbles floating above characters so you can see what people say without opening the chat.

Chat

UI

The UI is taking shape. Here are a few screenshots of the current state.

Keybindings settings:

Keybindings

Character stats with point allocation:

Stats

Quest log:

Quest Log

Inventory with equipment slots and backpack:

Inventory

Ability bar:

Ability Bar

Domain reorganization

The codebase was still split by technical layer. I reorganized it around gameplay domains: combat, inventory, quests, loot, movement, chat. Each domain owns its logic and its state. This makes it easier to add features without the code getting tangled.

What's next

I'm spending time playing with the engine to figure out what I actually enjoy. Movement, combat pacing, ability cooldowns, how the tick rate affects responsiveness.