nape-js

Teljesen típusozott 2D fizikai motor TypeScripthez és JavaScripthez — a Nape modern újraírása

Merev testek • Körök, sokszögek és kapszulák • Kényszerek • Folyadékszimuláció • Ütközési visszahívások • Sugárkövetés és térbeli lekérdezések • Törés • Lágy test kényszerekkel • Determinisztikus többjátékos mód • Szerializálás • Web Worker támogatás — függőségmentes, ~174 KB gzip.

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

Interaktív demók

Kattints vagy húzz a vásznon a kölcsönhatáshoz. Válassz egy demót alább. Fizika Játék

Motor betöltése…
FPS: — Testek: — Lépés: —
Forráskód

Legújabb teljes játékdemók

A motorra épülő legfrissebb többrendszerű játékok — AI, hullámok, kamerák és 3D rigek, mindegyik egyetlen fájlban, CodePenen megnyithatóan.

Hitch & Park — gameplay screenshotJáték →

Teljes játékHitch & Park

Utánfutós parkolós játék felülnézetből: öt helyszín — szupermarket, parkolóház, kikötői sólya, belvárosi utca, kemping —, mindegyiken egy kijelölt hely, ahová az utánfutónak be kell kerülnie orral kifelé, egyenesen, megállva. A parkoló autókat el lehet tolni (a vészvillogójuk beárul), a bóják feldőlnek, az oszlopok, sövények és fák nem mozdulnak; minden koccanás pontlevonás, az óra a szintidő ellen ketyeg. ↑ ↓ előre / tolatás, ← → kormányzás, SPACE fék, G nyomvonal-segéd; érintőképernyőn nyomva tartás és húzás. Fizika: az autó egy karosszéria plusz négy külön kerék-test — a hátsók WeldJoint-tal, az elsők PivotJoint-tal rögzülnek, és Ackermann-szögű AngleJoint-ok kormányozzák őket —, és csak az első kerekek hajtanak, így tényleg a kormányzott kerekek húzzák körbe az autót; az utánfutó PivotJoint-tal lóg a vonóhorgon, és rossz tolatásnál bebicsaklik. 3D-ben árnyékos helyszínek, forgó és kormányzott kerekek, fék- és tolatólámpák, tolatókamera-betét.

JátékmenetJárműJointsTop-downListenersMobil
Flipper Fray — gameplay screenshotJáték →

Teljes játékFlipper Fray

Négyszemélyes flipperbunyó: egy kerek asztal, négy zseb, mindegyiket egy flipperpár őrzi. A pálya domború: minden a középtől kifelé gurul, így minden golyó valakinek a gondja lesz; a bumperek, a csúzlik és a sávoszlopok ide-oda dobálják a golyókat, és minden golyó, amely átjut a flippereiden, egy életedbe kerül — öt élet, az utolsó talpon maradt zseb nyer, vagy a legtöbb élet, ha lejár a három perc. Az alsó zsebet te véded három AI-kapus ellen; a multiball menetrend szerint plusz golyókat dob be, félpercenként pedig kigurul egy bombagolyó — két élet, ha beesik, robbanás, ha senki nem nyeli le. ← → / A D flipperezés, SPACE mindkettő; érintőképernyőn tartsd nyomva a képernyő bal vagy jobb felét. Fizika: a flipperek setVelocityFromTarget-tel hajtott kinematikus testek, így az ütés valódi szögsebességet visz át a golyóba; a golyók bullet-jelölt körök, ezért semmi nem fúródik át a vékony gyűrűfalakon; a bumper- és csúzlilökések, valamint a gólok jóváírása InteractionListener-eken át érkezik. 3D-ben neonaréna krómgolyókkal, világító zsebekkel és sávfényekkel, a saját zsebed mögül nézve.

JátékmenetPinballMIKinematicCCDListenersMobil
Swarm Night — gameplay screenshotJáték →

Teljes játékSwarm Night

