{"id":49484235,"url":"https://github.com/snotbane/penny","last_synced_at":"2026-05-01T00:03:08.257Z","repository":{"id":258099428,"uuid":"851655332","full_name":"snotbane/penny","owner":"snotbane","description":"Penny is a simple yet powerful solution for scripting narrative text suitable for everything from basic NPC dialogue all the way up to full-featured visual novels.","archived":false,"fork":false,"pushed_at":"2026-04-21T13:17:09.000Z","size":2417,"stargazers_count":4,"open_issues_count":29,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-21T15:27:26.396Z","etag":null,"topics":["dialogue-systems","godot","renpy","visual-novel"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snotbane.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":"2024-09-03T13:43:34.000Z","updated_at":"2026-04-21T13:17:14.000Z","dependencies_parsed_at":"2024-11-10T22:27:08.572Z","dependency_job_id":"4576d8b9-1fd8-4bd7-ac39-443e5a6e558f","html_url":"https://github.com/snotbane/penny","commit_stats":null,"previous_names":["nulture/penny_godot","gnuckell/penny_godot","snotbane/penny_godot","snotbane/penny"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/snotbane/penny","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snotbane%2Fpenny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snotbane%2Fpenny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snotbane%2Fpenny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snotbane%2Fpenny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snotbane","download_url":"https://codeload.github.com/snotbane/penny/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snotbane%2Fpenny/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32480557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: 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-systems","godot","renpy","visual-novel"],"created_at":"2026-05-01T00:03:03.002Z","updated_at":"2026-05-01T00:03:08.251Z","avatar_url":"https://github.com/snotbane.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!WARNING]\n\u003e This addon is still under heavy development. Language syntax may change over time. If you wish to use this addon, please follow to be notified when a stable release is available.\n\u003e If you want to go ahead and start writing a story, who is stopping you?\n\n# Penny, a Narrative Scripting Language\n\nPenny is a coding language used to write interactive narrative content for video games. It is capable of, and appropriate for, handling any narrative demand, from short NPC dialogue or tutorials, all the way up to full visual novel decision trees.\n\n# Why?\n\nPenny's purpose is to provide a dedicated environment for writers to focus on front-end visuals, audio, and (most importantly) text. It is heavily inspired by the [Ren'Py](https://www.renpy.org/) engine. However, rather than being a fully-featured engine, Penny is designed to work along side a host engine. This is to separate visual details and most typical game code from narrative content.\n\n## Key Features\n\n### Subject Linking\n\nWhen a character talks, usually they will play some sort of animation (or multiple simultaneously) while they are speaking. Penny allows you to connect an existing character (or spawn an instance of one) and control their actions directly via Penny script. You can even call GDScript functions and update GDScript properties directly from Penny.\n\n### Regex Filtering\n\nWriting complex and heavily decorated text has never been simpler. One can create filters to apply to displayed text, to reduce technical clutter within the written text itself. For example:\n\n```pen\nSLOW_ELLIPSES = new filter\n\t.pattern = `\\.{3,}` # '...' or longer\n\t.replace = `\u003cspeed=0.33\u003e$1\u003c/\u003e`\n\nFANCY_DOUBLE_QUOTE_RIGHT = new filter\n\t.pattern = `(\\S)\"`\n\t.replace = `$1”`\n\nFANCY_DOUBLE_QUOTE_LEFT = new filter\n\t.pattern = `\"`\n\t.replace = `“`\n```\n\nThese and some other filters are built into Penny by default, and can be altered based on the needs of your project.\n\n### Object Inheritance\n\nData in Penny is stored in objects, which inherit attributes from other objects. One can even change an object's inheritance at any time.\n\n### Inline Translations\n\nProjects supporting multiple translations can write them altogether in the same file, for simple expansion during development or after project publication. The end user may easily switch languages at any time.\n\n```pen\nesther\n\u003e           Good morning, everyone!\n    [es]    Buenos dias a todos!\n    [ja]    みなさんおはようございます！\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnotbane%2Fpenny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnotbane%2Fpenny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnotbane%2Fpenny/lists"}