{"id":16987676,"url":"https://github.com/russelltg/dtree","last_synced_at":"2025-10-29T09:51:41.859Z","repository":{"id":57622115,"uuid":"120208435","full_name":"russelltg/dtree","owner":"russelltg","description":"Dialog tree parser \u0026 Executor","archived":false,"fork":false,"pushed_at":"2019-05-03T20:35:56.000Z","size":21,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-13T04:45:32.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/russelltg.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}},"created_at":"2018-02-04T17:52:10.000Z","updated_at":"2023-01-10T09:56:03.000Z","dependencies_parsed_at":"2022-09-26T20:10:33.702Z","dependency_job_id":null,"html_url":"https://github.com/russelltg/dtree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/russelltg/dtree","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russelltg%2Fdtree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russelltg%2Fdtree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russelltg%2Fdtree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russelltg%2Fdtree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/russelltg","download_url":"https://codeload.github.com/russelltg/dtree/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russelltg%2Fdtree/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265220412,"owners_count":23729807,"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":[],"created_at":"2024-10-14T02:50:31.968Z","updated_at":"2025-10-12T15:49:32.990Z","avatar_url":"https://github.com/russelltg.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dtree\nDialog tree parser and Executor\n\nDtree a file format, library, and command line utility for dialog trees.\n\n## Abstract \n\n![Dialog Tree](https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Dialog_tree_example.svg/399px-Dialog_tree_example.svg.png)\n\nDialog trees are a common occurence in video games, and it felt like a fun project to create an easy file format spec for these. \n\n## Terminology\n\nSection: A state that the dialog tree can be in. Designated by a box in the above picture.\n\nMapping: A text input required to go from one section to another\n\n## Syntax\n\nDefining a section:\n\n```\n[                      start                 ] Welcome to the game! What would you like to do?\n^ Text in brackets     ^ The name of the       ^ The text to show along with it\n  define what's being     Section to describe\n  described\n```\n\nDefining a mapping:\n\n```\n[ start                (to the house)                  -\u003ehouse                     ] Go to the house\n  ^ The section         ^ In parenthesis                 ^ The section               ^ The description for the mapping\n    that the mapping      is the text that the             to travel to if\n    starts at             player has to input              the text in \n                          to get to the next section       parenthesis is inputted\n\n```\n\n## Example\n\nFor example, the following dtree file `test/example.dtree`:\n\n```dtree\n[start] Welcome to this dtree file\n[start (gym)-\u003egym] Go to the gym\n[start (videogames)-\u003egames] Play videogames\n\n[gym] You made it to the gym! What a loser lol. Game over.\n\n[games] Which game would you like to play?\n[games (cs)-\u003ecs] Counter Strike\n[games (cod)-\u003ecod] Call of Duty\n\n[cs] Lmao what a shitty game. You got rekt. Game over.\n\n[cod] You have 12 year old noobs scream at you because of the size of your mother. Wonderful.\n```\n\nA possible playthrough of this could look like:\n\n```\n$ dtree test/example.dtree\nWelcome to this dtree file\n(videogames) Play videogames\n(gym) Go to the gym\n\u003e videogames\nWhich game would you like to play?\n(cod) Call of Duty\n(cs) Counter Strike\n\u003e cod\nYou have 12 year old noobs scream at you because of the size of your mother. Wonderful.\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frusselltg%2Fdtree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frusselltg%2Fdtree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frusselltg%2Fdtree/lists"}