Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PunyInformDE

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 Game "Das Schiff der Sterne"

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

Repository Layout

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\PunyTest

Quick Start

1. Compile a game

Pass 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.z5

If 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.

2. Use the VS Code build task

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.ps1

Or press Ctrl+Shift+B inside VS Code.

The build script produces:

  • build/sterne.z5 — Unicode build
  • build/sterne.ascii.z5 — ASCII (digraph) build
  • build/sterne.z3 — Z3 build
  • build/sterne.transcript.txt / …ascii.txt / …z3.txt — auto-generated transcripts

3. Run the game

tools\dfrotz.exe build\sterne.z5

4. Run tests

Requires PunyTest cloned next to this repository (see Repository Layout below):

.venv\Scripts\python.exe -m pytest tests/ -v

Where To Read More

For implementation details, architecture, algorithm decisions, and known limits, see:

  • docs/Implementation.md

For design analysis and rationale history, see:

  • docs/Grammar.md

Acknowledgements

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.

Contribute

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.

About

PunyInformDe

Resources

Stars

4 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages