Search Unity

Speech# - Node Base Dialogue Editor + C# Scripting

Discussion in 'Assets and Asset Store' started by Cinder, May 17, 2022.

  1. Cinder

    Cinder

    Joined:
    Mar 24, 2015
    Posts:
    20
    Hey all!

    About a year ago I created a (mostly) asset store ready node editor that lets you do C# scripting and call functions easily within your nodes. It was based on an experimental version of this I made a video on a long time ago: Original Video

    The goal here was to give designers, writers, scripters, and any combination of those roles a tool that lets them just make content and extend this tool to call any kind of functions that are relevant for the game their working on.

    It can be as dynamic and adaptable as your gameplay and systems require which is the main complaint I have for existing versions of scriptable character dialogue. Usually, dialogue editors require your game to fit the structure of their systems, UI, workarounds. By making this easily extendible and importantly C# based I think the system will bend to your game's needs instead!

    Available Now on the Unity Asset Store!

    Check out the documentation and the trailer below and let me know what you think!

    --Documentation Link--

     
    Last edited: May 26, 2022
  2. Cinder

    Cinder

    Joined:
    Mar 24, 2015
    Posts:
    20
  3. Cinder

    Cinder

    Joined:
    Mar 24, 2015
    Posts:
    20
    Made a new trailer that will accompany new features and improvements:



    Full Change Log for version 1.2:
    Given the improvements to the nodes including coloring tethers between nodes and defaults for automatically generated scripts, it is recommended that you click “Restore Defaults” in the Speech# Preferences Window for the best experience with Speech#.

    New Features

    - Reworked when the option to "Add Generated C# Script" is available by check if it is already added.
    - Added a function that automatically adds the generated C# script for "DialogueCharacter" and "DialogueEventTrigger" whenever scripts are compiled or the "Update Generated C# Script" button is pressed in the inspector.
    - Added information UI in the inspector when managing the generated scripts of a "DialogueCharacter" class on a character in a scene.
    - Added options in the Speech# Preferences panel that allow you to toggle on and off auto- generating all needed generated scripts when entering "Play Mode" in the editor or creating a new build (both default to true).
    - Nodes are now marked as having been "Edited" in the node graph editor whenever they are updated.
    - Added functionality to easily display localized strings from databases into dialogue text. This is a complex feature and there is documentation on its use on the website documentation.
    - Putting a localization id from the Default Localization Database in a node between curly brackets will automatically be replaced with code to reference that string i.e. <000000> in node dialogue or player options will be replaced with {locStr.GetLocString("000000")} when you update the characters generated script. This is a complex feature and there is documentation on its use on the website documentation.
    - Added functionality for interrupting audio clips with localized audio clips. This is a complex feature and there is documentation on its use on the website documentation (ideal for when you are dynamically changing strings and need to change dialogue audio as well).
    - Added functionality to easily pick what database index in the LocalizedDataManager class you want to pull a localized string from. This is a complex feature and there is documentation on its use on the website documentation.
    - Added "Speech# Preferences" to the Speech# Window tab to easily open preferences for the asset.
    - Node tethers now color based on the target node type (i.e. if a Dialogue Node leads to a Branch Node the tether will be blue like the Branch nodes).
    - Undo/Redo now works when selecting node fields.


    Improvements

    - In example dialogue: made dialogue options more clear about what the result will be before it is selected.
    - Added a dim background for the dialogue options to make them easier to read in the bright example environment.
    - Renamed the "DialogueCharacter" script to "DialogueCharacterExtension_Example" to make it more clear that this is an example of adding inheritance to the core "DialogueCharacter" script to easily extend for your game's systems.
    - Renamed "Character" script to "CharacterData_Example" to make it more clear that this is just an example of adding references to other player data scripts you may have in a project.
    - Rename the "CharacterDialogue" class to "GeneratedDialogueClass" (this is just the base class for any generated scripts for character's dialogue logic).
    - Added custom inspector for LocalizationDatabases so the LocalizationWindow isn't the only way to view/manage database contents.
    - Added a button to easily copy localization database IDs.
    - Added option in preferences to hide the "Record Audio" and assigned audio clip in the dialogue node in case you want to save space or your project doesn't have voice acting.
    - Added message at the top of the Localization Editor Window to make it more clear how to view localization databases in the project.
    - Updated the "S#" script icon.
    - On All Nodes: Removed width value and replaced it with a click and drag image that resizes the node width.
    - Moved the minimize node button to the bottom left of the nodes.
    - Made dialogue options that were previously chosen display with a grey tint in the example UI.
    - Exporting Screenplay now creates a .txt and .rtf file in the export folder (importing .rtf file to word does not keep margins, this is due to the format no longer being supported).
    - Set better defaults for all graphs. It is recommended to click “Restore Defaults” in the Preferences window for Speech#.
    - Name of the displayed dialogue tree now displays in the top left corner of the graph editor.
    - Made shorter function names for referencing strings and audio clips from localization databases.
    - Changed the variable name for the non-player character in a conversation to "speaker" instead of "character" which was too vague.
    - Reformatted the UI for branch nodes to make it more compact.
    - Added implicit conversion from string to the localization ID struct.
    - Gave code snippets in node editor have a different font than visible dialogue text (“Courier” for code and “Consolas” for dialogue text).
    - Made the line renderer in the node editor scale based on the current zoom amount.


    Bug Fixes

    - Made "ConversationVairables" and "GlobalVariables" nodes inherit from "DialogueBaseNode" class for consistency.
    - Added "CharacterData_Example" to the Speech# namespace (this was an oversight and not intentionally separate).
    - Made the Options variable conditional evaluation non- serialized to avoid persistence between play sessions.
    - Made the Options variable "conditionCheckResults" non- serialized to avoid persistence between play sessions.
    - Fixed missing Globals.cs default export path in preferences.
    - Fixed several bad defaults for auto exporting scripts (They are still relative to the Speech# folder so keep that in mind before moving the default folder around).
    - Added scrollable areas to the Variables Window for viewing global variables. They now can only get so big before they become scrollable to avoid issues with seeing extreme numbers of global variables.
    - "Restore Defaults" in Preferences now works with the grid lines / background colors.