Ymir/docs/aetheria-cutover.md
2026-07-15 00:51:54 +01:00

1.6 KiB

Aetheria Cutover Notes

First Slice

Cut over projectile travel and impact discovery before trying to replace every Unity physics use.

  1. Spawn a Ymir body for each projectile and relevant target hull/contact shape.
  2. Step Ymir on the same fixed tick used by Aetheria gameplay.
  3. Render Unity projectile GameObjects from Ymir snapshots.
  4. Convert Ymir contacts into Aetheria hit/splash policy.
  5. Keep Unity colliders as visual/debug witnesses only during the transition.
  6. Delete or neuter collider callbacks once the Ymir path owns hit truth.

Negative Checks

  • A projectile with a Unity collider disabled still travels and hits through Ymir.
  • A Unity OnCollisionEnter callback cannot apply damage independently.
  • Replaying from the same canonical creation order and command stream under the accepted Box3D build produces the same ordered Ymir facts.
  • Restarting from a checkpoint matches named numeric state tolerances. It emits no authoritative gameplay contact facts until canonical history has replayed through the checkpoint tick and restored exact contact lifecycle identity.
  • Mid-flight visible projectile position matches the Ymir snapshot within a named tolerance.

Adapter Boundary

Unity adapter code may:

  • submit spawn/despawn/field/body commands
  • receive snapshots and contacts
  • render GameObjects from snapshots
  • publish diagnostics

Unity adapter code may not:

  • alter positions as a hidden repair loop
  • apply gameplay damage from Unity collisions
  • maintain a parallel physics cache that can override Ymir
  • treat scene hierarchy as the source of simulation truth