{"id":44782966,"url":"https://github.com/katbella/doodle-engine","last_synced_at":"2026-03-13T08:01:54.577Z","repository":{"id":338734335,"uuid":"1158920330","full_name":"katbella/doodle-engine","owner":"katbella","description":"A dialogue-driven engine for RPGs and narrative adventure games.","archived":false,"fork":false,"pushed_at":"2026-03-08T22:32:49.000Z","size":1205,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T03:53:31.444Z","etag":null,"topics":["dialogue","game-engine","gamedev","interactive-fiction","narrative","rpg","text-adventure","text-based","typescript"],"latest_commit_sha":null,"homepage":"https://doodleengine.dev/","language":"TypeScript","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/katbella.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T04:48:04.000Z","updated_at":"2026-03-08T22:32:20.000Z","dependencies_parsed_at":"2026-02-24T07:12:43.076Z","dependency_job_id":null,"html_url":"https://github.com/katbella/doodle-engine","commit_stats":null,"previous_names":["katbella/doodle-engine"],"tags_count":93,"template":false,"template_full_name":null,"purl":"pkg:github/katbella/doodle-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katbella%2Fdoodle-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katbella%2Fdoodle-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katbella%2Fdoodle-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katbella%2Fdoodle-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/katbella","download_url":"https://codeload.github.com/katbella/doodle-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katbella%2Fdoodle-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30462037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T06:34:02.089Z","status":"ssl_error","status_checked_at":"2026-03-13T06:33:49.182Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dialogue","game-engine","gamedev","interactive-fiction","narrative","rpg","text-adventure","text-based","typescript"],"created_at":"2026-02-16T08:28:00.348Z","updated_at":"2026-03-13T08:01:54.544Z","avatar_url":"https://github.com/katbella.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDoodle Engine\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eA dialogue-driven engine for RPGs and narrative adventure games.\u003c/p\u003e\n\n---\n\n## About\n\nDoodle Engine is an engine for building text-driven RPGs and adventure games. It focuses on dialogue, narrative flow, and world state rather than movement, combat, or pathfinding.\n\nIt is inspired by how the Infinity Engine (the engine powering Baldur’s Gate I and II, Icewind Dale, and Planescape: Torment) handled dialogue and scripting, but it is not tied to any specific ruleset or genre. The goal is to give writers and programmers a flexible foundation for story-heavy games.\n\nThe engine provides structured systems for dialogue, quests, inventory, characters, relationships, locations, journal entries, save/load, audio, video cutscenes, and localization.\n\n---\n\n## For Writers\n\nGames are written in plain text and YAML. No programming is required to build story content.\n\n- Dialogue written in a readable script format with speakers, choices, branching, conditions, and effects\n- World data in YAML: locations, characters, items, quests, and journal entries\n- Conditions based on flags, variables, items, quest stages, relationships, and time of day\n- Dice rolls for skill checks and random outcomes\n- Narrative interludes for chapter screens, dream sequences, and story moments\n- Localization using translation keys and locale files\n- Hot reload while writing\n- Validation that catches missing references and structural errors before you play\n\nThe focus is on letting writers iterate quickly.\n\n---\n\n## For Developers\n\nThe engine is written in TypeScript and built around a predictable state model.\n\n- Framework-agnostic core with no UI dependencies\n- One-way data flow where actions produce snapshots and renderers display them\n- React renderer with components for dialogue, choices, inventory, journal, map, and characters, plus a complete game shell\n- Asset preloading so images and audio are ready before they appear\n- Audio support for music, sound effects, and voice lines\n- Video cutscene playback\n- Dev tools exposed on `window.doodle` for testing and debugging\n- CLI for project scaffolding, development, builds, and validation\n\nThe architecture is meant to stay understandable as projects grow.\n\n---\n\n## Extensibility\n\nThe core engine does not assume a renderer or UI framework. You can build your own renderer or replace parts of the provided one.\n\nEffects and conditions are composable building blocks. They can be combined to create systems such as reputation, skill checks, shops, or other mechanics without changing the engine itself.\n\n---\n\n## Quick Start\n\n```bash\nnpx @doodle-engine/cli create my-game\ncd my-game\nnpm install\nnpm run dev\n```\n\n---\n\n## Packages\n\n| Package                | Description                                    |\n| ---------------------- | ---------------------------------------------- |\n| `@doodle-engine/core`  | Engine state, parsing, conditions, and effects |\n| `@doodle-engine/react` | React components and hooks                     |\n| `@doodle-engine/cli`   | Dev server, scaffolding, builds                |\n\n---\n\n## Documentation\n\nhttps://doodleengine.dev/\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatbella%2Fdoodle-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkatbella%2Fdoodle-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatbella%2Fdoodle-engine/lists"}