Novemade
Alle Experimente

Einen Solver ausleihen, statt die Regeln neu zu schreiben

Wenn eine Demo die Logik eines Produkts braucht: Ist es sicherer, den echten Code zu übernehmen, als eine vereinfachte Fassung davon neu zu schreiben?

EXPERIMENT

·

Eine Browser-Demo setzt normalerweise genau so viel vom Produkt neu um, dass es richtig aussieht. Das ist in Ordnung, bis der interessante Teil des Produkts eine Regel ist, die leicht zu beschreiben und schwer richtig zu bekommen ist — und in diesem Moment liefert die Neufassung stillschweigend eine schlechtere Version dessen aus, was beworben wird.

Glow Garden ist genau dieser Fall. Seine Regel liest sich wie ein Rätsel-Klischee: ein Glühwürmchen pro Zeile, pro Spalte, pro farbiger Region, keines berührt ein anderes. Aber das Spiel prüft Platzierungen nicht gegen diese Regeln. Es fragt einen Solver, ob das Brett noch vollendet werden kann, und verweigert die Berührung, wenn nicht. Das heißt, eine Platzierung kann isoliert zulässig und trotzdem abgelehnt sein, und genau das lässt das Spiel fair statt willkürlich wirken — und es ist genau die Feinheit, die eine Neufassung plattgedrückt hätte.

Statt neu zu schreiben, wurde der Regelkern also unverändert aus der App kopiert, sein Hash festgehalten und eine typisierte Grenze davor gesetzt, damit der Build bricht, falls das Original jemals abdriftet. Dasselbe Vorgehen funktionierte danach für die Schablonenfunktion von Veyra.

Was wir gelernt haben

Erkenntnisse bis jetzt.

  1. 01

    Der Teil, der es wert ist, kopiert zu werden, ist selten der Teil, der kompliziert aussieht. Es ist der Teil, bei dem eine plausible Neuumsetzung auf feine Weise falsch wäre und niemand es merken würde.

  2. 02

    Übernahme braucht eine Grenze, nicht nur eine Kopie. Eine handgeschriebene, typisierte Oberfläche vor dem geliehenen Code ist das, was „es ist abgedriftet“ von einer stillen Verhaltensänderung in einen gescheiterten Build verwandelt.

  3. 03

    Es funktioniert nur dort, wo die Logik schon rein ist. Beide Stücke, die sich sauber verpflanzen ließen, hatten keine Importe und kein Framework darunter, und das ist eine Eigenschaft, die man bekommt, indem man sie so schreibt, nicht indem man sie sich später wünscht.

  4. 04

    Ein festes Brett braucht trotzdem die Garantie des echten Generators. Das Demo-Brett wurde mit dem eigenen Solver der App gesucht, bis eines mit genau einer Lösung auftauchte, statt von Hand gezeichnet und gehofft zu werden.

In Aktion sehen

Die Regelprüfung ist Glow Gardens eigener Code, unverändert übernommen, einschliesslich des Solvers, der jede Platzierung ablehnt, die das Brett unlösbar machen würde. Das Brett ist fest statt erzeugt und wurde mit genau diesem Solver gesucht, bis eines mit exakt einer Lösung auftauchte.