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
- Loading a project on Godot 4.7 no longer floods the output with "Singleton already registered" errors: the autoloads are now guarded against double registration.
- Removing a room from the Popochiu Dock no longer leaves the editor in an inconsistent state: the open scene and its files are closed before deletion, and the spritesheet scan is properly sequenced so the filesystem panel stays in sync. This was a tricky one to track down, and it was a long-standing bug that could lead to crashes or corrupted projects. We are so happy to finally close it!
- Moving the baseline of a Prop or Character no longer drags its obstacle polygon along, so characters no longer walk through props - or get blocked by thin air - depending on where the baseline sits.
- The Aseprite importers no longer assign frames to the wrong animation label, which used to scramble animations after a rescan.
- Dialog text now resizes correctly in the two-button interface: the text box is measured properly, words that do not fit are no longer written half-and-erased before being rewritten, and the duplicated
[color]tag is gone. - Changing "Polygon Vertex Handler Size" in the Editor Settings no longer freezes Godot.
visitedandvisited_first_timeare now read-only and derived fromvisited_times, which fixes save games reporting a room as never visited, or visited more than once, after a restore.- The 9-Verbs GUI now restores the haircross cursor after a popup closes, instead of leaving the pointer arrow stuck there.
- The 9-Verbs cursor animates again when hovering clickables, just like it does in the ActionBar (Sierra) GUI.
- The "Pixel Perfect" cursor project setting is honoured once more, fixing a regression introduced after the cursor rework.
Improvements
Engine
- Every character now carries its own inventory: switching
C.playerswitches 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()andremove_item()take a quantity, a newget_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 ofPopochiuIRoom, 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
- Props can be imported with multiple animations from the same Aseprite file: a
@Doortag declares a prop and:DoorClosed/:DoorOpendeclare its animations, so doors, containers and other stateful objects no longer need their animations redone by hand every time the room is reimported (#551 is folded into this one). - The Aseprite importer rows report their frame range on hover, so a rescan that adds or trims frames is evident at a glance without cluttering the list.
- The Popochiu Dock is now built on Godot's
Treecontrol instead of a hand-rolled equivalent, retiring a good chunk of Godot 3.x-era code and making the whole panel feel native to the editor (#559). - All Popochiu editor and toolbar icons are now monochrome SVGs: no more pixel art leftovers, and the colours can still be modulated where it helps readability. - Thanks to Fabiano Caputo for all the hard work!
- Extraction of translatable strings in the editor, so the generated gettext artifacts are handled for you. This is the editor-side counterpart of the engine's existing translation support, and it makes it easier to ship a localized game without touching the source code.
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
- 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! - 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.
visitedandvisited_first_timeare 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 updatevisited_timesinstead (or find another solution because messing with states stinks a bit, really...).- Aseprite props: multiple animations per prop are driven by tag naming:
@Groupfor the prop and:GroupAnimationfor each of its animations. Plain tags import exactly as before, so existing sources are unaffected. - The GUIs have been reworked under the hood. The components no longer reach into the engine directly: they talk to it through the public
PopochiuGraphicInterfaceAPI 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. - 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.