7 Punkte von gogoj2 2026-01-19 | 14 Kommentare | Auf WhatsApp teilen

Im Sommer 2004, als ich meine letzten Monate beim Militär verbrachte, überlegte ich, womit ich meine freie Zeit füllen könnte, und begann damit, ein Spiel zu konzipieren. Mein jüngerer Bruder studierte damals Game-Grafikdesign, und ich dachte, es wäre schön, nach meiner Entlassung gemeinsam etwas zu bauen. (Ach ja … ich bin ein ganz normaler Geisteswissenschaftler. Technisches Wissen habe ich praktisch keines.)

Weil es ein Amateurprojekt war, wollte ich etwas Kleines und Einfaches machen. Als Grundlage nahm ich eines der zugänglichsten Spiele überhaupt, Breakout (Arkanoid), und ergänzte es um eine neue Wettkampfmechanik. Zwar hatten bereits unzählige Menschen neue Versionen dieses Spiels veröffentlicht, aber eine wie meine schien es nicht zu geben.

Nach meiner Entlassung stellte ich mit meinem Bruder und seinen Freunden voller Ehrgeiz ein Team zusammen, doch schon bald hatte jeder seine eigenen Umstände, und das Team zerfiel schnell wieder. Ich dachte, ich würde es bei nächster Gelegenheit umsetzen, aber diese Gelegenheit kam nicht mehr. Die Jahre vergingen, und auch während meines Berufslebens musste ich gelegentlich daran denken. Selbst in einer Phase, in der ich kurz versuchte, Python zu lernen, hatte ich es mir als Ziel gesetzt, aber für mich war das eine viel zu schwierige Aufgabe.

So verging weiter die Zeit, und dann, noch einmal über 20 Jahre später, im letzten Sommer, war ich nach einem Meeting mit einigen Unternehmensvertretern beim Abendessen. Sie sagten alle, dass man mit AI inzwischen unglaublich viel bauen könne, und dass sie am liebsten noch einmal gründen würden. Das hat mich an diesem Tag inspiriert. Als ich nachts nach Hause kam, installierte ich Claude Code, von dem ich bis dahin nur gehört hatte. Und zwei Stunden später … bam!!

Ich überlegte, womit ich Claude Code als erstes Projekt beauftragen sollte, ging meine Idee von vor 20 Jahren noch einmal durch und formulierte den Auftrag. Etwa zwei Stunden später sah ich vor meinen Augen Paddel und Ball in Bewegung, wie sie Steine zerbrachen. Dieses Gefühl damals! Solche Erfahrungsberichte gibt es inzwischen ja überall, also dürfte das nichts Ungewöhnliches mehr sein, aber ein halbes Jahr später kann ich mir ein Leben ohne Claude Code nicht mehr vorstellen.

Das Spiel habe ich seitdem Stück für Stück weiter verfeinert, und inzwischen ist es wenigstens auf einem Niveau, bei dem ich sagen kann: Das ist eine Demo. Also fasse ich mir ein Herz und veröffentliche es. Und dann auch noch hier auf GeekNews, wo ich sonst immer nur still mitgelesen habe!! Ursprünglich war es als Zwei-Spieler-Wettkampfspiel gedacht, aber Multiplayer-Funktionen waren für mich eine viel zu hohe Hürde, deshalb habe ich es als Spiel gegen den Computer umgesetzt.

Kurz vorgestellt:

  • Es ist für den Computer gedacht. Mobile Geräte werden noch nicht unterstützt.
  • Es ist ein Breakout-Spiel, bei dem zwei Spieler im selben Raum Rücken an Rücken gegeneinander spielen. Wer zuerst alle Steine zerstört, gewinnt.
  • Wenn ich den Ball verpasse, wechselt er in den Bereich des Gegners. Wenn der Gegner ihn verpasst, kommt er wieder zu mir.
  • Es enthält physikalische Konzepte aus der realen Welt wie Gewicht, Aufprall, Beschleunigung und Trägheit. Es ist schwieriger, als man denkt.
  • Da es eine Demo-Version ist, kann man nach jeder einzelnen Partie einfach neu starten und weiterspielen.
  • Wie früher in der Spielhalle kann man seinen Namen verewigen, wenn man einen Rekord aufstellt.

