Skip to content

Changelog

Unreleased

  • Added RedEngine.Configuration: a root EngineConfiguration asset with explicitly selected, modular ScriptableObject sections, cached typed lookup, and change notifications that continue to work in Play Mode.
  • Made TagsContainer a replicated multi-domain container that accepts every generated gameplay-tag type while keeping equal tag names from different domains distinct; cap replicated names at 64 characters and report incompatible domains or entries in the registry inspector.
  • Rebind Compact Showcase HUD state when the local player receives a replacement pawn and show a respawning placeholder instead of retaining zero health from the destroyed character.
  • Moved world-marker projection, widget creation and occlusion into RedEngine.UI through WorldMarkerSubsystem, with separate WorldMarker and WorldMarkerWidget components.
  • Preserve source asset identity when replicating runtime NetworkScriptableObject instances.
  • Decouple character presentation from simulation transforms to remove visible prediction and moving-base jitter.
  • Build Compact Showcase training dummies as Framework characters with a kinematic character controller.

0.1.0

  • Unified the built-in GameplayTag with attributed tag declarations: it is now generated as a [GameplayTag] type and authored through its own group in the shared GameplayTagRegistry; typed parent lookup and hierarchical matching are generated consistently for every tag type.
  • Fixed Fusion Multi-Peer startup by treating StartGameArgs.Address as a local bind address, sharing an explicit session name, waiting for the server before starting clients, limiting peer switching to playable runners, and making failed travel and Play Mode shutdown clean up every instance.
  • World travel now waits for the local player controller and required character pawn before reporting completion; Compact Showcase keeps its loading screen over technical spawning and fades it out through the registered 0.2-second hideAnimation clip.
  • Added ActorIndicatorRenderer with screen projection, distance culling, camera-depth requests and PhysicsScene occlusion; Compact Showcase labels and NPC health bars now hide behind level geometry.
  • Applied projectile damage from the authoritative local projectile collision instead of a separate fire-time trace, and bounded motor presentation lag so moving obstacles cannot visually enter characters.
  • Added automatic, color-coded GameplayTagRegistry authoring: every attributed tag type receives an always-visible reorderable group, expandable metadata, confirmed deletion and inline creation; tag fields now provide registry-backed selection and creation controls.
  • Fixed the AssetReference property drawer to read GUIDs from its active provider instead of the removed root guid field, and replaced every remaining Fusion NetworkBool use with weaved bool state.
  • Moved widget-root and loading-screen prefab settings into EngineSettings and removed the standalone WidgetSettings; renamed item schemas to ItemScheme, added Project Browser type thumbnails, and expanded Compact Showcase with authored item schemes, gameplay-tag domains, and logger channels.
  • Separated deterministic equipment attachment from smoothed presentation sockets to remove held-item jitter, and expanded Compact Showcase with respawning pickups, higher jumps, side-wind/updraft zones, a corrected west deck, a bordered lava area, and three weapon-test dummies.
  • Simplified Compact Showcase actors: the training dummy now derives from Character, lava and teleporters derive directly from Actor, character presentation and damage-number emission live on their characters, and the dummy health bar is a screen-projected Widget driven by UI variables.
  • Fixed Compact Showcase weapon damage by resolving hits on state authority while projectiles remain local visuals; fixed held-sprint release, added replicated sprint trails, screen-projected labels, persistent lava overlap damage, ability-owned jump cooldown, and replacement-pawn respawning.
  • Fixed authoritative projectile hits against PhysX-only actors and ignored-object filtering under Fusion lag compensation; added hip-fire auto aim, bound magazine/reserve ammo to the HUD, corrected HUD safe anchoring and camera-facing labels, and replaced the vertical ramp with slippery 30/45-degree surface-modified ramps.
  • Added a Fusion-timed 0.5-second jump cooldown, held sprint with replicated Stamina drain/recovery, pooled network damage-number presentations, a 72-degree sliding ramp, and higher-friction ice to Compact Showcase; fixed runtime world-label placement and the equipment HUD null race.
  • Added an optional magnitude payload to FeedbackParameters for numeric presentation effects.
  • Fixed Compact Showcase pickups by replacing empty UnityEvent wiring with authoritative replicated pickup actors, raised contextual interaction prompts, changed the training dummy to a capsule, removed the duplicate moving platform, and added lava and ice labels.
  • Added an AttributeContainer inspector section that lists every registered attribute with base and current values in edit mode and play mode.
  • Added authoritative match/player console commands, fixed match-state transitions and ability completion/input-release lifecycle, and smoothed Compact Showcase character presentation and camera tracking independently from the deterministic motor root.
  • Added three graded jump ramps and an authority-simulated, network-replicated Rigidbody push cube to Compact Showcase, while reducing the scripted moving-cube obstacle to one instance.
  • Reworked Compact Showcase readability with a gray/black checker floor, compact spherical pickups, object labels and a handless character; fixed interaction scans in Fusion local physics scenes and made repeated jump attempts refresh grounding before applying the impulse.
  • Apply the network-model analyzer to every runtime assembly, restoring generated inventory-fragment TypeId constants and serializers outside the RedEngine.Network assembly.
  • Ensure the generated network ScriptableObject table is labeled as Fusion's default global and return safe serialization/preload failures when the table is unavailable instead of throwing.
  • Split trace, melee, and projectile attacks into RangedWeapon, MeleeWeapon, and ThrowableWeapon; projectile launch values now travel as ProjectileLaunchParameters, while the projectile subsystem only pools and ticks local visuals and state authority applies damage.
  • Replace presentation definitions with pooled PresentationBehaviour prefabs, add stable GUID serialization for presentation RPCs, and replicate feedback context through NetworkId values.
  • Reworked subsystem construction so SimulationBehaviour subsystems register themselves as Fusion globals and no longer require subsystem-specific driver components.
  • Moved the serialized type selector to Foundation as the generic TypeReference<TBase>, removed legacy serialized-name fallbacks, and standardized public API class regions.
  • Removed empty and fully commented-out framework source files.
  • Force Fusion weaving for the Compact Showcase runtime assembly so its network behaviours work without host-project NetworkProjectConfig changes.
  • Update Fusion Weaver configuration for the renamed RedEngine.Gameplay.Movement assembly, force weaving for that module, and remove the obsolete RedEngine.Gameplay.CharacterController entry.
  • Defer ReplicatedCollection serializer lookup until network state is accessed so Unity component construction cannot race generated NetworkModel registration.
  • Validate a missing EngineSettings.NetworkRunner before travel and include a ready-to-assign Fusion runner prefab in Compact Showcase.
  • Expanded Compact Showcase with asset-driven ability input, prefab-authored UI events, a Cinemachine camera rig, a replicated moving platform and lava hazard, six inventory slots, and potion/ammo pickups.
  • Fixed periodic Gameplay Effect expiration ordering and equipment ability source binding.
  • Consolidated package samples into a small Compact Multiplayer Showcase with Framework InputSettings, Cinemachine follow, a weapon, tick-driven moving cubes, a respawning NPC health bar, and a bound multi-screen UI flow.
  • Added InlineScriptableObject inspector support for creating and editing nested sub-assets while retaining ordinary external references, including concrete subtype selection for polymorphic fields.
  • Simplified inventory layout replication by folding layout and placement serialization into a stack-only InventoryNetworkState, and removed the serializer interface and network-layout wrappers.
  • Added TetrisInventoryLayout with rectangular grid placement and item footprints configured by EntityFragmentInventory.Width and Height.
  • Removed ItemInstanceId; inventories now identify and merge items by ItemDefinition, support direct definition-based consumable operations, and retain instance overloads for exact objects.
  • Reduced the public inventory mutation API to Add, Remove, and Move; removed item shortcuts for quantity, affixes, stacking, and removal so item data is accessed through fragments.
  • Collapsed projectile logic, runtime state, and presentation into one non-replicated Projectile MonoBehaviour and removed prediction keys, rollback history, simulation type switches, and obsolete aliases. Projectile prefabs now own all movement, collision, and feedback behavior.
  • Moved lock-on state, target acquisition, validation, and cleanup from RangedWeapon into WeaponTargetLockAbility; firing now only receives the selected target ID.
  • Removed WeaponShotRecord; RangedWeapon now exposes only replicated firing fields and passes their values directly to Projectile.Shoot. Active projectiles outlive their source weapon.
  • Moved interaction scanning and target ownership into InteractAbility, made interactions coroutine-based, and removed the legacy scanning component and interaction RPC forwarding.
  • Reworked RedEngine.Assets initialization into an ordered Addressables, scene, AssetBundle manifest, bundle preload, and network-asset pipeline with logged result-based failures and deterministic handle cleanup.
  • Changed ItemInstance from an INetworkStruct value to a NetworkModel class while keeping inventory and equipment replication backed by its generated unmanaged state.
  • Extended the NetworkModel generator to use Fusion [Networked] members, nested models, NetworkWrap/NetworkUnwrap, generated serializers, and automatic registration.
  • Converted InventorySlot into a NetworkModel and taught ReplicatedCollection<T> to serialize NetworkModel objects directly, with dirty-only writes and revision-gated reconciliation.
  • Removed the ItemRuntimeData registry, persistence buffer, and generator; deterministic item fragments and affixes are rebuilt from ItemDefinition plus Seed.
  • Moved authored initial-item application into Inventory and removed the separate InventoryInitializer network component.
  • Converted ItemAffixInstance into a nested NetworkModel runtime ItemFragment and renamed the item rarity gameplay-tag type to RarityTag.
  • Converted RuntimeAbilitySlot to a generated NetworkModel and added the one-parameter ReplicatedCollection<T> API for NetworkModel classes.
  • Converted RuntimeEffectSlot to a generated NetworkModel and removed the custom-serializer variant and adapter layers from ReplicatedCollection<T>.
  • Added strict REDNET001-REDNET003 NetworkModel diagnostics, explicit null presence for nested reference models, and deterministic Unity editor/runtime serializer registration.
  • Added dirty-slot writes and rollback-safe raw-word shadows to ReplicatedCollection<T> through SetDirty, WriteChanges, and ReadChanges while preserving runtime object identity.
  • Added [Replicated(MaxCapacity)] generation of concrete Fusion NetworkArray backing state, automatic RedNetworkBehaviour lifecycle synchronization, logical prefab capacity validation, and per-slot Added/Removed/Changed reconciliation. AbilitySystem is the first migrated user.
  • Added opt-in [NetworkFragment]/[NetworkField] generation with deterministic type IDs, collision diagnostics, generated dirty-aware properties, fixed bounded ItemInstance fragment state, and revision-gated application that leaves deterministic prototype fields untouched.
  • Changed initial inventory authoring to store complete ItemInstance values and validate them without routing initialization through ItemInstanceFactory.
  • Replaced NetworkAssetAttribute and content-pack network metadata with the generated .redassets table, standalone 128-bit NetworkAssetReference, and an always-loaded NetworkScriptableObject index backed directly by AssetReference<T> providers.
  • Reworked AssetReference<T> around automatically selected static, Resources, and Addressables providers returning AsyncOperationHandle<T>, including migration of existing directAsset data.
  • Initial package migration.
  • Added Runtime, Editor, Samples~, and Documentation~ layout.
  • Added in-game diagnostics console with automatic command registration.
  • Added ScriptableObject-based GameInstance subsystem path.
  • Added WorldSceneManager to separate world lifecycle from scene loading.
  • Added Basic Sample scene generator and playable sample scripts.

Updated:

RedEngine Framework documentation