‹›
Úvod

O JoltPhysics

Native 3D physics extension, které přináší Jolt Physics do GameMakeru.

JoltPhysics kombinuje Windows x64 native bridge s GML high-level runtime. Zpřístupňuje rigid bodies, collision shapes, constraints, layers, sensors, contacts, raycasts, characters, cloth a debug drawing prostřednictvím managed hodnot přívětivých pro GameMaker.

Co extension nabízí#

  • Dynamic, Static a Kinematic rigid bodies.
  • Primitive, convex, mesh, heightfield, compound a reusable shape resources.
  • Material a motion properties, forces, impulses a přístup k transformům.
  • Collision layers, sensors, contact events a filtrované raycasts.
  • Constraints, paths, virtual characters, cloth simulation a debug visualization.
  • Managed default world s fixed-step updates a bezpečnými generational handles.

Architektura#

VrstvaOdpovědnost
Jolt Physics 5.6.0Native simulace, collision detection, constraints a queries.
JoltBridge_x64.dllValidovaná C++ hranice a bezpečné numeric handles.
jolt_apiLow-level GML funkce blízké native bridge.
jolt_high_levelManaged JoltBody/JoltLayer resources, errors, fixed timing, contacts a convenience creators.
GameMaker projectGameplay state, rendering, input, ownership a explicitní synchronizace.

Současná platforma#

Aktuální native extension cílí na Windows x64. Ostatní GameMaker targets zatím packaged bridge nepodporuje. Platform coverage se může později rozšířit, projekty však zatím nemají předpokládat cross-platform kompatibilitu.

High-level a low-level API#

Většina her by měla začít pomocí jolt_start(), high-level body creators jako jolt_box_create_dynamic() a jolt_update(). Low-level world/handle funkce zůstávají dostupné pro advanced ownership nebo diagnostics, vyžadují však ruční lifecycle a error handling.

Co JoltPhysics nedělá automaticky#

  • Nerenderuje bodies jako herní grafiku.
  • Nenavazuje automaticky každou GameMaker instanci na body.
  • Nesynchronizuje automaticky instance transforms každý frame.
  • Nevybírá za hru gameplay units, collision layers ani ownership pravidla.
  • Nenahrazuje GameMaker objects, rooms, events ani input handling.

Základní lifecycle#

GML
jolt_start();

var ground = jolt_box_create_static(0, 0, -0.5, 20, 20, 1);
var body = jolt_box_create_dynamic(0, 0, 4, 1, 1, 1);

jolt_update();
var position = body.get_position();

jolt_stop();

Ověřené kontrakty operací#

Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.

Symbol / vlastníkSignaturaKontrakt operace
jolt_bbmod_camera_follow_characterjolt_bbmod_camera_follow_character(camera, character, yaw, pitch)Kamera s Position/Target/Up.Set, živý Character, yaw/pitch° → Boolean. Kopíruje character.get_view_transform; aplikuj po pohybu Characteru.
jolt_get_physics_qualityjolt_get_physics_quality()DEFAULT/HIGH v běžícím světě; setter Boolean, getter enum/undefined. HIGH opt-in zvyšuje minimální substeps/iterace a zpřísní CCD, DEFAULT zachová běžné nastavení.
jolt_managed_body_countjolt_managed_body_count()Čte managed stav bez kroku fyziky: Boolean started / handle světa / fixed_dt s / kumulativní počet kroků / počet valid wrapperů těles. Počet wrapperů není kontrola všech native handles.
jolt_managed_character_countjolt_managed_character_count()Počet wrapperů s valid=true v managed registry. Není to dodatečné ověření každého native handle.
jolt_quaternion_from_eulerjolt_quaternion_from_euler(x_degrees, y_degrees, z_degrees)XYZ úhly ve stupních → nový quaternion {x, y, z, w}, pořadí qZ*qY*qX. Čistý výpočet bez světa; neposkytuje validaci nečíselného vstupu.
jolt_set_physics_qualityjolt_set_physics_quality(quality)DEFAULT/HIGH v běžícím světě; setter Boolean, getter enum/undefined. HIGH opt-in zvyšuje minimální substeps/iterace a zpřísní CCD, DEFAULT zachová běžné nastavení.