RNG ⚭ Sweeper

Aktualisiert nach dem dritten Rewrite

Lernen aus Fehlern

Screenshot von Sweeper mit angezeigtem Seed

Das server-lose Multiplayer-Konzept von Slider Race, bei dem alle Spieler:innen, die in der selben Minute den Browser neu laden, die selbe Aufgabe bekommen, besticht in seiner Effektivität und Einfachheit.

Nimmt man die Basis des seeded random number generator und spinnt den Gedanken für Sweeper weiter, ergeben sich gleich zwei spielerische Möglichkeiten:

  • Wettkampf: Wer kann das selbe Board schneller lösen?
  • Lernen aus Fehlern: Das selbe Board noch einmal versuchen.

Die Option, sich den Seed bei Spiel-Ende zu behalten und noch einmal das selbe Board zu generieren, ist genau eine Code-Zeile einfacher als zusätzlich einen neuen Seed aus dem Zeitstempel zu generieren.

Wer hat sich bei Mine Sweeper nicht schon einmal gedacht „Verflixt, das Andere!“, nur bekommt man nicht die Möglichkeit es anders zu probieren, denn das Spiel ist vorbei. Die Möglichkeit das selbe Board noch einmal zu spielen, nimmt daher auch den Frust aus den Situationen, in denen man scheinbar mit Logik gewisse Konstellationen nicht lösen kann und raten muss.

Nachdem Sweeper recht schnell vorbei sein kann, besitzt die Lösung mit dem minutengenauen Zeitstempel nur einen Schönheitsfehler: Wer zu schnell gewinnt oder verliert bekommt innerhalb der selben Minute auch bei einem „frischen Start“ das selbe Board.

Viel Spaß mit der „Multiplayer“-Erweiterung und dem für Smartphones „aufrecht“ stehenden Board von Sweeper!

Nachtrag zu den Portierungen

Sweeper hat nun das dritte Rewrite hinter sich.

Geboren wurde der Mine Sweeper-Klon als React App. Das Schönste daran war, den rekursiven Algorithmus zum Aufdecken von freien Feldern zu entwickeln. Das Schlimmste daran war React.

Der erste komplette Rewrite mit Stencil war hauptsächlich als Fingerübung gedacht, um sich mit der Bibliothek anzufreunden. Obwohl das Prinzip funktionierte, war die Performance behäbig und das Redraw-Handling schrecklich. Die Umsetzung des Viewport-abhängigen Resizing gestaltete sch als schmerzhaft und hat ungefähr so viel Aufwand verursacht, wie die eigentliche Portierung.

Der Vue-Rewrite war dagegen überaus angenehm. Vite verursachte fast schon feuchte Augen, die Kombination aus ESLint, TypeScript und Prettier machte Spaß und die Premiere, die App über GitLab CI zu bauen und direkt mit GitLab Pages zu veröffentlichen, war ein Grund zum Feiern.

Erstellt: 29.06.2022Aktualisiert: 04.06.2023
v10.1.0 - © 2024?