Skip to content

Releases: carenalgas/popochiu

v2.0 - Alpha 2

07 Oct 01:39
Compare
Choose a tag to compare
v2.0 - Alpha 2 Pre-release
Pre-release

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

  • #17 #23 #31 #44 #48 #53 #54 #55 #56 #58 #65 #85
  • Sending emotions with E.queue([]) is working:
    await E.queue([
    	"Player(angry): Hola",
    	"Player(angry): Soy",
    	"Player(angry): Goddiu",
    ])
    

v1.10.0

05 May 09:41
Compare
Choose a tag to compare

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 a characters: Dictionary property that stores the state of characters in the room.
    At the moment, only position 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

26 Mar 04:10
Compare
Choose a tag to compare
v2.0 - Alpha 1 Pre-release
Pre-release

Popochiu 2.0 Alpha 1 (for Godot 4.0 stable) Godot v4.0

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 called E.queue([]), but you don't need it to queue instructions with that method anymore!!!. You can do that with GDScript 2.0's await.
    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 the queue_ 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() and on_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 the PopochiuDialogOption returned by D.show_inline_dialog(options: Array) is now a String 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 named walk_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

18 Feb 04:48
Compare
Choose a tag to compare

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() and walk_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

18 Feb 04:46
Compare
Choose a tag to compare

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() and walk_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

28 Dec 00:17
Compare
Choose a tag to compare

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 and times_right_clicked to PopochiuClickable.
  • Added methods disable_input() and enable_input() to PopochiuClickable.
  • Created class for PopochiuDialogOption.

v1.8.4 - Gonorreín

18 Nov 18:59
Compare
Choose a tag to compare

Tutorials are live!

Here you can watch the tutorials (English subs. - English voice version comming soon) to learn how to:

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

29 Aug 11:08
f86606a
Compare
Choose a tag to compare

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() and on_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() and on_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 if turn_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 and turn_off options in PopochiuDialog.
  • Added on_start virtual function to PopochiuDialog so devs can put their pre-start code without overwriting the start() 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

10 Aug 11:56
Compare
Choose a tag to compare

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.