Ein paar Lektionen aus dem Entwicklungsprozess:

  • Refactoring! Refactoring! Refactoring!
  • Ich habe verstanden, was mit dem oft zitierten Refactoring gemeint ist, und begann zu glauben, dass es unter allen Formen der Hölle vielleicht tatsächlich eine Refactoring-Hölle geben könnte.
  • Anfangs war ich voller Träume, stellte mir Battle.net vor, zerteilte alles in immer mehr Funktionen und blähte das Projekt auf. Am Ende musste ich in einer Flut von Bugs alles zurücksetzen, wieder zerlegen und wieder zusammenfügen … das war noch vor Opus 4.5.
  • Schon beim Bau dieser kleinen Sache wurde mir klar, wie großartig Programmiererinnen und Programmierer sind, und ich habe großen Respekt vor ihnen entwickelt.

Zum Glück kenne ich inzwischen meine Grenzen etwas besser, zerlege die Arbeit in kleine Einheiten, erstelle Workflow-Dokumente und achte sorgfältig auf Entwicklungslogs und Git-Commits. Der größte Gewinn ist aber, dass ich jetzt unglaublich viele Dinge ausprobieren möchte. Ich zerbreche mir fleißig den Kopf darüber, wie ich Werkzeuge, die ich bei der Arbeit brauche, selbst bauen kann.

Bei diesem Spiel weiß ich allerdings noch nicht, was ich damit machen soll. In meiner aktuellen Situation ist eine richtige Weiterentwicklung schwer, aber einfach begraben möchte ich es auch nicht. Ich hoffe, dass es ein Spiel werden kann, an dem Kinder Freude haben.

Ich lerne immer viel aus den Beiträgen auf GeekNews und lese hier alles mit großer Dankbarkeit. Vielen Dank.

14 Kommentare

 
colus001 2026-01-22

Das Konzept ist interessant, aber das Spielgefühl bei der Steuerung ist viel zu schlecht. Ich glaube nicht, dass es eine gute Idee ist, bei so einem Spiel Trägheit auf die Steuerung anzuwenden. Das scheint mir ein anderes Thema zu sein als der Schwierigkeitsgrad.

 
gogoj2 2026-01-28

Vielen Dank für Ihr Feedback. Ich habe über den angesprochenen Punkt nachgedacht und die Trägheit auf die Hälfte reduziert, damit sich das Spiel etwas leichter steuern lässt. Zuerst stand für mich das physikalische Konzept im Vordergrund, das ich mir vorgestellt hatte, aber dadurch habe ich auch angefangen, intensiver darüber nachzudenken, wie sich das Spiel steuern lassen sollte und wie man mit Kollisionen umgehen sollte. Ich werde weiter daran arbeiten und es nach und nach verbessern. (Da mein Hauptjob zuletzt sehr arbeitsintensiv war, hat sich die Umsetzung verzögert.)

 
gogoj2 2026-01-20

Wer FURY ist … jemand hat einen unglaublich hohen Punktestand hinterlassen.;;

 
bsh998 2026-01-20

Es gibt physikalische Konzepte aus der realen Welt wie Gewicht, Stoß, Beschleunigung und Trägheit. Es ist schwieriger als gedacht.

Die Formulierung vermittelt den Eindruck, dass das Verständnis für Spielphysik eher gering ist; es wäre gut, sie etwas zu überarbeiten.

 
cucumber9 2026-01-20

Bitte feilen Sie selbst noch etwas daran, haha, und machen Sie sich vor Geisteswissenschaftlern nicht wichtig.

 
gogoj2 2026-01-20

Danke, dass du dir Sorgen um das Herz eines Geisteswissenschaftlers machst. Haha ^^

 
bsh998 2026-01-20

Der Grund, warum ich Ihnen beim Formulieren nur schwer helfen kann, ist, dass ich den von Ihnen erstellten Code nicht gesehen habe und daher nicht weiß, auf welche Weise Sie die Physik-Engine implementiert haben.

 
bsh998 2026-01-20

Ich entschuldige mich dafür, dass ich eine unerwünschte Anmerkung gemacht habe.
Viele Leute betreiben Produktwerbung, und ich hinterlasse oft einen Kommentar, wenn sie mit AI werben oder unpassende Erklärungen hinzufügen. Es war kein Kommentar, den ich geschrieben habe, um jemanden zu verärgern.

 
gogoj2 2026-01-20

