nape-js

Moteur physique 2D entièrement typé pour TypeScript et JavaScript — réécriture moderne de Nape

Corps rigides • Cercles, polygones et capsules • Contraintes • Simulation de fluides • Callbacks de collision • Raycasting et requêtes spatiales • Fracture • Corps mous via contraintes • Multijoueur déterministe • Sérialisation • Prise en charge des Web Workers — sans dépendances, ~195 Ko gzip.

~195 Ko gzip
npm install @newkrok/nape-js

Démos interactives

Cliquez/glissez sur le canvas pour interagir. Choisissez une démo ci-dessous. Physique Jeu

Chargement du moteur…
FPS : — Corps : — Step : —
Code source

Réalisé avec nape-js

Des jeux publiés qui tournent avec la physique de nape-js — jouez-y dans le navigateur ou récupérez la version native.

Vous avez publié quelque chose avec nape-js ? Ouvrez une issue et cela pourra figurer ici.

Pourquoi nape-js ?

nape-js est l'un des rares moteurs physiques 2D pour JavaScript et TypeScript à proposer la dynamique des corps rigides, des liaisons (PivotJoint, DistanceJoint, WeldJoint, AngleJoint, MotorJoint, LineJoint, PulleyJoint, SpringJoint), la flottabilité des fluides, la fracture, des corps mous et du tissu construits à partir de réseaux de contraintes, le raycasting et les balayages convexes, un contrôleur de personnage intégré, un pas de simulation déterministe pour le rollback multijoueur, la sérialisation binaire, l'enregistrement de replays et un pont Web Worker hors thread principal — dans un seul paquet ESM (~195 Ko gzip), avec des types TypeScript complets et sans dépendance au DOM.

Vous cherchez une alternative à Box2D, Matter.js, Planck.js ou Rapier ? Lancez le benchmark dans le navigateur pour les comparer directement, ou plongez dans les exemples interactifs — démos physiques et mini-jeux jouables (platformer, MOBA, tower defense, lance-pierre, flipper, shooter en vue de dessus).

Conçu pour le développement assisté par IA

Les agents de code travaillent mieux avec une bibliothèque qu'ils peuvent lire, typer et réellement exécuter. nape-js fournit les trois.

llms.txt, servi

Toute l'API dans un fichier texte à /llms.txt, plus une référence complète à /llms-full.txt — le standard émergent pour fournir la documentation à un modèle. Donnez l'URL à votre agent au lieu de scraper du HTML.

Des types fiables pour le modèle

Du TypeScript écrit à la main partout avec strict: true, livré sous forme de déclarations générées. Votre agent obtient de vraies signatures et la TSDoc au survol, et invente donc moins de méthodes inexistantes.

Fonctionne sans interface dans Node

Zéro dépendance au DOM : un agent peut importer le moteur, faire avancer une simulation et vérifier le résultat dans un terminal — sans navigateur, sans canvas, sans mock.

Déterministe, donc les tests tiennent

Avec space.deterministic = true, les mêmes entrées donnent le même résultat sur la même plateforme. Un test de régression écrit par un agent reste vert pour la bonne raison.

Pièges documentés

Un guide des anti-patterns et un guide de dépannage détaillent les erreurs que les modèles commettent le plus souvent avec les API physiques.

Des recettes par tâche

Le livre de recettes est organisé par objectif — plateforme, ragdoll, fluide, replay — c'est-à-dire la forme sous laquelle arrive généralement un prompt.

Benchmarks

Mesuré dans votre navigateur, en direct. Chaque test exécute le step() de la physique dans une boucle serrée et rapporte le temps médian par step.

Appuyez sur le bouton pour démarrer.

L'API en un coup d'œil

Cœur

  • Spacemonde physique
  • Bodycorps rigide
  • Vec2vecteur 2D
  • AABBboîte englobante

Formes

  • Circlebasée sur un rayon
  • Polygonenveloppe convexe
  • Capsuleextrémités arrondies
  • Polygon.box(w, h)