{"id":14960572,"url":"https://github.com/owmacohe/descant","last_synced_at":"2025-10-24T19:11:42.844Z","repository":{"id":197315963,"uuid":"690211718","full_name":"Owmacohe/Descant","owner":"Owmacohe","description":"An enhanced and user-friendly Unity dialogue system plugin","archived":false,"fork":false,"pushed_at":"2025-05-18T01:18:08.000Z","size":3349,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T02:40:31.369Z","etag":null,"topics":["dialogue-system","dialogue-systems","plugin","plugins","tool","tools","unity","unity-plugin","unityplugin","unityplugins"],"latest_commit_sha":null,"homepage":"https://omch.tech/descant","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Owmacohe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-11T18:48:16.000Z","updated_at":"2025-05-18T01:18:11.000Z","dependencies_parsed_at":"2023-10-01T16:10:44.184Z","dependency_job_id":"b0cb9535-de83-4711-b23d-2a9f5ab0b460","html_url":"https://github.com/Owmacohe/Descant","commit_stats":{"total_commits":61,"total_committers":2,"mean_commits":30.5,"dds":"0.14754098360655743","last_synced_commit":"cb7cc9e55c8e577adc692ca4de53020e9d9999b0"},"previous_names":["owmacohe/descant"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Owmacohe/Descant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owmacohe%2FDescant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owmacohe%2FDescant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owmacohe%2FDescant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owmacohe%2FDescant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Owmacohe","download_url":"https://codeload.github.com/Owmacohe/Descant/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owmacohe%2FDescant/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260506668,"owners_count":23019419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dialogue-system","dialogue-systems","plugin","plugins","tool","tools","unity","unity-plugin","unityplugin","unityplugins"],"created_at":"2024-09-24T13:22:32.912Z","updated_at":"2025-10-24T19:11:42.837Z","avatar_url":"https://github.com/Owmacohe.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![License: MIT](https://img.shields.io/badge/License-MIT-yellow)\n![GitHub stars](https://img.shields.io/github/stars/owmacohe/descant)\n![GitHub downloads](https://img.shields.io/github/downloads/owmacohe/descant/total)\n\n![Descant logo](Media/Logo/Descant_Logo_C_200.png)\n\n# Descant\n\n*dess • can’t*\n\n\u003e 1. an independent treble melody sung or played above a basic melody.\n\u003e 2. a melodious song.\n\u003e 3. a discourse on a theme.\n\n\n\u003cimg src=\"Media/Screenshots/editor.png\" alt=\"Descant Dialogue Editor\"\u003e\n\u003cimg src=\"Media/Screenshots/game.png\" alt=\"Sample UI implementation\"\u003e\n\n\n\n## Overview\n\n**Descant** is a **Unity 2022.3.x** or later dialogue system plugin. The [Unity Asset Store](https://assetstore.unity.com) is [chock full](Documentation/system_review.xlsx) of many such types of plugins, ranging from [feature-rich](https://assetstore.unity.com/packages/tools/behavior-ai/dialogue-system-for-unity-11672), to [ultra-minimalist](https://assetstore.unity.com/packages/tools/visual-scripting/conversa-dialogue-system-192549), to [downright bad](https://assetstore.unity.com/packages/tools/c5-dialogue-system-14881). **Descant** aims to hit the sweet spot between quality UI, powerful features, and easy-to-lean functionality, while also addressing many of the game-specific consequences of the standard dialogue manager setup. Besides acting as a standard tool for creating, saving, and actualizing non-linear game dialogue, it also pushes the envelope by adding optional dialogue-enhancing node components that introduce features to break away from the overused and underwhelming trends seen in many interactive fiction games. These enhancements act similar to **Unity**’s standard `GameObject` `Component` system, and can be applied at-will to nodes. This modular approach is so-far not explored in the world of Unity dialogue systems. The project will be free *(and collaborative open-source)* forever. Feel free to send me a message or submit a pull request if you want to make any changes.\n\n\n\n## Installation\n\n1. Install the latest release from the [GitHub repository](https://github.com/Owmacohe/Descant/releases), unzip it, and place the folder into your Unity project's `Packages` folder.\n2. Return to Unity, and the package should automatically be recognized and visible in the **Package Manager**.\n3. A sample scene can be found at: `Descant/Examples/Test_Scene.unity`.\n4. Opening this scene may prompt you to install **Text Mesh Pro**. Simply click on **Import TMP Essentials** to do so.\n\n\n\n## Descant Files\n\n- **Descant Graphs**\n  - **Descant Graphs** can be created by right clicking, and selecting `Create/Descant Graph`.\n  - **Descant Graphs** can be edited by right clicking on a `Descant Graph` file, and selecting `Edit Descant Graph`.\n- **Descant Actors**\n  - **Descant Actors** can be created by right clicking, and selecting `Create/Descant Actor`.\n  - **Descant Actors** can be edited through the **Inspector**.\n- **Descant Logs** don't need to be created or modified manually by the player at all. A single `DescantLogData` file exists in the `Descant/Resources` folder. Please don't delete it!\n\n\n\n## Usage\n- **Descant Graphs**\n  1. The **Descant Graph Editor** can be opened from the toolbar with `Descant/Graph Editor` or by creating/editing a **Descant Graph** file.\n  2. Use middle-click to pan around in the editor.\n  3. New nodes can be created by right-clicking within the grid.\n  4. Connections between nodes can be created by left-clicking on nodes’ ports, and dragging to create a connection line to another port.\n  5. `ChoiceNode`s represent player choices at certain moments within the dialogue, and `ResponseNode`s represent the NPC’s responses or statements.\n  6. If you want to have a `DescantActor`’s property (statistic, topic, or relationship value) to show up within a `ChoiceNode` or `ResponseNode`'s text, write `{actor_name:property_name}`, and **Descant** will inject the first property it finds with the name `property_name` right into it. *(see the below for more info on `DescantActor`s)*.\n  7. `IfNode`s represent junctions in the flow of the dialogue, and can be used quite powerfully. They function similarly to `Components` (see below), and are thus not recommended for beginners.\n  8. The `StartNode` represents the place where a given dialogue begins, and `EndNode`s represent where it can end.\n  9. More complex functionality can be added to nodes by adding `Components` (see the [Component documentation](https://omch.tech/descant) for more info on each default component, as well as how to write your own).\n- **Descant Actors**\n  1. **Descant Actor**s represent the player and any NPCs that they might talk to. **Descant Actor**s are not necessary when using **Descant**.\n  2. New **Statistics**, **Topics**, and **Relationships** can be added in the **Inspector** for each **Descant Actor**.\n     - **Statistics** are variables that pertain to actors *(e.g. health, level, stamina, etc.)*\n     - **Topics** are concepts that the actors may learn during dialogue *(e.g. names of characters, locations, events, etc.)*\n     - **Relationships** are values quantifiably that represent how actors feel about each other.\n- **Runtime**\n  1. Drag the `ConversationUI` prefab from the `Descant/Assets` folder into your Unity scene *(you may have as many `ConversationUI`s as you want in the same scene, and you may modify their text and UI styles as much as you want, so long as the `DescantConversationUI`'s inspector assignments don’t get broken)*.\n  2. Add an `Event System` object to your scene *(`Create/UI/Event System`)*, if you don't already have one.\n  3. Add a `DescantDialogueTrigger` script to a GameObject of your choice, and assign its fields *(hover over each field to see a popup of its description) (you may have as many `DescantDialogueTrigger`s as you want in the same scene)*.\n  4. At some point while the game is running, call the `Display()` method in the `DescantDialogueTrigger` script to begin the dialogue *(e.g. when the player presses `[E]`, when a `Button` is clicked, etc.)*.\n- **Logs**\n  1. The **Descant Log** can be opened from the toolbar with `Descant/Log`.\n  2. Turn the `Capture` toggle on to start capturing events as they happen at runtime.\n  3. The log only saves the last played dialogue.\n  4. Please don't delete the log file located at `Descant/Resources`!\n\n\n\n## Documentation\n\n- This `README`\n- [Component documentation](https://omch.tech/descant)\n- Planning\n  - [Initial research](Documentation/interaction_research.md), [market survey](Documentation/system_review.xlsx), and [key pitfalls and successes](Documentation/pitfalls_and_sucesses.md)\n  - [Features list](Documentation/features.md)\n  - [Weekly process journal](Documentation/journal.md)\n- [Unity Asset Store page](https://assetstore.unity.com/packages/slug/273262)\n\n\n\n## Inspiration/Sources\n\n- [BlabScript](https://www.lablablab.net/?p=701)\n- [Ultima Ratio Regum](https://www.markrjohnsongames.com/games/ultima-ratio-regum)\n- [Emily Short's Interactive Storytelling](https://emshort.blog/how-to-play/writing-if/my-articles/conversation)\n- [A Gossip Virtual Social Network for Non Playable Characters in Role Play Games](https://ieeexplore.ieee.org/document/6680108?part=1)\n- [NiEngine](https://github.com/StephanieRct/NiEngine)\n\n\n\n## Acknowledgements\n- Unity's [UI Toolkit framework](https://docs.unity3d.com/Manual/UIElements.html)\n- Eduard Malkhasyan's [Serializable Dictionary in Unity](https://github.com/EduardMalkhasyan/Serializable-Dictionary-Unity)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowmacohe%2Fdescant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowmacohe%2Fdescant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowmacohe%2Fdescant/lists"}