Vielen Dank für Ihr Interesse. Ich habe mich überhaupt nicht unwohl gefühlt. Für Ratschläge bin ich immer dankbar. Eher habe ich nicht verstanden, was genau an welcher Stelle verbessert werden sollte, daher würde ich mich freuen, wenn Sie das etwas genauer erläutern könnten.

Um das mit der realistischen Physik näher zu erklären: Solche Spiele setzen in der Regel nur eine sehr einfache Kollisionserkennung und Reflexion um. Ich wollte aber, dass man – ähnlich wie bei einem echten Flipperspiel – beim Zusammenstoß von Ball und Steinen die Kollisionsenergie durch tatsächliches Gewicht und Geschwindigkeit spürt. Deshalb habe ich statt einer typischen Game-Library nach etwas Präziserem gesucht und bin auf Planck.js gestoßen. Ich habe dargestellt, dass Steine, wenn sie vom Ball getroffen werden, durch den Aufprall weggedrückt werden und sich drehen. Außerdem kann man in den Einstellungen Dinge wie das Gewicht des Balls, das Gewicht der Steine, die Dämpfung der Kollisionsenergie und den Widerstand verändern, sodass je nach Konfiguration ein anderes Spielerlebnis entsteht.
(Es gibt eine Einstellung, die ich „Crazy Mode“ nenne: Wenn man das Gewicht des Balls auf das Maximum erhöht und das Gewicht der Steine auf das Minimum senkt, wird das Spiel sehr dynamisch.)

Der Code ist auch auf GitHub.
https://github.com/gogodevelop2/mirror-breakout

 
bsh998 2026-01-20

Ja, um einen Kommentar dazu zu geben: Zunächst scheint es, als hätten Sie mehr Aufwand in das Kollisionsdesign und die Einstellung des Rückprallkoeffizienten investiert. Insbesondere werden die Kollisionen jeweils anhand der einzelnen Massen und Rückprallkoeffizienten berechnet und ausgelöst. Wenn ich auf die Punkte eingehe, die sich von Ihrer eigentlichen Zielsetzung unterscheiden,

wirken Dinge wie die Masse oder Geschwindigkeit von paddle oder brick letztlich nur auf den Impuls des ball. Im Kern ist es daher eher so, dass Sie das Kollisionsverfahren von einem physikalischen Modell inspiriert haben und die Kollisionen zwischen Ball und (brick, paddle, Wand) jeweils unterschiedlich implementiert haben.

Daher erscheint es sinnvoller, nicht von realer Physik zu sprechen, sondern zu erklären, dass Sie Elemente einer Physik-Engine übernommen haben, um Kollisionen und Impulsänderungen dynamisch zu gestalten.

Vor allem haben Sie Änderungen des Impulses, die dadurch entstehen, dass der Kollisionsprozess unrealistisch ist, als Geschwindigkeitskorrektur angewendet. Das könnte sich in Bezug auf das Spielgefühl einerseits wie ein versteckter Mechanismus anfühlen, andererseits aber auch ziemlich unfreundlich wirken.

 
bsh998 2026-01-20

Etwas einfacher ausgedrückt:
Es wurden zwar physikalische Formeln und Berechnungsmethoden verwendet, im Ergebnis ist es jedoch ein unrealistisches
Modell, und es wurden viele Korrekturen eingebaut, um die in den unrealistischen Teilen auftretenden Probleme spielerisch zu verhindern (unendliche Geschwindigkeit, Stillstand, Richtungssteuerung usw.).

 
gogoj2 2026-01-20

Vielen Dank für die ausführliche Erklärung. Ich habe es gut verstanden. Da ich zum ersten Mal ein Spiel entwickle, kannte ich mich in der Welt der Spielphysik und mit der angemessenen Verwendung der Begriffe nicht gut aus, weshalb ich es wohl so formuliert hatte, dass Missverständnisse entstehen konnten. Nach Ihrer Erklärung verstehe ich nun ein wenig besser, mit welchem Anspruch Menschen aus der Praxis auf solche Ergebnisse blicken. Ich habe noch nicht herausgefunden, wie man den Haupttext bearbeitet … ich werde mich informieren und ihn korrigieren. Vielen Dank.

 
[Dieser Kommentar wurde ausgeblendet.]
 
gogoj2 2026-01-20

Vielen Dank. :) Ich werde auch Ihr Hobby unterstützen!