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 • Lancer de rayons et requêtes spatiales • Fracture • Corps souple • Multijoueur déterministe • Sérialisation • Prise en charge des Web Worker — tree-shakeable, zéro dépendance, ~27 KB 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

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.

Pourquoi nape-js ?

nape-js est l'un des rares moteurs physiques 2D pour JavaScript et TypeScript à proposer la dynamique des corps rigides, des jointures (PivotJoint, DistanceJoint, WeldJoint, AngleJoint, MotorJoint, LineJoint, PulleyJoint, SpringJoint), la flottabilité fluide, la fracture, le corps souple, le lancer de rayons et les balayages convexes, un contrôleur de personnage intégré, un pas déterministe pour le rollback multijoueur, la sérialisation binaire, l'enregistrement de replay et un pont Web Worker hors thread — le tout dans un unique bundle ESM tree-shakeable (~27 KB gzip), avec des types TypeScript complets et zéro 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).

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)