nape-js

Vollständig typisierte 2D-Physik-Engine für TypeScript & JavaScript — moderne Neuentwicklung von Nape

Starrkörper • Kreise, Polygone und Kapseln • Constraints • Flüssigkeitssimulation • Kollisions-Callbacks • Raycasting und räumliche Abfragen • Bruch • Soft Body über Constraints • Deterministischer Multiplayer • Serialisierung • Web-Worker-Unterstützung — ohne Abhängigkeiten, ~174 KB gzip.

v3.43.5 ~175 KB gzip
npm install @newkrok/nape-js

Interaktive Demos

Klicken/Ziehen auf der Leinwand zum Interagieren. Wähle unten eine Demo. Physik Spiel

Engine wird geladen…
FPS: — Bodies: — Step: —
Quellcode

Neueste komplette Spiele-Demos

Die neuesten Spiele mit mehreren Systemen auf der Engine — KI, Wellen, Kameras und 3D-Rigs, jeweils in einer Datei, die sich auf CodePen öffnen lässt.

Hitch & Park — gameplay screenshotSpielen →

Komplettes SpielHitch & Park

Ein Anhänger-Einparkspiel von oben: fünf Orte — Supermarkt, Parkdeck, Slipanlage im Hafen, Innenstadtstraße, Campingplatz —, jeweils mit einer markierten Lücke, in der der Anhänger landen muss, Nase nach außen, gerade und stehend. Geparkte Autos lassen sich verschieben (ihre Warnblinker verraten dich), Pylonen kippen um, Pfeiler, Hecken und Bäume rühren sich nicht; jeder Rempler kostet Punkte, die Uhr läuft gegen eine Richtzeit. ↑ ↓ fahren / zurücksetzen, ← → lenken, LEERTASTE bremsen, G Spurhilfe; auf Touch gedrückt halten und ziehen. Physik: das Auto ist eine Karosserie plus vier Radkörper — die hinteren an WeldJoints, die vorderen an PivotJoints, gelenkt von AngleJoints mit Ackermann-Winkeln —, und nur die Vorderräder treiben an, sodass die gelenkten Räder das Auto wirklich herumziehen; der Anhänger hängt an einem PivotJoint an der Kupplung und knickt ein, wenn du falsch zurücksetzt. In 3D: Orte mit Schatten, drehende und lenkende Räder, Brems- und Rückfahrlichter, ein Rückfahrkamera-Fenster.

GameplayFahrzeugJointsTop-downListenersMobil
Flipper Fray — gameplay screenshotSpielen →

Komplettes SpielFlipper Fray

Eine Flipper-Keilerei für vier Spieler: ein runder Tisch, vier Taschen, jede von einem Flipperpaar bewacht. Das Spielfeld ist eine Kuppel: alles rollt von der Mitte nach außen, also wird jede Kugel irgendwessen Problem; Bumper, Slingshots und Bahnpfosten schleudern die Kugeln herum, und jede Kugel, die an deinen Flippern vorbeikommt, kostet ein Leben — fünf Leben, die letzte verbliebene Tasche gewinnt, oder die meisten Leben nach drei Minuten. Du hältst die untere Tasche gegen drei KI-Keeper; Multiball wirft nach Plan Extrakugeln ein, und jede halbe Minute rollt eine Bombenkugel heraus — zwei Leben, wenn sie fällt, eine Explosion, wenn sie niemand schluckt. ← → / A D flippern, LEERTASTE beide; auf Touch die linke oder rechte Bildschirmhälfte gedrückt halten. Physik: die Flipper sind kinematische Körper, angetrieben über setVelocityFromTarget, sodass ein Schlag echte Winkelgeschwindigkeit in die Kugel überträgt; Kugeln sind Bullet-markierte Kreise, damit nichts durch die dünnen Ringwände tunnelt; Bumper- und Slingshot-Stöße sowie die Torgutschrift kommen über InteractionListener. In 3D eine Neon-Arena mit Chromkugeln, leuchtenden Taschen und Bahnlichtern, gesehen von hinter deiner eigenen Tasche.

GameplayPinballKIKinematicCCDListenersMobil
Swarm Night — gameplay screenshotSpielen →

Komplettes SpielSwarm Night

