Zum Inhalt springen
Vuk Cvetković
SpieleErstellt:

AkkretionBeta

Lassen Sie einen Himmelskörper fallen. Zwei gleiche verschmelzen zum nächstgrößeren, vom Mond über die Planeten bis zur Sonne, und der Raum füllt sich, ob Sie bereit sind oder nicht.

Punkte0
Bestwert0
Als NächstesMond

Kein Platz mehr

Etwas liegt zu lange über der Linie. Hier gibt es keine Decke, nur eine Linie, und ein Körper, der darüber liegen bleibt, kann nirgendwo mehr hin.

Zum Zielen bewegen, zum Fallenlassen drücken. Mit den Pfeiltasten zielen, mit der Leertaste fallen lassen.

So wird gespielt

  1. Zielen, dann loslassen

    Oben entlang bewegen, um einen Körper auszurichten, und drücken, um ihn fallen zu lassen. Es kommen nur die fünf kleinsten, alles, was größer ist als die Erde, muss also erst gebaut werden.

  2. Zwei gleiche berühren sich und verschmelzen

    Man muss sie weder zusammendrücken noch festhalten: Sobald zwei gleiche Körper aneinander zur Ruhe kommen, werden sie zum nächstgrößeren, und landet das Ergebnis neben einem gleichen Körper, löst es eine Kette aus.

  3. In die Breite bauen, nicht in die Höhe

    Ein Körper, der auf einen hohen Haufen fällt, rollt und landet nicht dort, wohin gezielt wurde. Die großen unten zu halten ist der größte Teil des Spiels, denn sie können nirgendwo mehr hin.

  4. Die Linie ist eine Frist, keine Wand

    Nichts hindert einen Körper daran, über die Linie zu geraten. Vorbei ist es erst, wenn einer dort oben gelandet ist und eine halbe Sekunde später noch da liegt. Ein kurzes Hochspringen übersteht man, ein liegen gebliebener Jupiter nicht.

Wie es gebaut ist

Kein Canvas, keine Physikbibliothek und überhaupt keine Abhängigkeit. Ein Körper ist ein div mit border-radius, seine Farbe ein Verlauf im selben Stylesheet wie der Rest der Seite, und jeder Frame schreibt eine Transformation auf jeden einzelnen. Deshalb skalieren die Planeten mit der Seite, bleiben bei jedem Zoom scharf und müssen nicht extra geladen werden. Eine allgemeine Physik-Engine allein wäre fünfmal so groß wie dieses ganze Spiel.

Der Solver macht viele kleine Schritte statt weniger großer, acht pro Frame. In jedem Schritt wird jeder Kontakt als steife, stark gedämpfte Feder gelöst, die Körper bewegen sich, und dann wird jeder Kontakt noch einmal gelöst, diesmal starr, was die Geschwindigkeit wieder wegnimmt, die ihnen das Wegdrücken gegeben hat. So wird eine Überlappung korrigiert, ohne dass daraus ein Abprall wird, und ein ruhender Haufen liegt vollkommen still. Ein Kontakt wird schon erkannt, solange noch ein Spalt da ist, deshalb hält ein fallender Planet genau an der Oberfläche an, auf der er landet, statt einzusinken und wieder herausgedrückt zu werden.

Der Rest sorgt dafür, dass die Planeten schwer wirken und nicht federnd. Reibung wirkt zwischen den beiden Oberflächen, Drehung eingeschlossen, sodass ein rutschender Körper zu rollen beginnt. Eine harte Landung schluckt die Drehung, mit der ein Körper ankommt, sodass ein Planet, der einen anderen an der Schulter streift, neben ihm liegen bleibt, statt quer durch das Spielfeld zu rollen. Ein Stoß wird dort aufgezehrt, wo er passiert, und nie in den nächsten Schritt mitgenommen. Deshalb prallt ein großer Körper nicht von einem kleinen ab. Und ein Planet, der oben auf einem anderen balanciert, wird sofort heruntergeschubst: Das Gleichgewicht mag physikalisch stimmen, aber ein Planet, der wie ein Schneemann auf einem anderen steht, sieht aus, als hinge er fest.

Die Simulation läuft in ihrem eigenen Raum von 1200 mal 1650 Einheiten und weiß nie, wie groß sie angezeigt wird. Eine einzige Transformation auf einem Element skaliert das ganze Spielfeld auf die Breite, die ihm die Seite gibt, eine Größenänderung ändert also nur diese eine Zahl - keinen Radius, keine Position, keinen Schritt. Jeder Frame zeichnet jeden Körper interpoliert zwischen den letzten beiden Schritten, sodass ein 120-Hz-Bildschirm bei jeder Bildwiederholung eine neue Position bekommt. Der Himmel dahinter wird einmal beim Build der Website gezeichnet: dreihundert Sterne als Punkte auf wenigen Pfaden, Nebel aus fraktalem Rauschen und vier Ebenen, die beim Zielen unterschiedlich schnell mitgleiten.

Esc