PunyInformDE is a German localisation of PunyInform (a lightweight Inform 6 game library). It extends PunyInform with German-native article declension, grammatical case handling (nominative/accusative/dative), and German pronoun resolution (er/sie/es/ihnen) for creating interactive fiction in German.
Designed for: Inform 6 authors writing German-language IF who want automated support for German grammar, without manual article/case annotation.
Features:
- German article system (automatic declension from gender attributes)
- German pronoun substitution (er/ihn/ihm, sie/ihnen, es)
- Adjective case/gender agreement in library messages
- Unicode and ASCII (digraph) build variants
- Runnable example game (Das Schiff der Sterne)
- Comprehensive test suite with pytest
example/sterne.inf demonstrates:
- article/case handling (Nom/Akk/Dat)
- German pronoun resolution (er/ihn/ihm/sie/es/ihnen)
- adjective input variants (kleinen, altem, feinem)
- adjective output declension in library messages
lib/ PunyInformDE library (globals.h, puny.h, de/*)
example/ Example game source (sterne.inf)
build/ Compiled story files (generated by build.ps1)
tests/ Pytest test suite
tools/ inform6 compiler, dfrotz, Lectrote
docs/ Architecture and grammar documentation
For tests, clone PunyInformDE and PunyTest side by side:
C:\Source\PunyInformDE
C:\Source\PunyTest
Example clone commands:
git clone https://github.com/IkeC/PunyInformDE.git C:\Source\PunyInformDE
git clone https://github.com/IkeC/PunyTest.git C:\Source\PunyTestPass both lib/ and lib/de/ as include paths. lib/ is needed for the
top-level library files (globals.h, puny.h, …); lib/de/ is needed so that
Include "chartable_de.h" and the internal Include "globals_de.h" etc. can be
resolved without a de/ prefix.
# Windows — from the project root:
tools\inform6.exe +include_path=lib,lib\de example\sterne.inf build\sterne.z5# Linux / macOS — from the project root:
tools/inform6 +include_path=lib,lib/de example/sterne.inf build/sterne.z5If you copy the library to a different location, the same rule applies — point
+include_path= at the folder that contains globals.h and the de/
sub-folder, and add the de/ sub-folder as a second entry.
The VS Code "Build" task runs the full build script (Unicode + ASCII + Z3 builds, transcript generation) in one step:
powershell -ExecutionPolicy Bypass -File .vscode\build.ps1Or press Ctrl+Shift+B inside VS Code.
The build script produces:
build/sterne.z5— Unicode buildbuild/sterne.ascii.z5— ASCII (digraph) buildbuild/sterne.z3— Z3 buildbuild/sterne.transcript.txt/…ascii.txt/…z3.txt— auto-generated transcripts
tools\dfrotz.exe build\sterne.z5Requires PunyTest cloned next to this repository (see Repository Layout below):
.venv\Scripts\python.exe -m pytest tests/ -vFor implementation details, architecture, algorithm decisions, and known limits, see:
- docs/Implementation.md
For design analysis and rationale history, see:
- docs/Grammar.md
PunyInform — The lightweight Inform 6 library that PunyInformDE is built on. Created and maintained by J. Berntsson, F. Ramsberg and contributors.
Deform — The Inform 6 library extension framework which many grammatical solutions have been lifted from. Created by M. Oehm and contributors.
Original PunyInformDE Fork — The initial German localisation work done in 2023 by L. Santner and A. Pulvermacher.
Many other authors have contributed to the underlying base of this solution. If you feel anyone is missing, please let me know.
Don't be shy, please contribute to this project if you can! Feel free to open PRs or open an issue.
The main hub for discussion outside this repo is the PunyInformDE thread on the IFWizz forums, the central meeting point for the German interactive fiction community.