Ein Survivor-Roguelite nach Vampire-Survivors-Art: fünf Minuten auf einem umzäunten Friedhof, und du steuerst nur — jede Waffe feuert von selbst. Kills lassen XP-Edelsteine fallen; eine volle Leiste hält die Nacht an und bietet drei Upgrade-Karten aus sechs Waffen (Peitsche, Stab, Messer, Schild, Kugeln, Blitz) und acht Passiven. Sechs Monstertypen kommen nach Zeitplan, dazu stürmende Grabritter mit Schatz und um 4:00 ein Knochenkoloss, dessen Bodenschlag die ganze Menge wegwirft. Die Dämmerung um 5:00 ist der Sieg. WASD / Pfeile zum Laufen, 1 / 2 / 3 oder Klick für eine Karte; auf Touch irgendwo halten zum Steuern. Physik: bis zu 420 Monster sind dynamische Kreise in einem Space ohne Gravitation — die Horde drängt und fließt ohne Flocking-Code um die Steine; Rückstoß ist ein massenskalierter Impuls, und Geschosse, Messer, Speichel und Kugeln sind Sensorkörper, deren Treffer über InteractionListener mit Sensormasken-Seitenfilterung eintreffen. In 3D ein mondbeschienener Friedhof, in dem jedes Monster ein instanziertes Low-Poly-Rig ist.

GameplayRogueliteKIKameraSensorenLeistungMobil

Alle Spiele →

Warum nape-js?

nape-js ist eine der wenigen 2D-Physik-Engines für JavaScript und TypeScript, die Starrkörperdynamik, Gelenke (PivotJoint, DistanceJoint, WeldJoint, AngleJoint, MotorJoint, LineJoint, PulleyJoint, SpringJoint), Flüssigkeitsauftrieb, Bruch, aus Constraint-Netzen gebaute Soft-Body- und Stoffsimulation, Raycasting und konvexe Sweeps, einen eingebauten Character Controller, deterministisches Stepping für Multiplayer-Rollback, binäre Serialisierung, Replay-Aufzeichnung und eine Web-Worker-Brücke mitbringt — als einzelnes ESM-Paket (~174 KB gzip), mit vollständigen TypeScript-Typen und ohne DOM-Abhängigkeiten.

Suchst du eine Alternative zu Box2D, Matter.js, Planck.js oder Rapier? Führe den Benchmark im Browser aus, um sie direkt zu vergleichen, oder stürze dich in die interaktiven Beispiele — Physik-Demos und spielbare Mini-Games (Platformer, MOBA, Tower Defense, Slingshot, Pinball, Top-Down-Shooter).

Für KI-gestützte Entwicklung gebaut

Coding-Agents arbeiten am besten mit einer Bibliothek, die sie lesen, typprüfen und tatsächlich ausführen können. nape-js liefert alle drei.

llms.txt, ausgeliefert

Die gesamte API in einer Textdatei unter /llms.txt, dazu die vollständige Referenz unter /llms-full.txt — der entstehende Standard, um Doku an ein Modell zu geben. Gib deinem Agenten die URL, statt HTML zu scrapen.

Typen, denen das Modell trauen kann

Durchgängig handgeschriebenes TypeScript mit strict: true, ausgeliefert als generierte Deklarationen. Dein Agent bekommt echte Signaturen und TSDoc beim Hovern und erfindet dadurch seltener Methoden, die es nicht gibt.

Läuft headless in Node

Keine DOM-Abhängigkeiten: Ein Agent kann die Engine importieren, eine Simulation steppen und das Ergebnis im Terminal prüfen — ohne Browser, ohne Canvas, ohne Mocking.

Deterministisch, damit Tests halten

Mit space.deterministic = true liefern gleiche Eingaben auf derselben Plattform dasselbe Ergebnis. Ein vom Agenten geschriebener Regressionstest bleibt aus dem richtigen Grund grün.

Dokumentierte Fallstricke

Ein Anti-Pattern-Leitfaden und ein Troubleshooting-Leitfaden benennen die Fehler, die Modelle bei Physik-APIs am häufigsten machen.

Aufgabenorientierte Rezepte

Das Kochbuch ist nach Zielen gegliedert — Platformer, Ragdoll, Flüssigkeit, Replay — also genau in der Form, in der ein Prompt üblicherweise ankommt.

Benchmarks

Jetzt direkt in deinem Browser gemessen. Jeder Test führt den Physik-step() in einer engen Schleife aus und meldet die mittlere Zeit pro Step.

Drücke die Schaltfläche zum Starten.

Die API auf einen Blick

Kern

  • Space — Physikwelt
  • Body — Starrkörper
  • Vec2 — 2D-Vektor
  • AABB — Begrenzungsrahmen

Shapes

  • Circle — radiusbasiert
  • Polygon — konvexe Hülle
  • Capsule — abgerundete Enden
  • Polygon.box(w, h)

nape-js unterstützen

nape-js ist MIT-lizenziert und entsteht offen. Wenn es dir Zeit spart — oder dein Spiel darauf läuft — hält ein Sponsoring Demos, Guides und Releases am Laufen.