github carenalgas/popochiu v2.2.0

3 hours ago

Popochiu v2.2.0

Popochiu 2.2.0 is a big one, and it has been brewing for a while. Multi-character adventures can
finally keep their own pockets: every character now has a personal inventory, and inventory items can
carry a quantity instead of piling up as duplicates. On the editor side, the Popochiu Dock has been
rebuilt on Godot's own Tree control and the last pixel-art icons are gone, replaced by a monochrome
SVG set that finally looks at home in a modern editor. The Aseprite importer also learned to pull
multiple animations per prop straight from the source file, so doors and containers stay Aseprite's
single source of truth. And a dozen solid fixes tag along for the ride, among them the silencing of
the "Singleton already registered" spam on Godot 4.7.

Fixes

Improvements

Engine

  • Every character now carries its own inventory: switching C.player switches pockets, the inventory API takes the character into account (defaulting to the player), and each character's items are saved and restored with the game. Multi-character games à la Maniac Mansion are now actually doable with Popochiu. This is a huge step forward, making Popochiu more viable for more commercial-grade projects.
  • Inventory items can now have a quantity instead of being collected as duplicates: add_item() and remove_item() take a quantity, a new get_item_quantity() reads it back, and the GUI updates the counter for you. The inventory limit counts occupied slots, not total owned quantity.
  • Regions can now block passage: mark a region as non-walkable and characters will path around it (or interrupt their walk when they encounter it), unless they opt out with the new "ignore blocking regions" flag. Handy for conditional access to areas in the same location.
  • R.get_characters() is now part of PopochiuIRoom, so the characters present in the current room can be read straight from the interface.
  • A shader formatting preset and documentation comments have been added to the Transition Layer, making custom transitions easier to write.
  • Full translation support for functions in the engine: all the strings that appear in your game (dialog, inventory, hotspots, etc.) can now be translated through the existing Godot translation system, and the editor extracts them automatically. This is a big step forward for localization support and a long-standing missing feature for commercial games.

Editor

Documentation

Thanks to Cidney Hamilton, the
How to Develop a Game section has been reorganized around the actual order in
which you build a game: a new room is now split into dedicated pages for props,
hotspots, walkable areas and your first scripted interaction, and the game setup
chapter breaks down resolution and GUI choice into readable steps.

The project overview gained a page dedicated to the Editor Dock, the Aseprite
importer page documents the new animation grouping, and a handful of long-broken
links in the section have been fixed. The goal is unchanged: a newcomer should be
able to follow the handbook from an empty project to a working game without
leaving the docs.

Final Notes

  1. Upgrade from 2.1.1 requires running migrations, and some manual steps may be required. Take a look at the ouput panel after you run the migrations and follow
    ths instructions. If you have a multi-character game, make sure to check that each character's inventory is restored correctly after the migration!
  2. Inventory changes are worth a quick test. Inventories are now stored per character and items can be stacked, so the save/load procedure has been reworked. Play a bit, save,load, and check that the inventory behaves as you expect before shipping.
  3. visited and visited_first_time are now read-only. It should not be an issue
    because it is a non-conventional use-case, but if your game scripts assign to them, you may want to update visited_times instead (or find another solution because messing with states stinks a bit, really...).
  4. Aseprite props: multiple animations per prop are driven by tag naming: @Group for the prop and :GroupAnimation for each of its animations. Plain tags import exactly as before, so existing sources are unaffected.
  5. The GUIs have been reworked under the hood. The components no longer reach into the engine directly: they talk to it through the public PopochiuGraphicInterface API and react to signals, the way the stackable inventory work required (#510). Nothing changes in your game scripts, but the codebase behind every GUI template is markedly more maintainable and decoupled, and custom GUIs have a saner contract to build on.
  6. Godot 4.7 is now the default target: the duplicate-singleton errors you may have seen on startup are fixed and Popochiu will soon require some of its features, so we recommend you upgrade to that version.

Don't miss a new popochiu release

NewReleases is sending notifications on new releases.