‹
Pomocné skripty · Sockets

Lifecycle, debug a řešení problémů

Managed cleanup chrání sockety před stale body handly a debug renderer zobrazuje skutečný runtime stav bez zásahu do fyziky.

Socket si při vytvoření uloží world a generational body handle. Platnost nekontroluje pouze existenci GML structu, ale také živý parent, shodu handlu a aktuální managed world.

Bezpečné pořadí cleanupu#

  • socket.destroy() nejprve rozpustí group, potom connection a nakonec vyřadí socket.
  • connection.destroy() zničí constraint, obnoví pair collision, vyčistí endpointy a nastaví cooldown.
  • group.destroy() rozpojí jednu connection a uvolní všechny přeživší sockety pro běžné použití.
  • Zničení parent body automaticky uklidí jeho sockety a související groups/connections. Stale generational handle se nikdy znovu nepoužije pro native destroy.
  • jolt_stop() odstraní socket registry společně s managed world resources.

Debug vizualizace#

Zapněte Socket debug prostřednictvím běžného debug systému a příznaku JOLT_DEBUG_SOCKETS. Každý socket kreslí marker a lokální osy X červeně, Y zeleně a Z modře. Barva markeru rozlišuje disabled, volný, candidate a connected stav.

Group debugBarva
Pár zarovnaný / group connectedZelená
Pár způsobilý a v dosahu / group activeOranžová
Group připravena k captureAzurová
Pár nebo group neaktivníČervená

Point constraint debug čte aktuální world attachment body z nativního constraintu každý frame. Marker proto sleduje pohyb i rotaci celé soustavy a není uloženou creation-time pozicí.

Časté problémy#

ProjevCo ověřit
Žádný candidateType, polarity, enabled, cooldown, search_distance, stejný world a různá bodies.
Candidate existuje, ale nelocknePosition/rotation chybu, relativní rychlosti, force/torque limit a překážky.
Hinge nebo Point se nehýbePřekryv colliderů; pro daný pár zkuste collision:false.
Group ukazuje jen 1/2Kompatibilitu, enabled stav a local frame druhého explicitního páru.
Connection ihned praskneJednotky max_force/max_torque, reálné reaction zatížení a zda startovní collidery nejsou v silné penetraci.
Po disconnectu se hned nespojíJde o zamýšlený cooldown; sledujte blocked_until nepřímo uplynutím času.

Kontrolní seznam před nasazením#

  • Ověřte socket osy na rotovaném parent body, nejen na identity transformu.
  • Vyzkoušejte lehký i nejtěžší očekávaný male s konečnými attraction limity.
  • U pohyblivého hostitele ověřte lock a následný pohyb výsledného constraintu.
  • Otestujte disconnect, cooldown, reconnect, zničení obou parent bodies a jolt_stop().
  • U breakable spojení změřte běžné provozní reakce a limit nastavte s rezervou nad nimi.