Multiplayer-Fußball-Demo
Ein vollständiges Multiplayer-Fußballspiel live im Browser, gebaut mit Three.js und Node.js. Ohne Installation, zwölf Spieler zum Preis eines einzigen Draw Calls, Netcode mit rund 150 Byte pro Snapshot und KI-Gegner ohne Skript.
Ein vollständiges Multiplayer-Fußballspiel, gebaut mit Three.js und Node.js, sofort spielbar über einen Link, ohne Installation, ohne App-Store. Wir haben es als Härtetest für Echtzeit-3D im Browser entwickelt: Ein Zweikampf um den Ball verzeiht keine Verzögerung, die ein virtueller Messestand noch toleriert. Mit dem Parameter ?humans=0 öffnen Sie die Demo im Zuschauermodus und sehen den KI-Spielern beim Spielen zu.
Zwölf Spieler auf dem Feld bedeuten zwölf Draw Calls. Jeder Avatar wird zur Laufzeit aus Körper, Gesicht, Frisur, Bart, Trikot und Schuhen zu einem einzigen SkinnedMesh mit einem gemeinsamen 1024er Textur-Atlas gebacken. Ein Water-Filling-Algorithmus misst die tatsächliche Oberfläche jedes Teils und gewichtet sie nach Sichtbarkeit, sodass das Gesicht mehr Texel-Budget erhält als die Schuhe, ganz ohne von Hand gepflegtes UV-Layout. Das Ergebnis: über 100.000 sichtbar unterscheidbare Figuren zum gleichen Renderpreis. Jeder Spieler entsteht mit unserem Avatar Creator.
Ein kompletter Weltzustand ist rund 150 Byte groß: Positionen als int16 in Zentimetern, Blickrichtung als uint16, Animationszeit in Zentisekunden, gepackt in ein quantisiertes Binärformat statt JSON. Bei 30 Snapshots pro Sekunde bleibt das Spiel auch auf schwachem Mobilfunk spielbar. Der Node.js-Relay-Server reicht die Bytes unverändert weiter, die autoritative Simulation läuft im Browser des Hosts, nicht auf dem Server.
Die KI folgt keinem Skript. Jede mögliche Aktion, etwa Pressing, Decken, Dribbeln, Passen, Schießen, Freilaufen oder Flügelwechsel, bewertet sich selbst anhand von zehn Attributen, der taktischen Situation und der Persönlichkeit des Spielers. Die höchste Bewertung gewinnt. Sechs Archetypen, vom Aggressor bis zum Playmaker, gewichten diese Bewertung unterschiedlich, und ein Disziplin-Layer mit Hysterese verhindert, dass Verteidiger dem Ball aus der Position hinterherlaufen.