Survivor-roguelite Vampire Survivors-stílusban: öt perc egy körbekerített temetőben, és te csak irányítasz — minden fegyver magától tüzel. A megölt szörnyek XP-gyémántokat ejtenek; a betelt sáv megállítja az éjszakát, és három fejlesztéskártyát kínál hat fegyverből (ostor, pálca, kések, pajzs, gömbök, villám) és nyolc passzívból. Hat szörnytípus érkezik menetrend szerint, plusz rohamozó, kincset hordó sírlovagok és 4:00-nál a csontkolosszus, amelynek földcsapása az egész tömeget szétrepíti. A hajnal 5:00-kor a győzelem. Mozgás WASD-vel / nyilakkal, kártya az 1 / 2 / 3-mal vagy kattintással; érintőképernyőn tarts nyomva bárhol az irányításhoz. Fizika: akár 420 szörny dinamikus kör egy zéró gravitációs Space-ben, így a horda rajzás-kód nélkül tolakodik és áramlik a kövek között; a hátralökés tömeggel skálázott impulzus, a lövedékek, kések, köpetek és gömbök pedig szenzortestek, amelyek találatai InteractionListener-eken át érkeznek, szenzormaszkos oldalszűréssel. 3D-ben holdfényes temető, ahol minden szörny instance-olt low-poly rig.

JátékmenetRogueliteMIKameraÉrzékelőkTeljesítményMobil

Minden játék →

Miért a nape-js?

A nape-js azon kevés JavaScript- és TypeScript-alapú 2D fizikai motor egyike, amely merevtest-dinamikát, kényszereket (PivotJoint, DistanceJoint, WeldJoint, AngleJoint, MotorJoint, LineJoint, PulleyJoint, SpringJoint), folyadék-felhajtóerőt, törést, kényszerhálóból épített lágytest- és szövetszimulációt, sugárkövetést és konvex söprést, beépített karaktervezérlőt, többjátékos rollbackhez determinisztikus léptetést, bináris szerializálást, visszajátszás-rögzítést és külön szálon futó Web Worker hidat kínál — egyetlen ESM csomagban (~174 KB gzip), teljes TypeScript-típusokkal és DOM-függőség nélkül.

A Box2D, Matter.js, Planck.js vagy Rapier alternatíváját keresed? Futtasd a böngészőbeli teljesítménytesztet, hogy közvetlenül összehasonlítsd őket, vagy merülj el az interaktív példákban — fizikai demók és játszható minijátékok (platformer, MOBA, tornyos védekezés, csúzli, flipper, felülnézetes lövölde).

AI-támogatott fejlesztésre építve

A kódoló ügynökök olyan könyvtárral dolgoznak jól, amit el tudnak olvasni, típusellenőrizni és ténylegesen futtatni. A nape-js mindhármat hozza.

llms.txt, kiszolgálva

A teljes API egyetlen szövegfájlban a /llms.txt címen, a teljes referencia pedig a /llms-full.txt alatt — ez a kialakulóban lévő szabvány a dokumentáció modellnek adására. HTML-kaparás helyett add oda az URL-t az ügynöknek.

Típusok, amikben a modell megbízhat

Végig kézzel írt TypeScript strict: true mellett, generált deklarációkkal szállítva. Az ügynök valódi szignatúrákat és TSDoc-ot kap, így kevesebb nem létező metódust talál ki.

Fut fej nélkül, Node-ban

Nulla DOM-függőség: az ügynök importálhatja a motort, léptethet egy szimulációt, és a terminálban ellenőrizheti az eredményt — böngésző, canvas és mockolás nélkül.

Determinisztikus, így a tesztek tartanak

A space.deterministic = true mellett ugyanaz a bemenet ugyanazt az eredményt adja azonos platformon. Az ügynök írta regressziós teszt a helyes okból marad zöld.

Dokumentált buktatók

Egy anti-pattern útmutató és egy hibaelhárítási útmutató sorolja fel azokat a hibákat, amelyeket a modellek a fizikai API-knál a leggyakrabban elkövetnek.

Feladat alapú receptek

A szakácskönyv célok szerint tagolt — platformer, ragdoll, folyadék, visszajátszás —, vagyis pont abban a formában, ahogy egy prompt érkezni szokott.

Teljesítménytesztek

Épp most, a te böngésződben mérve. Minden teszt egy szoros ciklusban futtatja a fizikai step() hívást, és a lépésenkénti medián időt jelenti.

Nyomd meg a gombot az indításhoz.

Az API dióhéjban

Mag

  • Space — fizikai világ
  • Body — merev test
  • Vec2 — 2D vektor
  • AABB — befoglaló doboz

Alakzatok

  • Circle — sugáralapú
  • Polygon — konvex burok
  • Capsule — lekerekített végek
  • Polygon.box(w, h)

Támogasd a nape-js-t

A nape-js MIT-licencű és nyíltan fejlődik. Ha időt spórol neked — vagy ezen fut a játékod —, egy szponzoráció tartja életben a demókat, útmutatókat és kiadásokat.