This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
EveUnity/packages/org.gamecult.eve.unity-scene
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-16 00:16:52 +01:00
..
Runtime Lower provider post-process profiles 2026-07-16 00:16:52 +01:00
Tests Lower provider post-process profiles 2026-07-16 00:16:52 +01:00
eve-runtime-capability.json Lower temporal field volumes generically 2026-07-15 20:59:30 +01:00
eve-runtime-capability.json.meta Establish EveUnity runtime owner repo 2026-07-10 02:27:47 +01:00
package.json Lower provider post-process profiles 2026-07-16 00:16:52 +01:00
package.json.meta Establish EveUnity runtime owner repo 2026-07-10 02:27:47 +01:00
README.md Move volume shader ABI into runtime asset variants 2026-07-15 19:59:37 +01:00
README.md.meta Establish EveUnity runtime owner repo 2026-07-10 02:27:47 +01:00
Runtime.meta Establish EveUnity runtime owner repo 2026-07-10 02:27:47 +01:00
Tests.meta Establish EveUnity runtime owner repo 2026-07-10 02:27:47 +01:00
Third Party Notices.md Lower world-anchored procedural fields 2026-07-15 23:15:45 +01:00
Third Party Notices.md.meta Lower world-anchored procedural fields 2026-07-15 23:15:45 +01:00

Eve Unity Scene Lowering

Provider-agnostic Unity scene lowering for gamecult.eve.surface.v1 interactive worlds.

Providers implement the surface-document, asset-manifest, command-sink, and receipt-source ports. EveUnityPlayableWorldClientBootstrap wires those ports to the generic scene host, input driver, camera rig, and GameObject sink.

EveUnityCultMeshPlayableWorldProvider is the runtime composition root for a networked client. Give it one Verse rendezvous endpoint and it discovers an advertised interactive-world, constructs the generic CultMesh transport, and provides every bootstrap port. Provider, surface, and Verse IDs are optional selection filters; they are not product knowledge required by the client.

The package never imports provider product assemblies.

IEveUnityPresentedEntityRegistry exposes each committed SoA generation as immutable entity facts plus presentation transforms, addressable by Eve entity id or source index. Camera, selection, and provider UI adapters consume that registry instead of reconstructing provider gameplay objects. It owns presentation lookup only; simulation state and commands remain provider-owned.

World surfaces may exclude semantic render channels through the excludedRenderChannels world-root property. Runtime asset variants map those channel names to Unity layers with renderChannel.<channel>.unityLayer metadata. Surfaces never publish Unity layer numbers or camera masks: providers own which semantic content belongs in a view, while EveUnity owns the native layer mapping and subtracts only those layers from the camera's configured culling mask.

World surfaces may also advertise a presentation-only directional key light through keyLightDirection, keyLightColor, and keyLightIntensity. EveUnity lowers those generic values into a transient Unity light and removes it when the world camera lease ends. The provider owns the lighting design; the light never becomes physics, visibility, or gameplay authority.

Retained provider feedback is lowered without becoming Unity authority. EveUnityFeedbackPresenter emits each new feedback.event identity once, and EveUnityShotReceiptPresenter does the same for shot.receipt trajectories. The generic EveUnityShotTrajectoryRenderer renders provider-authored origin, endpoint, duration, and hit outcome, then expires the visual locally. It never uses Unity collision to infer damage or report a hit back to the provider. Providers may publish a non-spatial combat.presentation component beside the SoA body view. EveUnityCombatPresentationRenderer lowers its selected target, contact visibility, lock progress, meter ratios, semantic roles, and timing into reticle, lock, shield/hull, and hit-marker visuals. Hit markers require a new deduplicated shot receipt from the advertised controlled source to the advertised selection with authoritative applied or shield-absorbed damage. SoA remains the only transform authority; the presentation component never duplicates bodies or computes combat outcomes. Continuous beam.presentation nodes bind provider-authored effect assets to the current presented-entity generation. The generic beam renderer follows the advertised source transform, applies provider-owned power to particle emission, and reconciles asset lifecycles by semantic role. It never raycasts, applies force, infers contact, collects cargo, or emits gameplay receipts. The reusable LightningCompute renderer and its shader/material bundle live in this runtime package with their original Unity GUIDs. Provider asset bundles may therefore reference the effect without importing Aetheria gameplay code.

fields.surface projection consumes the plugin-owned org.gamecult.eve.plugin-fields contracts. EveFieldsSplatRasterizer owns the Unity structured-buffer and RenderTexture lowering without importing provider document classes.

field.volume3d surfaces name logical texture ports, feature names, quality, and authored scalar/vector parameters. Concrete Unity shader properties, keywords, and pass indices belong to the selected unity-scene asset variant under unity.volume.* metadata. The lowerer fails closed when that native program descriptor is absent or incomplete. This keeps provider shader ABIs out of Eve's semantic surface while allowing a provider-owned shader to consume portable Eve Fields documents.