The todo list has been a stack rather than a queue for months. The number of open items has steadily grown as more items are added than removed each week. The list also had many items left over from history generation. I moved the history generation items and lower priority items to the long-term todo list this week. The total amount of work to do didn’t change, but dealing with a smaller list has psychology and efficiency benefits.
- Full support for displaying multiple inventories. If an object can possess items (e.g. corpse, chest), when inspecting the object, inventory slots will be shown. Drag/drop from the object inventory to the player, and vice versa, worked. Pressing the “Take All” button also worked until I made taking items consume a game turn (this made pressing the button schedule an action for the player). The action would be performed, but neither the player’s nor the object’s inventory were updated to reflect that all of the object’s items had moved to the player’s inventory. The solution was to respond to events fired when items were added or removed from an inventory. The implementation wasn’t as straightforward as it sounds because the inventory UI was designed for dragging and dropping, not inventory items changing in the background.
- Actor Movement Type. Actors have a new attribute indicating how they move. There are currently two values: Walk and Fly. These are, so far, only used to determine the movement sound effect. A separate attribute, Pathfinding Map, is used to determine where an actor can move based on how it moves. The Pathfinding Map attribute can be replaced by a combination of the Movement Type and Physical Material (Ghosts, for instance, have a Walk Movement Type but can pass through objects).
- New dev console command: Entities. This command dumps the entities in each cell, as well as the items each entity has, to the debug log. I added this while troubleshooting an issue with displaying multiple inventories in which an item appeared to get assigned a new id (this turned out to be a red herring).
- New Unity Asset: Maintainer. I installed Maintainer, a Unity asset to help maintain project assets. I got it so that I can search for asset references across my project. I’ll explore some of its other features, such as finding and removing unused assets, in the coming weeks.
- Minor improvements and bug fixes
- Error when inspecting multiple entities with items. The cause of this issue was difficult to track down. The error was trying to destroy a GameObject that had already been destroyed. The root cause was registering the same message listener multiple times. I typically register and unregister in Start and OnDestroy methods respectively. Switching entities in the Inspect Panel doesn’t trigger a destroy, so unregistering the listener didn’t occur. I have an existing todo item to add duplicate listener registration to my messaging code because this issue has occurred before. I should prioritize that…
- MissingReferenceException after throwing an axe into a debris pile. This was an interesting one.
- The player can’t close the Inventory and Inspect Panels after taking all items from an inspected entity.
- A new Inventory Panel instance is created each time the player selects a different entity to inspect in a cell.
- Bat makes a walking noise when it moves.
- Ranger walking animation incorrect.
- Default action for a closed chest is Melee Attack instead of Open.
- When inspecting a Debris Pile, the items in the pile are shown.
- Animated Bones now change to Skeletons as soon as they see the player. The desired, and previous behavior, was for the bones to only animate when the player was next to them.
- The specific entity being inspected in a cell is now highlighted.
Next week is the last week that I’m allowing for play test preparation, unless work limits my free time too much.