Files
iw4L/docs/PRESENTATION.md
T
vtroc7 a2f189df10 Scope match lifetimes and restore gameplay and menu presentation
Prepare progression and loading through Bevy scheduling, preserve round HUD and bombsite props, restore grenade and T5 shadow presentation, and keep menus usable while classes load. Report update progress and continue startup after update failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:01:34 +03:00

3.0 KiB

Presentation publications

render_fx::PresentedFireFx owns receipts for one world and replay timeline. A receipt identifies a fire cause and product, with pellet/segment identity for tracer, impact, glass and marks. Positions, normals, surface and target are result data. Authority replaces that data; conflicting authority is refused.

product prediction authority
muzzle/brass create when available retain success or retry refusal
tracer/transient impact create when available retain success or retry using authoritative result
marks defer schedule mark emission once
glass defer evaluate authoritative segment once, including zero hits

execute admits scope/verdict/budget before invoking creation. It records success after creation returns. Dependency and allocation refusals remain retryable; intentional tracer interval skips are terminal. Marks report Scheduled, separately from Created: a scheduled effect can later encounter a receiver/material refusal in the mark subsystem.

Impact effects carry Transient or Marks emission policy through runners, emitted children, impacts, deaths and trails. Transient effects cannot emit decals; Marks effects simulate child motion without drawing particles, models/lights/trails or playing sounds. Expiration runs once per presentation frame, including idle frames. Receipts and tracer shot decisions retain a 5000 ms horizon; the receipt bound is 8192 products. Saturation refuses admission rather than evicting recent successes. World/timeline replacement or clock rewind resets the scope; i32 wrap remains legal. Late delivery after expiry may create a fresh product. fx_dump reports scope/time, product budget refusals, receipt size/capacity and sweep costs.

asset_material::UiImagePublication owns material mappings, preview policy, zone payloads and archive indices. Shell/match installation selects privately prepared products. A late shell completion cannot replace an installed match. HUD caches and class/loading previews adopt publication identity. Shell previews use this publication; gameplay archive image plans begin with the first match and remain shared. Menu overlays replace maps and caches when menus change.

Installation revisions cover relevant file metadata, following game symlinks. Unix revisions also include inode/change time. A new load checks the revision; there is no automatic file watcher. Archive indices retain opened readers, so atomic file replacement preserves old readers for referenced publications. In-place corruption is refused through archive length/CRC validation.

EditorWeaponCatalog exposes map-independent selection and class admission; it cannot be installed as PreparedWeapons. Match admission additionally checks prepared FPV assemblies and map-selected hands. Appearance selection keeps NativeReady, BaseByPolicy and DeclaredUnavailable separately for view and world models. Render consumers retain refusal reasons and do not replace a declared unavailable model with the base weapon.