{"id":19907595,"url":"https://github.com/jaerith/chatgptassistedunitydialogeditor","last_synced_at":"2026-06-10T17:31:50.689Z","repository":{"id":181906617,"uuid":"667634696","full_name":"jaerith/ChatGPTAssistedUnityDialogEditor","owner":"jaerith","description":"A dialog editor plugin for the Unity Editor, with the enhancement of ChatGPT assisting in the writing of static dialog and possibly being an active, dynamic part of in-game dialogue (via a proxy).","archived":false,"fork":false,"pushed_at":"2024-01-01T20:05:07.000Z","size":16284,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-01T08:13:43.914Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/jaerith.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}},"created_at":"2023-07-18T01:09:22.000Z","updated_at":"2023-08-02T21:32:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"150701a5-ae1f-4f5a-a967-1bcd0c38ce53","html_url":"https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor","commit_stats":null,"previous_names":["jaerith/chatgptassistedunitydialogeditor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jaerith/ChatGPTAssistedUnityDialogEditor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaerith%2FChatGPTAssistedUnityDialogEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaerith%2FChatGPTAssistedUnityDialogEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaerith%2FChatGPTAssistedUnityDialogEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaerith%2FChatGPTAssistedUnityDialogEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaerith","download_url":"https://codeload.github.com/jaerith/ChatGPTAssistedUnityDialogEditor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaerith%2FChatGPTAssistedUnityDialogEditor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34163253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-12T20:43:13.738Z","updated_at":"2026-06-10T17:31:50.667Z","avatar_url":"https://github.com/jaerith.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChatGPT Assisted Unity Dialog Editor\nA dialog editor plugin for the Unity Editor, with the enhancement of ChatGPT assisting in the writing of static dialog and possibly being an active, dynamic part of in-game dialogue (via a proxy).\n\n## Overview \nThis project is jointly inspired by the [Unity Dialogue Quests](https://www.udemy.com/course/unity-dialogue-quests) Udemy course (created by the GameDev.tv Team) and the [Unity ChatGPT Experiments](https://github.com/jaerith/UnityChatGPT) repo by Dilmer Valecillos.  The main goal of this project is to provide in-editor assistance when creating dialog text that is associated with gameplay (like quests) but is not essential to the overall story arc.\n\nThe forementioned Udemy course teaches one how to create a customizable dialog editor for Unity games, providing the developer with an embedded GUI for creating DAGs; each of these DAGs represent the flow of conversation (i.e., a dialog) between the player and NPCs.  Other useful features are available, such as the potential to fire events based on reaching certain nodes within the graph. \n\nThis project takes the dialog editor one step further by providing the option to use ChatGPT as an assistant when creating the DAG and its embedded text.  As the developer, you can request for ChatGPT to write the text at certain nodes during test simulations, and when you're happy with the generated text, you can flip the switch on individual nodes and leave that text as static for the final edition of the dialog instance (i.e., for the shipped version of the game).\n \nHowever, there is also interest in the option for certain nodes of a dialog to be left as open in the shipped version, dynamically altered by ChatGPT (via a proxy) during an actual session of the game.  This option, while possible and very interesting, has not been explored thoroughly in the project; it can create unpredictable results and isn't generally recommended at the moment.\n\n## Example of Usage\n\nLet's assume that your game has an area where the NPCs all tell riddles, where each has its own set of consequences.  You'd like to position a number of characters throughout the scene, each with its own riddle.  How would this tool help with that?\n\n### Preparation\n\nFirst, you would need to create a \"seed\" (i.e., a template) that is attached to each character, configuring each NPC with the same intention of using ChatGPT to generate the riddle and other associated text.  This [seed example](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Scripts/Dialogue/ChatGPT/SeedExamples/RiddlingGuardConversationSeed.json) demonstrates how you could configure such a NPC, by adding a ChatGPT Controller to the NPC and providing it with the forementioned seed.  When this seed is used in conjunction with the text in a dialog instance, the results from ChatGPT can be more contextual and relevant to the presented situation. \n\nNext, you would need to create the dialog instance via the editor and attach it to your NPC.  (The Udemy course describes how to build and use the dialog editor, which can be summarized by another section here in the future.)  The dialog editor has two type of nodes in the graph, both of which have static text belonging to the dialog: grey nodes and blue nodes.  The grey nodes represent text spoken by the NPC, while the blue nodes represent text spoken by the player.  With the enhancement provided by this project, there is now the possibility of a turqoise node, which has a placeholder for NPC text that will be supplied by ChatGPT during testing/gameplay.\n\nOnce the dialog graph has been created, it should resemble the following, with the leftmost node being the starting point and the dialog's graph flow proceeding to the right.  In this case, a grey [NPC node](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep01.png) starts the conversation, with the properties for the node appearing in the Inspector panel to the right.  This node is then followed by a blue [player node](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep02.png), which has its own text and properties to display.  And the subsequent node is a turquoise [ChatGPT node](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep03.png), which will be dynamically updated when we test the game by running it within the Unity editor:\n\n![Step 03](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep03.png)\n\n### Invocation of ChatGPT\n\nNow, when the game is run within the Unity editor and the dialog is fired, we will observe the following happen:\n\n⚔️ Guard: \"Allo, peasant.  Hmmm...I'll let you by if you answer one of me riddles.  Up for it, mate?\"\n![NPC Static](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep05.png)\n\n🧙‍♂️ Player: \"Go ahead, gov.  I'll take that challenge.\"\n![Player Static](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep06.png)\n\nAnd then the riddle will be dynamically provided by ChatGPT:\n![NPC Dynamic](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep07.png)\n\n### Keeping ChatGPT Results\n\nYou'll notice that once the riddle has been presented, the turquoise ChatGPT node (shown below in the dialog editor) is now updated with the riddle text provided by ChatGPT.  If we're not satisfied with the riddle provided, we can keep running the game within the editor and trying different ones.  Eventually, we should arrive at a satisfactory option and then keep the text by flipping the ChatGPT flag in the Inspector panel, turning the node into a static NPC (i.e., grey) node:\n\n![Keeping ChatGPT Results](https://github.com/jaerith/ChatGPTAssistedUnityDialogEditor/blob/main/Screenshots/RiddleStep08.png)\n\nWe can now repeat the process with other nodes in the DAG, letting ChatGPT assist with providing text for them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaerith%2Fchatgptassistedunitydialogeditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaerith%2Fchatgptassistedunitydialogeditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaerith%2Fchatgptassistedunitydialogeditor/lists"}