Skip to content

ls -lt posts/

Atlantis PbeM Rewritten

How do you port a grown legacy codebase with an AI agent without ending up with something that only looks like the original? Using the engine of Atlantis PbeM (a turn-based strategy game played by email, written in C++ since 1998), Claude Code builds a Python port: faithful rather than reinvented, measured by porting coverage, equivalence rate, and performance ratio. Atlantis PbeM is the example, not the topic: every part should give you something you can apply to your own legacy project.

Atlantis PbeM neu geschrieben (Teil 1): Warum eine Engine aus den 90ern ein neues Fundament bekommt

Only available in German.

Legacy-Code ist nicht alter Code, sondern Code, den niemand mehr gern anfasst. Teil 1 erklärt, warum die Engine von Atlantis PbeM mit Claude Code nach Python wandert, warum „treu portieren" vor „neu erfinden" kommt – und wie das Projekt aufgesetzt ist, bevor die erste Zeile Spiellogik entsteht.

ai python tooling

Atlantis PbeM neu geschrieben (Teil 3): Das Vergleichs-Harness, oder: Wem traust Du, wenn Du "gleich" sagst?

Only available in German.

Bevor die erste Zeile portiert wird, braucht der Port einen Richter: ein Harness, das die C++-Referenz auf festen Szenarien spielt und Verhalten statt Formatierung vergleicht. Teil 3 zeigt, wie es entsteht und warum es sich erst gegen die Referenz selbst beweisen muss.

ai python testing tooling

Atlantis PbeM neu geschrieben (Teil 5): Von globalen Arrays zu Datenmodellen

Only available in German.

5.166 Zeilen C++-Tabellen, vier Enums, die nur per Position dazu passen, und ein Regelwerk, das alles in place umbaut. Teil 5 zeigt, wie die Spieldaten aus der Referenz gedumpt, generiert und gegen sie geprüft werden – und was eine -2 in den Fixtures verriet.

ai python testing

Atlantis PbeM neu geschrieben (Teil 6): Das Regelbuch, Byte für Byte

Only available in German.

Eine 5.000-Zeilen-Funktion schreibt das Regelbuch von Atlantis PbeM als HTML. Teil 6 portiert sie Kapitel für Kapitel gegen die Referenz – und landet bei 230.407 Bytes, die sich bis auf das Datum nicht vom Original unterscheiden.

ai python testing