Releases: carenalgas/popochiu
v2.0 - Alpha 2
Popochiu 2.0 Alpha 2 (for Godot 4.0.x, Godot 4.1.x and Godot 4.2-dev)
New features
- Aseprite importer working for characters. ⭐ Thanks to @stickgrinder
- Add walk_to_clicked to PopochiuCharacter. ⭐ @vonagam
- Add optional offset to walk_to methods. ⭐ @vonagam
- Changed Point by Marker. ⭐ @vonagam
- Now characters can move in rooms simultaneously.
- Added Audio settings to toolbar. ⭐ @JuannFerrari
Usability updates from 1.10
- Added filter text field to tabs so devs can filter the content by row or group name.
- New "Characters in room" group working in Room tab.
- Fixed bug errors when trying to access PopochiuDock from creation popups before PopochiuDock is ready.
Fixes
v1.10.0
Popochiu v1.10.0
This update adds a major feature that will facilitate the workflow for those who use Aseprite.
With this update, we will close the cycle of improvements for Popochiu version 1 to focus on version 2, which will work only in Godot 4.
👉👉👉 Check the wiki for more details! 👈👈👈
Fixes
- #23
characters_cfg
no longer exists in PopochiuRoom. Now its state script has acharacters: Dictionary
property that stores the state of characters in the room.
At the moment, onlyposition
and_looking_direction
are being stored. - #31 Now rows created in TabAudio are sorted alphabetically when adding new audio files to the project.
- #44 The bus list in each AudioCue now uses the buses created in Godot's Audio panel.
New features
- Characters have a built-in animation player and automatically support 8-directions animations for Walk, Talk and Idle states. More animations can be played using the
play_animation()
function, and they will all support un to eight directions: (up) walk _u, (up-right) idle _ur, (right) grab _r, (down-right) look _dr, (down) drop _d, (down-left) use _dl, (left) push _l, and (up-left) pull _ul. Thanks to @mgdesign for contributing this feature. - The new Aseprite importer allows for one-click animations creation and setup for characters. Support for Props and Inventory Items will be added in next versions. Thanks to @stickgrinder and @drbbgh for contributing this feature.
- Tabs in the Popochiu panel have text fields for filtering objects and groups in each tab.
- Added a new group to rooms to show the characters inside it, and make easier adding and removing them.
v2.0 - Alpha 1
Popochiu 2.0 Alpha 1 (for Godot 4.0 stable)
Popochiu has been preparing for this moment for several months already since the beta versions of Godot 4 started to be released, but with what we achieved in Popochiu 1.9 regarding direct access to game objects from the code editor, and some decisions made regarding file naming, we had to make many changes before we could release this first alpha.
We hope you will help us test it to find bugs and make the official version the best possible.
New features
E.run([])
is now calledE.queue([])
, but you don't need it to queue instructions with that method anymore!!!. You can do that with GDScript 2.0'sawait
.func _on_click() -> void: # This much better, right? await C.walk_to_clicked() await C.face_clicked() await C.Goddiu.say('My old toy car...') await I.ToyCar.add() await A.sfx_toy_car.play()
- If you want to use
E.queue([])
, you'll need to use thequeue_
version of each method:func _on_click() -> void: # Doing the same in the old way E.queue([ C.queue_walk_to_clicked(), C.queue_face_clicked(), 'Player: My old toy car...', I.ToyCar.queue_add(), A.sfx_toy_car.queue_play(), ])
- Now
on_interact()
andon_click()
methods in Props, Hotspots, Characters and Inventory items are called_on_click()
and_on_right_click()
. We made this change because we wanted the plugin to not impose how to identify such interactions. Thanks go to @stickgrinder for bringing this to our attention. - The
id
property of thePopochiuDialogOption
returned byD.show_inline_dialog(options: Array)
is now aString
number starting at 0.var op: PopochiuDialogOption = await D.show_inline_dialog([ 'Hi', 'Hola', 'Ciao' ]) match int(op.id): # You can compare the String if you prefer 0: C.Goddiu.say("How is it going?") 1: C.Goddiu.say("¿Cómo te va?") 2: C.Goddiu.say("Come sta andando?")
- Now the Points node inside each PopochiuRoom is called Markers (because you'll use Godot 4 Marker2D nodes to define positions in the room that can be used to move characters to them). Consequently, the method of the PopochiuCharacter class previously named
walk_to_room_point(id: String)
is now namedwalk_to_marker(id: String)
.
Known issues
- Code autocomplete when accessing game objects is not working at the moment. We reported this on this issue but we have not yet received an answer. This doesn't happen when accessing the properties and methods defined in the
state
of those objects.# This won't show anything for autocompletion C.Goddiu. # But here Godot will suggest properties and methods in the state script of the character C.Goddiu.state.
- Setting the project as Pixel or 2D in the setup popup won't have any effect.
Things to come
- A better system for Dialogs creation. We've discussing this, and in the short-term, each dialog option will have its own script, so you don't have to write a
match
to evaluate which option was selected. - @stickgrinder @mgdesign and @drbbgh have been working on improving the animation system for characters (something that will benefit props and rooms later), and an Aseprite importer for those animations. This component will be available in Popochiu 1.10, and will be part of Popochiu 2.0 too!
- A tool to handle localization.
- A better system to customize the graphic interface of the game.
- More word effects and text transition effects for the DialogText node (the one used to show dialogue lines).
v1.9.0
Popochiu v1.9.0 - Goddiu
This update adds a major feature that will allow easier access to rooms, characters, inventory items, and dialogs from code. It also includes an updated navigation system, improvements to save/load the game, a scroll bar for the dialog options menu, and an option to specify the player-controlled character (or PC) in the contextual menu of each character row in the main tab.
👉👉👉 Check the wiki for more details! 👈👈👈
Fixes
- The inventory was not cleared when loading a saved game. This would cause inventory items to be duplicated with the items loaded from a saved game session, or to remain in the inventory without regard to the items that had actually been saved.
- The deprecation warning seen since Godot 3.5 about the Navigation 2D node and
Navigation2D.get_simple_path()
has disappeared. Now the plugin uses the Navigation2DServer to make characters move through rooms. (This update is thanks to the work we are doing for Popochiu 2). - WalkToHelper and BaselineHelper nodes in PopochiuClickable objects are no longer orphaned. When the game runs, these nodes are properly DESTROYED.
- An internal error caused the plugin to try to disable non-existing options in the row context menus in Popochiu's dock.
- Using
D.show_inline_dialog()
inside a dialog no longer causes the options of the dialog to be displayed after selecting an option of the inline dialog. - Using
D.show_inline_dialog()
no longer makes the inventory unavailable.
New features
-
Saving/loading the game now takes into account Props, Hotspots, Walkable areas and Regions. This also allows the state of each room to be preserved during gameplay (i.e. changes made to these objects will be saved when players move between rooms). In addition, the status of characters and inventory items is now also saved.
-
PopochiuSettings now has a property (
max_dialog_options
) to set the number of options to show in branching dialog menus before adding a scroll bar to show more options if they exceed this limit. -
You can easily make characters walk to a prop, hotspot or point in the current room using the methods:
walk_to_prop()
,walk_to_hotspot()
andwalk_to_point()
, which are now available for each character.C.Goddiu.walk_to_prop('ToyCar')
-
⭐ What was that? What does
C.Goddiu
mean? In this update we have achieved something great: You can now access characters, inventory items, dialogs and rooms from code with autocompletion based on the existing objects in the project. This can be better explained with code:func on_interact() -> void: A.mx_kids_game.play_now(3) # Plays the mx_kids_game music with a fade of 3 seconds yield(E.run([ C.Goddiu.walk_to_prop('ToyCar'), # Make Goddiu walk to the toy car prop "Player: Can I take this toy car with me?", C.Popsy.face_right(), # Make Popsy face right, and then left (as if shaking his head) '...', C.Popsy.face_left(), '...', "Popsy: No! It's mine", "Player: Pleeeease", C.Popsy.say('mmm... oook'), # Another way to make characters talk A.sfx_toy_car.play(), # Plays the sfx_toy_car sound I.ToyCar.add() # Add the toy car inventory item to the inventory ]), 'completed') # Change a property in the Outside room R.Outside.state.is_rainning = true # Start the dialog tree that will make Goddiu and Popsy have a branching conversation D.ChatWithPopsy.start()
Autocompletion options for rooms (R), characters (C), inventory items (I), dialogs (D), and audio files (A) will be updated each time you create one of these objects, so you'll be able to access them from the code right away.
-
Did you see that? Now we have a new shortcut to access rooms from code: R. This allows you to easily get props, hotspots, regions, points and walkable areas in the current room, i.e.
R.get_prop('ToyCar')
,R.get_hotspot('Window')
,R.get_walkable_areas()
, and so on. -
You can define the player-controlled character using the context menu on each character row in the main tab. This will tell the plugin which character will be controlled by the player, and an icon will appear in front of the current PC's row.
-
We have improved the way the
state
variable is defined in rooms, characters, and inventory items. This makes autocompletion work much better because it now shows the variables and methods on these files (i.e CharacterGoddiuState.gd) as you write code. -
In the Setup popup you will now see two buttons to move all scenes and scripts of the Graphic Interface, or the Transitions scene, out of the plugin folder to the game folder. This will allow you to modify those scenes without losing your changes when updating Popochiu.
v1.8.7
Popochiu v1.8.7 - Goddiu
This update adds a major feature that will allow easier access to rooms, characters, inventory items, and dialogs from code. It also includes an updated navigation system, improvements to save/load the game, a scroll bar for the dialog options menu, and an option to specify the player-controlled character (or PC) in the contextual menu of each character row in the main tab.
👉👉👉 Check the wiki for more details! 👈👈👈
Fixes
- The inventory was not cleared when loading a saved game. This would cause inventory items to be duplicated with the items loaded from a saved game session, or to remain in the inventory without regard to the items that had actually been saved.
- The deprecation warning seen since Godot 3.5 about the Navigation 2D node and
Navigation2D.get_simple_path()
has disappeared. Now the plugin uses the Navigation2DServer to make characters move through rooms. (This update is thanks to the work we are doing for Popochiu 2). - WalkToHelper and BaselineHelper nodes in PopochiuClickable objects are no longer orphaned. When the game runs, these nodes are properly DESTROYED.
- An internal error caused the plugin to try to disable non-existing options in the row context menus in Popochiu's dock.
- Using
D.show_inline_dialog()
inside a dialog no longer causes the options of the dialog to be displayed after selecting an option of the inline dialog. - Using
D.show_inline_dialog()
no longer makes the inventory unavailable.
New features
-
Saving/loading the game now takes into account Props, Hotspots, Walkable areas and Regions. This also allows the state of each room to be preserved during gameplay (i.e. changes made to these objects will be saved when players move between rooms). In addition, the status of characters and inventory items is now also saved.
-
PopochiuSettings now has a property (
max_dialog_options
) to set the number of options to show in branching dialog menus before adding a scroll bar to show more options if they exceed this limit. -
You can easily make characters walk to a prop, hotspot or point in the current room using the methods:
walk_to_prop()
,walk_to_hotspot()
andwalk_to_point()
, which are now available for each character.C.Goddiu.walk_to_prop('ToyCar')
-
⭐ What was that? What does
C.Goddiu
mean? In this update we have achieved something great: You can now access characters, inventory items, dialogs and rooms from code with autocompletion based on the existing objects in the project. This can be better explained with code:func on_interact() -> void: A.mx_kids_game.play_now(3) # Plays the mx_kids_game music with a fade of 3 seconds yield(E.run([ C.Goddiu.walk_to_prop('ToyCar'), # Make Goddiu walk to the toy car prop "Player: Can I take this toy car with me?", C.Popsy.face_right(), # Make Popsy face right, and then left (as if shaking his head) '...', C.Popsy.face_left(), '...', "Popsy: No! It's mine", "Player: Pleeeease", C.Popsy.say('mmm... oook'), # Another way to make characters talk A.sfx_toy_car.play(), # Plays the sfx_toy_car sound I.ToyCar.add() # Add the toy car inventory item to the inventory ]), 'completed') # Change a property in the Outside room R.Outside.state.is_rainning = true # Start the dialog tree that will make Goddiu and Popsy have a branching conversation D.ChatWithPopsy.start()
Autocompletion options for rooms (R), characters (C), inventory items (I), dialogs (D), and audio files (A) will be updated each time you create one of these objects, so you'll be able to access them from the code right away.
-
Did you see that? Now we have a new shortcut to access rooms from code: R. This allows you to easily get props, hotspots, regions, points and walkable areas in the current room, i.e.
R.get_prop('ToyCar')
,R.get_hotspot('Window')
,R.get_walkable_areas()
, and so on. -
You can define the player-controlled character using the context menu on each character row in the main tab. This will tell the plugin which character will be controlled by the player, and an icon will appear in front of the current PC's row.
-
We have improved the way the
state
variable is defined in rooms, characters, and inventory items. This makes autocompletion work much better because it now shows the variables and methods on these files (i.e CharacterGoddiuState.gd) as you write code. -
In the Setup popup you will now see two buttons to move all scenes and scripts of the Graphic Interface, or the Transitions scene, out of the plugin folder to the game folder. This will allow you to modify those scenes without losing your changes when updating Popochiu.
v1.8.5 - mejorandíu
Fixes
- Loading saved games is working when the file doesn't has data for the main types: characters, inventory items or dialogs.
- Creating dialogue lines (for
E.run([])
) with wrong character names doesn't break the game. - Creating dialogue lines with empty emotions doesn't break the game.
- DialogText's ContinueIcon now is set to
modulate.a = 0.0
instead of 0.5 (this was for testing purpouses). - DialogText animation speeds were not working because the method to count the total number of characters in the line was returning 0.
- Cursor doesn't show the clock icon when a PopochiuDialog is active.
New things
- Added properties
times_clicked
andtimes_right_clicked
to PopochiuClickable. - Added methods
disable_input()
andenable_input()
to PopochiuClickable. - Created class for PopochiuDialogOption.
v1.8.4 - Gonorreín
Tutorials are live!
Here you can watch the tutorials (English subs. - English voice version comming soon) to learn how to:
- How to setup your project, create a room and a character
- What are the baselines, how to create gaps and how to use Hotspots
- How to create Props with interaction and inventory items
- How to create dialog trees
- How to enable/disable dialog options and use inventory items on characters, Props and Hotspots
- How to setup a room bigger than the game window, and how to move between rooms
- How to add sound effects, music, voices, and graphic interface sounds
Changelog since v1.7.1
v1.8.4.a
Added method to change the frame of a prop inside an E.run([]).
Updated templates to make easier to deleted commented paragraphs.
FIX: Typo in default on_item_used message.
FIX: Make the PC the character that is currently marked as the current player.
v1.8.4
Now the Perimeter (NavigationPolygonInstance) is created by code.
FIX: Clicking on a row in Room tab was opening the script of the object. This was removed because there is a button inthe row to open the script.
FIX: Perimeter node in PopochiuWalkableArea scene was causing problems
v1.8.3
Plugin version is shown in the footer of the dock.
Added export properties to PopochiuProp to change the number of hframes
in its Sprite and the current frame.
Updated icons, labels and styles for "Baseline" and "Walk to point" buttons in the canvas.
Updated shoes color for walkable_area icon.
Thanks @stickgrinder for your work on PopochiuWalkableAreas
Added Walkable Areas list in Room tab.
Added basic PopochiuWalkableArea object and refactored short WA naming for consistency between UI and code.
Added method to select active walkable area in a room. Tested locally, it works.
Added methods to check which walkable_area is the active one.
Added buttons to the inspector to navigate between walkable area and its polygon instance. Have to be finished.
Added a flag (and related setget functions) to allow walking past a walkable area boundaries for a character.
FIX: I.add_item_as_active() wasn't working as expected
v1.8.2
Mayor improvement in how interactions are registered in overlaping PopochiuClickables.
Now Popochiu stores an array of hovered PopochiuClickable to handle correctly what to show and which object is the clicked one.
Now CollisionPolygon2D nodes inside PopochiuClickables are called InteractionPolygon.
Created separated methods for calling C.player_say()
and C.character_say()
inside and outside an E.run([])
.
FIX: in_inventory
property changes after the PopochiuInventoryItem is added to the tree.
FIX: When characters talk using the "script" from the UI no longer quickly-appears-dissapears.
v1.8.1
Added link_to_item
property to PopochiuProp so the prop itself disables, enables when the item linked to it is added or discarded from the inventory.
Active inventory item deactivates with both left and right click.
Improvements in the flow of loading the room when running the project.
Created two stop methods in the AudioManager to stop a playing audio file inside a run and outside of one.
Props, Hotspots and Regions inside rooms are obtained by their group instead of checking the childrens of their corresponding container nodes.
IDialog now stores a reference to the current dialog and the last selected option.
IDialog now has a method for making the PC say the selected option: D.say_selected()
.
Updated DialogTemplate.gd to include an example of calling D.say_selected()
.
GraphicInterface and TransitionLayer folders are no longer moved to res://popochiu during Setup.
Updated Prop and Hotspot templates.
Improved how C.face_clicked() works. Now it calls the PopochiuCharacter.face_clicked() method.
When creating props with no interaction, the _NoInteraction folder is created inside the room's Props folder to place there all the assets for the non-interactable props.
AudioManager play methods now have tow options: one for when they run inside an E.run([]) and one for when they run out of a E.run([]).
FIX: Inspector plugin was throwing an error when editing a PopochiuDialog resource.
FIX: Setting a custom texture for Cursor can ignore blocking.
FIX: Clicking a row in the Room tab only selects the node in the Scene tree. It no longer tries to open its script file.
FIX: AudioCue by default uses the Master bus.
FIX: Removing characters and calling PopochiuRoom.on_room_exited no longer happens on the engine's first run.
v1.8.0
- DisplayBox rendering improvements.
Now the node is a RichTextLabel.
Improvements in adjusting the size and position (centered to screen) of the node.
- Huge improvement in DialogText rendering.
No more additional Label needed (not at least fixed, it is created and deleted during runtime).
Now the continue icon renderds anchored to the size of its parent.
- GUI scales to match the game size.
This can be avoided with an option in PopochiuSettings.
Huge improvements for DisplayBox and DialogText rendering.
DisplayBox can now render BBcode.
Layout update for "Restart" popup.
Setup popup now shows a message advicing about the GUI scale.
Pixel game type set as default type after install.
Cursor and TransitionLayer also scale with the GUI.
Selecting a PopochiuCharacter node inside a PopochiuRoom now allows to edit the "position" property.
v1.7.2
FIX: Plugin was not working because cyclic dependencies
v1.7.1
PopochiuCharacter nodes can't be edited while selected inside a PopochiuRoom.
Added Warning message so players understand why PopochiuCharacter is not editable while in a PopochiuRoom.
Added two buttons to canvas editor menu for selecting a Prop or Hotspot baseline and walk to helpers.
When a PopochiuProp is created with interaction, or a PopochiuHotspot or a PopochiuRegion are created, a CollisionPolygon2D
is automatically created.
FIX: Deleting a Prop with no script will no longer delete its room folder.
FIX: Deleting a Prop with no interaction couldn't be deleted without restarting Godot.
v1.7.0 - Popsy
What's new
Core
- ⭐ Popochiu can save/load games using up to 4 slots. Two buttons were added to the game's toolbar for players to use this.
- The data is saved in JSON format to make it work in Web builds.
- Now PopochiuRoom, PopochiuCharacter, PopochiuInventoryItem and PopochiuDialog have a dedicated script for handling their state. This script is automatically created by the plugin, and it is the script of the .tres that was already part of the creation process for each type.
- By default Popochiu will store all the properties in each state script that are basic types: bool, int, float, String, and any Array of those types.
- Each state script has an
on_save()
andon_load()
so devs can define custom data to store. - PopochiuGlobals.gd is now created when the plugin is installed (and autoloaded as Globals). Its properties are also saved/loaded, and devs can also add
on_save()
andon_load()
methods to it. - Inventory items can be discarded, and when an item is discarded, the inventory hides automatically (unless it is marked as "Always visible" in PopochiuSettings.tres).
- Added
I.clean_inventory()
. - ⭐ Dialogue lines can now have an automatic-jump-to-next-instruction:
Player[]: I'll dissapear once finished Player[3]: I'll dissapear 3 secs after finished
- ⭐ PopochiuDialogOption can now be
disabled
: won't appear as an option even ifturn_on()
is called. - ⭐ PopochiuDialogOption can now be marked as
always_on
: Will make the option look as if it had never been used.
Plugin
- Created first version of Popochiu's theme.
- Added buttons to Room tab to ease devs to open the room' script, the room's state resource and state script.
- Added a context option for Props to allow developers to create a Script for Props that were originally created with no interaction.
- Clickable shows helpers when selecting any of their child nodes.
Improvements
- PopochiuCharacter looking direction is now an Enum.
- DialogText now connects to
C.character_spoke
. - Added functions to
turn_on
andturn_off
options in PopochiuDialog. - Added
on_start
virtual function to PopochiuDialog so devs can put their pre-start code without overwriting thestart()
function.
Fixes
- Prop updates her childs' position and her
walk_to_point
based on her baseline. - PopochiuSettings.tres
items_on_start
was not working. - PopochiuCharacter Sprite child won't cause bugs anymore.
v1.6.0 - Chiquininín
General
- ⭐ res://popochiu/PopochiuData.cfg is now the HUB for Rooms, Characters, Inventory items, Dialogs and AudioCues.
- ⭐ res://PopochiuSettings.tres now stores some settings for the project.
- PopochiuProps in a PopochiuRoom can now be nested and still be listed (and clickable) in the dock.
Core
- ⭐ The main camera is no longer centered in (0, 0). Now it is centered in the game's viewport.
- Graphic interface and Transition layer scenes are loaded on runtime to Popochiu.
- ⭐ PopochiuRoom inherits from YSort instead of Node2D.
- Props and Characters nodes in PopochiuRoom are YSort.
- Inventory and toolbar can now be always visible (you can change this using the Settings button in the dock).
- PopochiuCharacters now have a can_move flag so a PC could not move.
Plugin
- Added button to the dock's footer to open Settings.
- ⭐ Created Setup popup to change game's viewport size, test size and game type: Default, 2D, Pixel.
- Default: No stretch. Texture import preset set to the default 2D.
- 2D: Stretch mode set to 2D and stretch aspect set to keep. Texture import preset set to the default 2D.
- Pixel: Stretch mode set to 2D and stretch aspect set to keep. Texture import preset set to 2D pixel.
- The Setup popup will automatically appear after the first Editor restart. Then it can be opened using the Setup button in the dock's footer.
- GraphicInterface and TransitionsLayer are moved out of the addon's folder after closing the Setup popup on the first restart.
- Props, Hotspots and Regions are centered on creation based on game's viewport width and height in ProjectSettings.
⭐ Audio (huge improvements here) ⭐
- A popup appears to show the progress of creating the audio cues for the project.
- Each row in the Audio tab shows the path to its file.
- The project is read in order to know which are the AudioCue files to create instead of creating them on the fly. This fixes a problem related with creating files in a folder while reading it at the same time.
- Renaming and moving audio files no longer break the game.