nape-js

Motor de física 2D totalmente tipado para TypeScript y JavaScript — reescritura moderna de Nape

Cuerpos rígidos • Círculos, polígonos y cápsulas • Restricciones • Simulación de fluidos • Callbacks de colisión • Raycasting y consultas espaciales • Fractura • Cuerpo blando mediante restricciones • Multijugador determinista • Serialización • Compatible con Web Worker: sin dependencias, ~195 KB gzip.

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

Demos interactivas

Haz clic o arrastra sobre el lienzo para interactuar. Elige una demo abajo. Física Juego

Cargando el motor…
FPS: — Cuerpos: — Paso: —
Código fuente

Hecho con nape-js

Juegos publicados que funcionan con la física de nape-js: pruébalos en el navegador o consigue la versión nativa.

¿Has publicado algo con nape-js? Abre un issue y podrá aparecer aquí.

¿Por qué nape-js?

nape-js es uno de los pocos motores de física 2D para JavaScript y TypeScript que incluye dinámica de cuerpos rígidos, uniones (PivotJoint, DistanceJoint, WeldJoint, AngleJoint, MotorJoint, LineJoint, PulleyJoint, SpringJoint), flotabilidad de fluidos, fractura, cuerpos blandos y telas construidos con redes de restricciones, raycasting y barridos convexos, un controlador de personaje integrado, paso determinista para rollback multijugador, serialización binaria, grabación de repeticiones y un puente Web Worker fuera del hilo principal, como un único paquete ESM (~195 KB gzip), con tipos de TypeScript completos y sin dependencias del DOM.

¿Buscas una alternativa a Box2D, Matter.js, Planck.js o Rapier? Ejecuta el benchmark en el navegador para compararlos cara a cara, o entra directo a los ejemplos interactivos — demos de física y mini-juegos jugables (plataformas, MOBA, tower defense, resortera, pinball, shooter cenital).

Pensado para el desarrollo asistido por IA

Los agentes de programación funcionan mejor con una biblioteca que puedan leer, comprobar de tipos y ejecutar de verdad. nape-js ofrece las tres cosas.

llms.txt, servido

Toda la API en un archivo de texto en /llms.txt, más una referencia completa en /llms-full.txt: el estándar emergente para pasar documentación a un modelo. Dale la URL a tu agente en lugar de raspar HTML.

Tipos en los que el modelo puede confiar

TypeScript escrito a mano en todo el proyecto con strict: true, distribuido como declaraciones generadas. Tu agente obtiene firmas reales y TSDoc al pasar el cursor, así que inventa menos métodos inexistentes.

Se ejecuta sin interfaz en Node

Cero dependencias del DOM: un agente puede importar el motor, avanzar una simulación y comprobar el resultado en la terminal, sin navegador, sin canvas y sin mocks.

Determinista, para que las pruebas aguanten

Con space.deterministic = true, las mismas entradas dan la misma salida en la misma plataforma. Una prueba de regresión escrita por un agente sigue en verde por el motivo correcto.

Errores documentados

Una guía de antipatrones y una guía de resolución de problemas detallan los fallos que los modelos cometen más a menudo con las API de física.

Recetas por tarea

El recetario está organizado por objetivos —plataformas, ragdoll, fluidos, repeticiones—, que es la forma en la que suele llegar un prompt.

Benchmarks

Medido en tu navegador ahora mismo. Cada prueba ejecuta el step() de física en un bucle cerrado e informa la mediana del tiempo por paso.

Presiona el botón para comenzar.

La API de un vistazo

Núcleo

  • Spacemundo físico
  • Bodycuerpo rígido
  • Vec2vector 2D
  • AABBcaja envolvente

Formas

  • Circlebasada en radio
  • Polygonenvolvente convexa
  • Capsuleextremos redondeados
  • Polygon.box(w, h)