Berlin Interpretation 1992 – Day 26, version 0.5

A new version of Berlin Interpretation 1992 is available, play online or download from itch.io! here’s the abridged changelog:

Changelog v0.5 (from v0.4)

New Features

  • Inventory & Equipment System: Complete implementation of inventory and equipment mechanics.
  • Added weapon and armor slots with stat integration.
  • Added support for picking up, dropping, and throwing items.
  • Added starting equipment (weapon and armor).
  • Implemented 37 new items with level-based spawn weights.

Combat & Status Effects

  • Implemented Poison and Cure poison effects for both player and enemies.
  • Added item throwing mechanics, including potions and animations.
  • Added dodge mechanics for both player and enemies.

UI & Visualization

  • New Minimap system for better dungeon navigation.
  • Added a dedicated screen for Tournament games start.
  • Desktop interface updated to full 1-bit (black background).
  • Inventory now supports toggling between ASCII and GFX.
  • Genome code is now shareable/writable and includes a generation salt.
  • Improved dithering for blocking masks in mono mode.

Narrative & Email

  • Refined email system with improved attachment handling and popup logic.

Balance & Mechanics

  • Greatly reduced Strength attack bonus for better balance.
  • Player and enemies can now shrug off attacks based on stats.
  • Auto-recover HP on level completion has been disabled.
  • Items now spiral-drop if the landing spot is occupied.

Bug Fixes

  • Fixed “sticky movement” issues that occurred in certain mode combinations.
  • Resolved issues with inventory reset and overlapping panels.
  • Fixed Death timer always being active regardless of Permadeath settings.
  • Prevented duplicate file downloads in the meta-game interface.
  • Fixed several UI layering issues with modal masks and shortcuts.

Technical Improvements

  • uniGEM: Improved TextField padding and Font filter mode (Point).
  • Simplified enemy lookup functions and item spawning logic.
  • Optimized field of view updates and dungeon map cleanup.

Day 26 of our lord the wizard

Starting the day, I was tempted to use gemini to finish applying the effects of thrown items on enemies but, as I was writing the prompts I thought to myself— I can do this quicker. So I did– gotta keep coding something! However, I did use gemini to implement cascade dropping items on a spiral path if the landing location was busy. It’s like you start learning what things are gonna save you time and what other things will make you sad and frustrated trying to get the AI to do what you want.

Here’s an example of what I prompted it to do

  • In DungeonMap.DropItemAt, line 206 (there’s an existing item at the spot), instead of showing a message, attempt to drop the item on a nearby place. If that place is busy, look for another nearby place. Follow a spiral path around the original position until a free position is found. Only consider positions that have no other items (GetItemControllerAt() == null) and !IsSolid and !IsStair
    • ✦ I have modified DungeonMap.DropItemAt in Assets/Scripts/DungeonMap.cs to search for a free nearby spot using a spiral path when the original position is occupied by another item. A spot is considered free if it contains no items, is not a wall (!IsSolid), and is not a set of stairs (!IsStair). To support this, I added a FindFreeSpotSpiral private helper method to the DungeonMap class.

I found out AI assistants are very good for this kind of specific tasks- wiring things together OTOH is just quicker to do it by hand.

Next up was showing the item flying to the location – Also attempted gemini

  • When a item is thrown, display its sprite flying from the original world position to the landing world position. Since a single item is thrown at a time, we can reuse a single image object just setting its sprite to the item’s sprite. this image object would only be used for the throwing effect, then hidden and recycled on the next throw
    • ✦ I have implemented the throw animation by adding a reusable visual effect system to DungeonMap.cs and integrating it into the throwing logic in PlayerController.cs. Changes Summary:
      • DungeonMap.cs:
        • Added a private SpriteRenderer throwSpriteRenderer that is created on the first throw and reused thereafter.
        • Implemented ShowThrowAnimation(DungeonItem item, Vector3 start, Vector3 end, System.Action onComplete), which sets the sprite, positions it at the source, and starts a lerp animation.
        • Added an AnimateThrow coroutine that handles the 0.2s flight time and invokes a callback upon completion.
      • PlayerController.cs:
        • Refactored ConfirmThrowInDirection to first calculate the full trajectory and target position.
        • The input mode is now set to GameManager.InputMode.Disabled during the flight to prevent player movement or multiple throw triggers.
        • The actual item drop/hit logic and turn progression are now deferred to the animation's completion callback.
        • The input mode is reset to GameManager.InputMode.Map only after the item has "landed."

This one didn’t work out of the box; had to manually debug what was going on (the newly created object was not being placed in the correct layer).

I noticed we were missing a drop command; since I had already added a lot of infrastructure while making the throw command (they are similar after all), I went into it. Another was that was quicker to implement by myself than explaining and hoping for the best.

And yet, there’s stuff I’m just too lazy to do by myself, let’s go gemini

  • In the inventory, the sprites we use for the items should reflect whether ASCII is active or not.

It almost worked, but of course I was punished for my laziness… and had to manually tweak the sizing and positioning.

Finally, I Improved the screen you get before any tournament round game, I think the original one works well for the pseudo-academic nature of the TRAINER.EXE program, but it’s just not very readable. So I created one you will see before every round with a summary of what roguelike features are available or not.

So, the new version is finally out! as I plan the game I just keep discovering more and more things that needs to be improved and completed… honestly I think I would need 7 weeks to create what I originally envisioned…

But I don’t have seven weeks- In fact I think I’ve spent more time on this so far that I can afford. Whenever I come back to it the areas to improve are:

  • Finish implementing all potions effects
  • Implement unique monster attacks
  • Balancing
  • Making non grid-based movement feel better (both real time and turn based)

Leave a comment