itch.io is community of indie game creators and players

Devlogs

Devlog #4: Version 0.5.0

Foolproof Heist
A downloadable game

Version 0.5.0 is complete – since the previous bigger update, I've added a new, less rudimentary prototype level with some basic environment props, added a second enemy unit to verify individual enemy object logic working correctly, implemented Exit Zone logic to check if the objective item is in the player's inventory, smoothed out and refined camera controls, player pawn animation, lighting systems and performance, implemented togglable debug colors and interactable object highlighting, and most recently a SceneInitializer system to handle setting up the scene during runtime. After that I was all set up to add a second player pawn into the scene. It took some work to get the game to recognize the active spawn and differentiate that from just any pawn at all, and also to get move orders to register correctly with the active pawn.

The big troubleshooting project, however, was the inventory system – the way I had set up picking up and storing items confused the scripting, and I had problems both with updating the inventory display in real time and displaying it correctly, and also the objective check in the Exit Zone determining whether or not the objective had in fact been completed. While that logic seemed to work as intended before, this change in scene wiring exposed a bug that was undetectable before due to a false positive: the Exit Zone defaults to "just reach the exit" if no objective item has been defined, but when picking up the objective item, it gets destroyed and the Exit Zone logic no longer finds an objective item, so it falls back on the default condition, meaning that it was never actually checking for the item correctly. Now, with a second pawn that has its own inventory, that issue came to light, and I was able to track down the cause and fix it by storing the reference to the correct item at scene start, so it's no longer dependent on persistently finding that item in the scene.

The game is starting to feel a lot more dynamic now, and with the condition check in place and working as intended, it's already possible to develop some basic non-linear levels.

Next steps in my roadmap:

  • State manager to track starting and current states of objects
    • this will later support save states
    • it will also enable writing logic for enemies to notice if something in the environment has changed
  • Customizable controls
    • all input in the game will be customizable, so before the systems get any more complex, I'll add a default control scheme reference resource that all input logic will look to, rather than hard-coding any of the controls
  • Obstruction fade-out
    • to allow better visibility in the level, I'll program all environment props and structures to fade out when located between the game camera and the mouse cursor or a player pawn
  • LOD swapping
    • I've already drafted simple lower-poly versions of environment props, which I will import to allow for LOD swapping to optimize performance when zoomed out
  • [Version 0.6.0] Enemy line-of-sight logic
    • this is the next big one – the actual stealth mechanics to replace collision-based fail states
    • enemies will have a real-time line-of-sight check to detect when player pawns are seen
    • environment objects will block line of sight
    • upon detection, enemies will play a brief animation, before fail state is triggered
Leave a comment