Procyon Changelog


  • [X] Improvements to save system. NPC and Item positions are now tracked in saved games in the db.


  • [X] Implemented basic game save. All player / npc / item data can now be saved on demand.
    • Continuing to work on adding inventory and skill data
    • Ongoing work to resolve an issue where save game data is improperly overwritten instead of updated


  • [X] Began work on in-game menu to handle loading, saving etc. commands from player.


  • [X] Player inventory can now be saved in DB
  • [X] Added SaveAndLoad system to centralize that code, expanded Actors and Location load functions
  • [X] Began work to process inventory load from saved game. While the load appears to be successful, the inventory UI is not actually populated for some reason.
    • Managed to resolve this by moving slot definition in Inventory out of the _ready function
    • May need to return to this issue at some point if I find side effects. So far so good!
  • [X] Cleaning up all persistent errors / warnings – down to just 2 warnings!


  • [X] Refactored Gaze and AimWeapon functions in NPC to resolve memory leak
  • [X] Additional work here and there for minor performance optimizations
  • [X] NPC positions saved in a SaveObject are now used to reposition NPCs on game load
  • [X] Item positions may now also be loaded from the DB


  • [X] Items grabbed in a stage are now tracked in save games. Items removed from the game world (i.e. into the player inventory) are removed on stage load.
  • [X] Updates to NPC how tracking is handled in save games


  • [X] Dead NPC in a stage are now tracked, and the appropriate NPC count may be loaded from a save game.
  • [ ] Began implementing save game data to track items
  • Noticed a new bug. Seems NPCs are able to walk through locked doors.


  • [X] Added SettingsObject to Core. DB will track all in-game settings, including last save game loaded.
  • [x] Initialize node can query the DB for the relevant startup data in that SaveObject, including player position, HP, etc.. Rudimentary load game feature is in place.
  • [X] All player stats are now acquired from a SaveObject entry.


  • Began work of implementing save and load functionality
  • [X] Added functions to handle NPC removal from stage on Location ready
  • [X] Added NPC id attribute and list in CreateStage Database function
  • [X] Added SaveObject to Core and CreateSaves function for Database.


  • Refactoring database system code & tackling TODOs
  • [X] Implemented Skills as an object in the database
  • [X] Moved mini map out of Location and into CanvasLayer UI node


  • Bugfixing efforts today
  • [X] Resolved a crash bug on player death. Instead of QueueFreeing the player, now I hide the player and make sure it can’t move.
  • [x] Resolved a quite bad bug that would allow the player to walk inside a tile occupied by an NPC. The resolution however means the NPC is forced to not move into the target tile the player has chosen, and instead is forced to do something else. That said, the AI is still quite competitive.
  • [X] Other minor fixes


  • [X] Implemented Inventory Get button
  • One of the next things I want to do is implement a mouse-driven movement system for the player. I’m thinking of a few options:
    1. When the mouse hovers near the player, the 9 possible directions hover as arrows in the tiles surrounding the player. Left click on one moves in that direction. I think this option would be best for players using a mouse.
    2. A panel under the inventory screen with the 9 arrows pointing to directions. Left click moves in that direction. This would be hard with a mouse, but good for tablet players.
    3. Another option would be to click once on the player and then click a second time on the path that you want the player to take. I think this option may be most cumbersome for me to implement, but could also have negative gameplay implications — queue up too many automated moves and you could accidentally die.
  • Tracking a bug that allows the player and NPC tiles to fall on top of one another. This results in the player being stuck in place until the NPC dies.


  • Regression. Introduced some new bug which has rendered the Drop / Use / etc. actions totally inoperable. Does not appear to be a scaling issue.
  • [X] The inventory regression was resolved. Unclear exactly what caused it — I was unable to find why the slots didn’t work. Merged newer code for skills panels back down to a previous functional version.
  • [ ] Began implementation of Inventory Equip button


  • Tracking a new inventory bug where an item that gets used no longer seems to correctly queue free. The static tile is just visible on the playing field.
  • Tracking a bug in Player FOV calculation where Items placed in a Location no longer have visibility toggled off even if outside of FOV. Side effect of Door visibility issue. See note in Location.cs.
  • [X] Continued implementation of Skills panel. Minimum viable functionality in place.


  • [X] Began implementation of Skills gameplay panel
  • [X] Converted the inventory into its own scene (it’s a long story)
  • [X] Added Name, Level, and player stats traits to Character panel


  • [X] Resolved an issue that prevented Skill icon texture from being displayed.
  • Ongoing work to resolve various issues with item and skill icon position when picked & attached to mouse position.


  • [X] ongoing work to improve look of game, synchronize color palette


  • [X] Worked on look and feel of the game. Added borders, changed interface colors to match color scheme.
  • [X] Resolved bug that would cause NPCs to shoot at the player from far off-screen.
  • [X] Resolved panel position error that caused minimap to draw on top of border.


  • [X] Added sensor plates which can trigger scripted actions
  • [ ] Started work on a bug allowing player to move into tile occupied by NPC
  • [X] Resolved bugs allowing NPCs to move into tiles occupied by each other or player
  • [X] Revised color palette to C64 standard. Interesting.


  • [X] Continued work on skill progression UI. Added highlighting and locked and unlocked feature to ensure slots that should not receive a skill cannot.


  • [X] Fleshed out scripts for skill progression UI, basic functionality in place
  • [X] Added rudimentary LevelUp function to calculate new LevelUpXp required and prompt for skill progression.


  • [X] Moved MessageLog to top-level CanvasLayer UI rather than attached to player
  • [X] Moved Character and Inventory panels up to top-level CanvasLayer UI
  • [X] Resolved long-standing bug of a hitbox calling a non-existent signal Hit
  • [X] Resolved bug that might set NPC gaze to look for a dead (null) player, causing crash
  • [X] Resolved long-standing bug where game may crash when player dies. Adds checks for presence of Player in World node in multiple places.


  • [X] Began implementation of player skill system, added XP progress bar to interface


  • [X] Reviewing TODOs, code cleanup
  • [X] Removed obsolete scent tracking feature from player and NPC
  • [X] Removed obsolete StageCommand file
  • [X] Removed obsolete FogOfWar methods from TileMap
  • [X] BUG: NPC may navigate toward a player without being seen due to FOV refresh calls.
    • Bad one. If I don’t move, I can’t see the enemy movements.
    • Attempted resolution by calling RefreshFOV() on every player turn start
    • This introduces another bug though. Now the FOV may refresh twice
      per move. Once on player turn start and again on the move. Yuck.
    • Finally resolved by calling RefreshFOV after every Grab and every Shoot. If the player isn’t moving, but he taking some other action to end the turn, the FOV must refresh. Not perfect, but an improvement.
  • [X] Added signals for EquipmentItemUsed, EquipmentItemEquipped and EquipmentItemWielded. Presently used mostly for signaling RefreshFOV() or ending turns.
  • [X] BUG: Fixed(?) a long-standing crash bug that happens when the player attempts to grab an area that can’t be grabbed. Method now checks the the Location ItemList for matches.

Code guy.

Articles: 8