Devlog

Building FACTIONS.

Milestones from the FACTIONS development build and website. Each entry is anchored to a real commit and dated when the work landed.

October 2026

gamedesign

Horde Defense connects to the Overworld

Horde Defense can now be started through the actual Overworld landmarks. Walking into range brings up the activity prompt, and the full route from Capital completion through a faction portal to a successful Horde encounter has been exercised in a development run.

  • Eligible landmarks offer Horde Defense; the Capital offers a choice between Horde and Conquest
  • Encounters at distant island locations now simulate correctly, with combat and respawns aligned to the landmark platform
  • Repeat starts within one connection, encounter balance, and island rendering performance remain active follow-up work
gamedesign

Capital Siege: seals that end the invasion

Sealing a Prime now removes that faction's remaining invaders, including its AI players, and prevents their reinforcements from returning. The complete siege route has been checked through all four seals, resolution, and exit.

  • A completed seal clears the faction's surviving mobs and AI players in the same server transition
  • Respawn locations move away from invasion routes and occupied arrival points
  • Reinforcement and route cleanup fixes prevent the final seals from stalling the encounter
artdesign

Hanging Gardens and the Frost Cathedral

Two large landmarks advanced through the world-authoring pipeline: a terraced Desert garden complex and an Ice citadel built around a gothic cathedral. Their authored layouts now include traversable approaches, courts, stairs, and distinct architectural details.

  • The Hanging Gardens gain accessible towers, vaulted interiors, roof decks, planted pools, and a winged sun emblem
  • The Frost Cathedral combines rune-lined approaches, cloisters, crystal courts, towers, and a glacier-backed sanctuary
  • Saved review scenes were checked for floor continuity, stair access, and headroom
gameart

Faction wings for tier-three armor

Tier-three armor for the four elemental factions gains faction-colored wings. A shared armor presentation path carries the same placement and materials into local characters, remote players, class selection, and the art review tools.

  • Wing placement is authored per armor variant, with faction tint and glow
  • Wings follow visibility changes, vanish, ragdoll, and distance-based presentation
  • This pass covers player armor; instanced formation troops and Capital fallback armor remain outside its scope
gamedesignart

Ice Valkyrie and Magma Titan encounter rebuild

The Ice Valkyrie and Magma Titan now have distinct attack animations, warning shapes, impact effects, and recovery timing for their mechanics. Their attacks were retuned around the distance a player can actually escape after reacting and accelerating.

  • Eight mechanics share their timing and damage footprints with the animation and warning effects
  • Phase rotations, enrage, late joins, cancellation, and impact aftermath received dedicated validation
  • New animation rigs improve weapon grips, grounded strikes, and death poses
gamedesignart

Fifteen dungeons, five architectural identities

The dungeon generator was rebuilt around more deliberate room proportions and layered biome architecture. Fifteen authored dungeons now combine entrance halls, excavations, grand halls, chasms, and sanctums with different silhouettes and room sequences.

  • Capital colonnades, volcanic ruins, ice formations, jungle roots, and Desert hypostyle halls use distinct construction kits
  • Lighting follows each room's shape while decoration preserves the traversal lane and encounter arena
  • Saved dungeon validation checked collision, capsule traversal, entrances, and seventy-five interior views
gamedesign

Trees and boulders gain physical presence

Overworld dressing gained collision for substantial trees, rocks, and structures. Tree contact geometry follows the visible lower trunk and roots, while Horde actors stay within encounter spaces kept clear of solid dressing.

  • Large obstacles block movement while low, step-sized detail remains passable
  • Tree collision uses the actual contact geometry to avoid invisible walls between roots
  • Landmark clearance and encounter movement limits are checked together
artinfra

Ground cover that respects the landscape

The biome review environment now generates ground cover on the GPU, placing individual clumps against the terrain and keeping them out of lava flows. This improves the authoring preview for meadows, jungle grass, and the faction forests.

  • Placement retains the authored density, scale, materials, and viewing distances
  • Lava exclusion is checked against each clump's footprint
  • Rendered validation covered five grass environments and confirmed clear lava surfaces in the Capital and Jungle previews
gameinfra

A reliability pass through the core play loop

Entry, exit, match completion, local co-op, and ability selection received a focused implementation pass. Rejected requests now have defined outcomes, and several paths that could leave a player stuck in a menu or gameplay transition were corrected.

  • Overworld leave and quit use the correct cleanup, with visible feedback for rejected entry and join requests
  • The main menu gains connection retry and quit controls; repeated end-match actions are guarded
  • Owned controllers retain pause-menu input, and ability keys use explicit hotbar slots
gameart

Weather and skies for every biome

Ice, Jungle, Volcano, Desert, Coast, and Capital now have their own sky and weather profiles. Crossing between climates blends the environment while preserving the shared clock and each biome's color identity.

  • Six environment profiles carry distinct palettes and three weather states each
  • Jungle weather includes showers and thunderstorms
  • Transitions, rapid boundary crossings, and changes to the weather forecast were validated together
art

Eleven biome chest rigs

The chest collection gained fitted lids, hinges, interiors, and opening animations across Jungle, Volcano, Desert, and Ice. Eleven variants completed asset validation and saved Unreal imports.

  • Moving lids follow fitted hinge axes while the chest bodies stay stationary
  • Materials preserve source texture detail and biome colors
  • Opening, closing, bounds, shell joins, and the Jungle chest's chain motion were checked

September 2026

artdesign

Faction strongholds take shape

A new wave of modular landmark work established distinct architectural directions for the factions: marble sanctuaries, volcanic citadels, jungle pyramids, frozen castles, and terraced Desert fortresses. The Ice and Desert castle assets were authored and checked in saved review scenes.

  • Sapphire Rime combines pointed gates, spired towers, buttressed walls, and a central keep
  • Eclipse Dynasty uses layered terraces, processional stairs, obelisks, and battlements
  • Reusable construction kits support detailed landmarks with explicit walkability checks
art

A new faction cosmetic collection

Eleven cosmetic assets were authored and imported, extending the faction visual language into sculpted metal, fabric, fur, crystal, crowns, and banners. This milestone covers the asset collection and its materials.

  • Canonical faction seals are incorporated into the designs
  • Nanite meshes and dedicated material instances preserve the authored surfaces
  • Source exports, imports, and a fresh asset reload were validated
gameinfra

Formation combat and equipment presentation

Capital battle formations received a broad implementation pass across navigation, equipment, troop rosters, movement delivery, and combat animation. The work connects formation movement with grounded routes and more consistent character presentation.

  • Formation membership and movement use compact shared representations
  • Troop equipment and tier rosters feed the battle presentation
  • This source milestone still required full runtime and live performance verification when it landed
gameart

Achievement banners with a forged-metal finish

Achievements gained a compact banner using the game's forged-metal visual language. Notifications appear at the top of the screen, queue in order, and belong to the local player who earned them.

  • The banner leaves gameplay input available
  • Long achievement names fit within the notification
  • Layouts were checked at full-screen and narrow local-player sizes
gameartinfra

Five islands receive their terrain

The Overworld's five island terrain sources were imported and materialized into the world. Island heights, coastlines, lakes, and the shared ocean were checked together, with a material pass to keep surfaces consistent as the camera moves.

  • Each island uses its authored height data and a common sea level
  • Island and ocean terrain are validated as one connected environment
  • World materials gain more controlled surface variation and camera-independent appearance

August 2026

gamedesign

The Siege of the Capital

Capital Siege became an implemented Overworld opening encounter, with staged invasion battles, Prime seals, objectives, achievements, and completion or defeat outcomes. Durable checkpoints support returning to the encounter after reconnecting.

  • The server owns siege progression, participant cohorts, and the sealed-Prime state
  • Battle layouts support both invading and defending forces
  • Local-player objectives and portal presentation follow the current encounter phase
gameart

Faction-colored character outlines

Characters and equipment gained a consistent outline treatment tied to their faction colors. The same material rules now apply across armor tiers, weapons, offhands, and character previews.

  • View-dependent outlines sharpen character silhouettes
  • Faction color remains consistent across the character and equipped gear
  • The material pass covers gameplay assets and their review tools
infra

Source and art snapshots stay together

The project gained a coordinated source and asset publication workflow. Each complete art snapshot records the exact source revision it belongs to, making development builds and shared assets easier to match.

  • GitHub carries the source snapshot while Lore carries the complete filtered project and assets
  • Publication verifies the remote revision and its source provenance
  • A change arriving during publication stops the process before mismatched snapshots are published

July 2026

gamedesignart

Connected roads and editable world landmarks

Landmark, portal, and road authoring were brought into a more coherent world-building workflow. Roads now share consistent junction heights and clearer approaches to landmark entrances, while landmark compositions remain editable as reusable modules.

  • Portal placement comes from authored world data
  • Road grading, curbs, and junction geometry are checked together
  • Validation covered two hundred routes without the targeted junction, floor, or curb gaps
gamedesign

Unlockable Overworld portal travel

Portal travel now connects the Capital and faction landmarks through persistent player unlocks. Discovering a destination establishes its connection, and travel prepares the destination before placing the character there.

  • Portal access is checked and retained by the server
  • Locked destinations remain visibly closed
  • Destination streaming, grounding, and input gating are coordinated during transit
gamedesigninfra

The first persistent Overworld play loop

The Overworld reached a playable development slice with persistent shard admission, loadouts, local co-op, landmark activities, and travel into Conquest. Players can return from a match to their Overworld context.

  • Main-menu entry leads through character setup into a persistent shard
  • Local co-op admission includes controller detection, guest sign-in, and split-screen setup
  • World activities and Conquest transfer use dedicated Overworld state and return handling
gamedesignart

Horde Defense and completion chests

The first Horde Defense implementation introduced finite landmark-defense encounters with biome enemies, bosses, AI defenders, and clear victory or defeat conditions. Successful encounters gain a biome-themed completion chest.

  • Invaders attack the defended landmark while allied characters support the defense
  • Boss phases increase pressure on the encounter
  • Completion chests and their effects appear only after success and follow encounter cleanup
game

An Overworld minimap

Exploration gained a local minimap with a north-up view, compass, and rotating player heading. Its capture follows player movement and is bounded to the nearby environment.

  • Desktop players can toggle the map with M
  • The map communicates world orientation separately from player heading
  • The display runs locally without adding server traffic
website

QR sign-in feedback on the website

The website's game-linking flow gained QR-oriented guidance and dedicated success, denial, and error pages. Players get a clearer result after responding to a game sign-in request.

  • Account guidance explains the QR and matching device-code approval flow
  • Expired and already-used requests have specific recovery messages
  • Success and denial pages provide a clear next step

June 2026

artdesign

Distinct architecture for island landmarks

Desert, Jungle, Ice, and Volcano landmark kits gained dedicated architectural modules and authored compositions. The world-building tools can regenerate their placements while retaining the intended biome identity and proportions.

  • Each biome has its own structural features and landmark designs
  • Capital proportions received a separate correction pass
  • Generated landmark groups and their source geometry were validated together
gameartinfra

Terrain, rivers, lakes, and roads share a world

The island terrain pipeline expanded through erosion, water flow, biome features, and road grading. Rivers and lakes are now generated from the same simulated water surface used to shape the landscape.

  • River paths and lake boundaries produce actual water bodies
  • Road junctions share consistent heights across their connected routes
  • Island-scoped authoring and previews make individual environments easier to inspect
gameart

Grounded foot placement

Local character animation gained a foot-placement solver for grounded movement. Foot planting and pelvis adjustment now respond to the terrain beneath the character.

  • Foot placement uses the character's ground traces
  • Planting and interpolation can be tuned alongside the animation setup
  • The adjustment is presentation-only and leaves movement authority unchanged
gameart

Armor variants across classes, factions, and tiers

The armor collection gained an import and authoring pipeline for class, biome, and tier variants. Each variant preserves its source materials while supporting faction glow, individual scale, and matching weapon attachments.

  • Armor keeps its base color, normal, metallic, and roughness textures
  • Faction material settings belong to each armor variant
  • Weapon sockets and scaling follow the equipped armor consistently in gameplay and previews

May 2026

gameinfra

More compact mob movement updates

Mob movement delivery was tightened by separating frequent pose updates from slower-changing combat and targeting information. Compact frames and explicit mapping generations reduce repeated payload while guarding against stale presentation.

  • Position, facing, and pose use a smaller movement representation
  • Semantic state changes travel separately from the movement stream
  • Clients wait for the matching mob map before applying a frame
gameartinfra

Match preparation and combat audio

Match entry received a preparation pass for character assets, materials, and presentation resources. Remote character presentation became steadier, and combat effects gained spatial audio treatment.

  • Required visual resources are prepared before character spawn
  • Movement input and blocking status cleanup were corrected across focus changes and respawn
  • Weapon, mob, and combat effects use authored spatial attenuation and gain
game

In-game menu and controller access

An in-game menu brought settings, leave-match, and quit actions into one place. Keyboard Escape and the controller's menu button open the same interface.

  • Settings reuse the existing game configuration surface
  • Leaving and quitting wait for the authoritative match-leave result
  • The menu supports both keyboard and controller entry
gameartinfra

Engine upgrade and character visual pass

The game moved onto the current Unreal Engine line, and the character/faction visual stack got a cleanup pass at the same time. The visible result is a steadier engine baseline, cleaner faction coloring on imported heroes, and more consistent channeled ability placement across gameplay and review tools.

  • Imported hero meshes now support the same faction color treatment used in live gameplay and review tools
  • Channel abilities now keep beam orientation and placement consistent between preview and live play
  • Controller support and authoring tools were updated for the newer engine baseline
gamedesignart

Ability readability and hit geometry pass

Ability previews now communicate the same combat space the server uses for damage and targeting. Several Warrior, Marksman, and Elemental ability shapes were tuned so designers can review range, cones, lines, area effects, and beams without second-guessing what will happen in a match.

  • Area, line, cone, range, and beam previews now share the same combat geometry rules as live abilities
  • Shield Charge, Judgment Chain, Volley Shot, and Elemental Nuke received readability and targeting corrections
  • The ability review surface is more selective, so designers can focus on one class, ability, or hit presentation at a time
gameartinfra

Mob animation authoring pipeline

Mob animation authoring became easier to manage: individual source animations can be reviewed and prepared for the large-battle presentation path without changing how thousands of mobs are shown in play. That keeps artist iteration flexible while preserving the scalable mob rendering model.

  • Idle, movement, combat, siege, and death states now have a clearer authoring flow
  • Pre-match preparation keeps the mob animation setup ready before combat starts
  • The large-mob presentation model stays unchanged for high mob counts
gamedesign

25 km overworld island layout

The first 25 km overworld island layout advanced from design notes into concrete authoring data. The current layout has sixteen points of interest, forty routes, a central capital, four faction island offsets, channel gaps, and portal placement documented together.

  • Sixteen points of interest and forty travel routes define the durable island topology
  • Middle-ring locations now bridge the outer and inner loops
  • Launch geography now has a clearer capital, faction-island, and portal layout
gameinfra

Reload, channeling, and weapon state reliability

Weapon reloads and channeled abilities were tightened so local UI and combat presentation agree with the authoritative match state. The work reduces missed reload completions, duplicate channel starts, and late local registration edge cases without exposing unnecessary state to other players.

  • Reload completion now belongs to the player who started it and cancels cleanly when the state changes
  • Channeled abilities reject duplicate starts and avoid unnecessary aim updates
  • The local UI catches up cleanly when weapon state becomes available
gameinfra

Smoother world-data transitions

Moving between crowded world areas now updates the player's relevant nearby state with less repeated work. The effect is smoother movement through contested spaces and clearer signals when a transition is slow.

  • Entering and leaving world areas now scales with the areas involved, not every underlying data stream
  • Transition completion waits for pending world updates before finalizing
  • High-volume logging was reduced so performance work can focus on real gameplay cost
gameinfra

Match startup and respawn reliability

Startup, respawn, split-screen class selection, and local movement edge cases received a reliability pass. Match startup prepares visual assets earlier, dynamic resolution follows the active performance target, respawns resolve to the correct player, and dead-state movement sends are gated more cleanly.

  • Gameplay visuals are prepared before they are needed at match start
  • Dynamic resolution now follows the configured high-framerate target with an optional lower-framerate floor
  • Respawns and split-screen spawn ownership now route to the correct local player
  • Mob presentation does less repeated work when nothing visually changed
gameart

New ability slots: Crushing Leap and Pinning Shot

Warrior and Marksman kits gained Crushing Leap and Pinning Shot, with server-authoritative targeting and clearer visual target handling. The abilities use the same combat movement and status systems as the rest of the kit, so they behave like part of the core rules instead of special cases.

  • Crushing Leap closes distance, stops at its authored range, damages, and interrupts
  • Pinning Shot gives Marksman a ranged root option against supported targets
  • Target indicators now follow confirmed combat targets rather than free client positions
gameartinfra

Ability review and hit presentation tools

Ability review tooling became more useful for building and checking moment-to-moment combat presentation. Designers can narrow the preview to specific abilities and attach optional hit reactions that play when the server confirms a hit.

  • Preview visibility is saved per class and ability
  • Bulk show and hide actions make class reviews faster
  • Optional hit reactions can now be reviewed alongside cast visuals
  • Misses and cleaned-up visual events are handled more explicitly
gameartinfra

POI laser and channel visual iteration

POI laser effects and channeled beams went through a review pass focused on faction color, aim direction, surface motion, damage readability, and side-by-side material comparisons. The work gives art and design a faster path to evaluate variants before promoting them into gameplay.

  • Channeled beam previews now line up with their intended aim direction
  • POI laser materials gained clearer damage progression and inward-flow variants
  • Preview labels and grouped layouts make visual comparisons faster
  • Faction color handling is consistent across the reviewed variants
gameart

Social hub and forged menu UI

The main menu collapsed membership and leaderboard entry points into one Social hub with Profile, Guild, Invites, Leaderboard, and Membership sections. The same stretch pushed forged menu styling, sigil button assets, focused interaction sounds, and cleaner menu text.

  • Social overlay now has one native menu entry point and one section contract
  • Settings-style forged panel and sigil button assets promoted into the menu presentation
  • Duplicate click audio fixed at the shared style source instead of per-button patches
gameinfra

Large-fight frame budget recovery

Remote player and mob presentation got a major steady-state performance pass. The client now does less repeated decision-making, skips no-op presentation work, and keeps expensive visual work bounded during large fights.

  • Remote player presentation decisions are resolved once and reused across the frame
  • No-op mob and remote-player presentation passes are skipped
  • Combat VFX now pick up faction color consistently across local casts, remote playback, hits, projectiles, channels, and previews
  • Gameplay visual assets are prepared before players enter combat
gameinfra

Dash, teardown, and projectile polish

Dash presentation, remote-player cleanup, chunk settlement, projectile visuals, and local movement sends were tightened together. The result is more faithful dash timing, less work when remote players leave view, and cleaner projectile playback under heavy combat.

  • Dash visuals now reflect actual movement distance more reliably
  • Remote players that leave the presentation budget become visually inactive without carrying expensive components
  • Projectile visuals are grouped and replayed in order
  • Local movement updates stay responsive during combat
gameinfra

Combat networking overhead reduced

Several high-churn combat updates were packed and batched so large fights produce less repeated client work. Health, alive state, invisibility, corpse visibility, ability visuals, remote-player removal, and mob combat state all moved toward bounded updates with fewer redundant notifications.

  • Fast-changing combat state now travels through compact nearby-area updates
  • Ability visual events are grouped into bounded batches
  • Remote-player removal and mob combat state updates now arrive as cleaner batch changes

April 2026

gameinfra

Presentation budgets for thousand-player targets

The client now treats authoritative state and visual presentation as separate concerns for large battles. The game can keep full combat state while only promoting the most relevant remote players, mobs, weapons, and ability effects into expensive presentation.

  • Remote player presentation is capped by relevance instead of attempting to fully render every player at once
  • Mob presentation prioritizes threat and distance
  • Weapon and ability effects respect presentation relevance
gameinfra

Packed combat networking

High-frequency combat replication moved into compact nearby-area updates for movement and combat state. This keeps heavy fights more stable while preserving the slower-changing state needed for spawning, ownership, and static presentation.

  • Remote player movement now uses denser per-frame updates
  • Player status and mob status no longer ride on broader slower-changing state
  • The combat networking path is shaped around crowded local areas instead of sending every change to the whole match
gameinfra

Combat replication and FPS clawback sprint

A dense combat performance sprint reduced redundant replicated work, trimmed debug-only cost, improved projectile visual ordering, and tightened inbound queue behavior. The changes were aimed at fewer steady-state spikes during heavy combat.

  • Projectile visuals are scoped to nearby areas and replay in stable order
  • Combat visual updates are bounded and scoped to relevant areas
  • Mob and remote-player update paths do less idle and debug-only work
gameinfra

Large-match systems cleanup

Large-match gameplay systems were reorganized around clearer responsibilities and lifecycle handoffs. The public result is fewer dependency shortcuts between major systems and a more stable foundation for future gameplay work.

  • Match, wave, POI, respawn, UI, audio, and presentation code now follow cleaner ownership boundaries
  • Shared gameplay coordination has clearer handoff points
  • Startup and teardown paths are more explicit
gamedesigninfra

Overworld systems and mob pipeline hardening

The overworld plan was narrowed into clearer systems, and the mob update pipeline recovered performance with more event-driven update rules. This connected world-scale design with the stricter ownership and relevance rules needed for large combat.

  • Overworld systems were consolidated into clearer gameplay groups
  • Island topology, ownership boundaries, and shared route planning became more concrete
  • Mob updates moved toward persistent work queues and event-driven changes
game

Spawn, grounding, and wave entry reliability

Conquest spawn selection and mob grounding were repaired so players and mobs enter the fight from valid points and settle correctly on terrain. The pass improved player starts, source-based wave spawning, and the reliability of mob poses around POIs.

  • POI readiness now drives more reliable player spawn selection
  • Collision-backed placement restored better player and mob grounding
  • Wave source routes and source caps now agree on where mobs should enter
websiteinfra

Website systems pass: alpha ops, identity, and polish

The website moved beyond static marketing into alpha operations: email/SMS communication, referrals, consent capture, admin wave tools, provider-agnostic accounts, in-game device login, creator-code attribution, and a consolidated card/toast design pass.

  • Alpha signup now supports messaging, suppressions, wave opening, referrals, profile completion, Discord role grants, and admin views
  • Commerce and identity now bridge Stripe, web accounts, and game entitlements
  • Exit-intent capture became a non-blocking toast and card styling moved into the shared card component
website

Mobile polish + faction terminology lock

A full pass over the site. Factions now carry their formal names end-to-end (Molten Dominion, Glacial Covenant, Sunscar Empire, Verdant Accord). Mobile hero stopped shifting on long names. Faction cards tightened. Copy sharpened top to bottom.

  • Biome → Faction terminology sweep across every marketing surface
  • Mobile FactionCard polish + hero eyebrow layout fix
  • Tightened /alpha copy, scale-claim beats cleaned up
  • Circular faction icon added to site header
website

Marketing site live

First public face of FACTIONS shipped: hero, four faction dossiers, five class pages, lore entries, shop, alpha waitlist, creator program, press kit, legal trio. Ember shader on the hero, biome-reactive theme colors, video reels for classes.

gameinfra

Alpha monetization live

End-to-end monetization wired: Stripe Checkout → webhook → server entitlement grant → in-game cosmetic unlock. Read paths use stable views, not ad-hoc procedures. Creator codes flow through the same ledger with transparent 20% creator / 20% prize pool splits.

game

Authoritative mob combat + de-clumping

Mobs now attack with server-authoritative phase transitions (windup, strike, recovery) instead of client-side timers. De-clumping keeps thousand-mob packs from collapsing into a single point, preserving the visual scale and fair damage distribution.

game

Lane waypoint path reconciliation

Hardened mob pathing when waypoints are inserted or deduplicated mid-match. No more zero-length lane segments spamming errors every frame on one of 600 mobs.

game

Tournament assignment + hub lifecycle

Tournament roster assignment holds its invariants under concurrent registration. Overworld hub sync lifecycle hardened so players don't see ghost state while queuing.

game

Mob bootstrap: fresh-join ordering

When a new player joined mid-match, mob state occasionally arrived in the wrong order, resulting in ghost mobs or frozen combat. Exhaustive diagnostics first, then a fix to the bootstrap ordering itself. Now clean.

game

Local co-op: split-screen, rumble, input routing

Per-local-player rumble subsystem so each couch-mate gets their own force feedback. Controller ownership and mixed-input button highlight bugs resolved. Four-player split-screen now reads as a real product, not a flag we flipped.

game

Thousand-mob FPS recovery

Big performance pass. Combat snapshot system removes a pile of per-frame work, HISM render invalidations stopped firing every mob tick, redundant uploads eliminated. FPS recovered meaningfully in thousand-mob stress scenarios.

game

Authoritative nearby-player state + movement windows

Each client receives only the movement windows for nearby players, with the authoritative snapshot driving interpolation. Drifts and snap-backs collapsed in dense fights.

game

Generic gamepad v1 + split-screen polish day

An entire day dedicated to split-screen and gamepad feel. Per-ability rumble catalog keyed by ability ID. Focus-style subsystem bridges gamepad focus to hover colors and sounds. Start screen, ready-up flow, per-player slot visuals, B-cancel, auto-click, cursor visibility gates. All ship-grade polish.

  • Per-ability rumble data asset with C++ default curves
  • Focus-style subsystem: gamepad focus drives hover color + SFX
  • Slate RegisterNewUser UserIndex>=0 crash fixed via LP-index ↔ user-index permutation
  • Per-player slot status text (txt_Player1..4) driven by ready state
  • Solo play unblocked, keyboard dash separated from controller L3
gameinfra

Landscape conversion parity + winding correctness

A second pass on the landscape → Nanite pipeline. Determinant-aware contract that resolves mirrored state, projected grid axes, uprightness, and non-mirrored triangle winding once per landscape, then treats that contract as the single source of truth for capture orientation, UV generation, and mesh winding. Chunk math now survives budget-derived edges that aren't evenly divisible.

gameinfra

Budget-driven chunked landscape conversion

Landscape conversion went from a 4096-per-component monolithic atlas to component-aligned chunks sized for five landscapes inside a 2 GB VRAM budget. One beauty texture, one HDR emissive texture, one mesh, one material instance, and one replacement actor per chunk. Generated textures moved onto dedicated project texture groups capped at 2048.

gameartinfra

Landscape emissive capture pipeline

Direct HDR emissive capture straight from the landscape material graph, mask-packed by painted layer, constrained to target tiles. Replaced a packed-grayscale mask path that was fighting coordinate alignment. Generated master materials, explicit capture functions, and a conversion gate before the tool runs.

gameinfra

OptimizeTool: Landscape → Nanite

Authoring tool that converts painted landscape into Nanite meshes with mask packing and cancellable progress. Along with it: navigation collision overflow crash fixed by a hide-not-destroy architecture, support for rotated/offset landscapes and World Partition, plus coordinate-space and thread-safety corrections.

gameinfra

ViewVisibility: 10 ms → 0.15 ms + 120 fps rendering tune

A 9.6 ms GPU-occlusion-query readback stall was hiding inside ProcessVisibilityTasks. Diagnosed via Unreal Insights CSV cross-referencing, fixed by disabling legacy occlusion queries. Nanite's GPU-driven culling makes them redundant. Volumetric clouds off (−0.75 ms). Grass off on the landscape tick (−8.5 ms). Lumen tuned down for 120 fps. OptimizeTool promoted to a runtime module so standalone builds retain HISM actors.

gameinfra

HISM actors at runtime + Nanite on merged meshes

Three root-cause fixes on the OptimizeTool PLA pipeline. Editor-only plugin UCLASS was being stripped in PIE, so it's now an Engine-type actor plus a dynamically created HISM component. Merged meshes now enable Nanite via the 5.7 accessor API. Fixed a PLA double-scale bug (scale² instead of scale) by extracting transforms in representative-local space. PLA conversion now emits one HISM actor per group instead of N StaticMeshActors.

game

Health regen + match cleanup discipline

Halo/CoD-style health regen: delay after damage, then rapid burst. SSOT match cleanup with AFK kick flow that actually returns you to the menu and a chunk-change spawn drain so you stop re-spawning into zombie state.

game

Server-authoritative AI bots

Bot players that fill empty faction slots, behave in the 95th percentile of human behavior, and write to the same tables as humans. Clients render them via the existing remote-player pipeline with zero client changes. A single bot_skill parameter drives the whole behavior tree via response curves. Influence map for strategic decisions, closed-form spring aim model, AI LOD (30/10/3 Hz).

game

Faction elimination flow

When a faction's credits hit zero, the whole faction ends at once: mobs despawn, players ragdoll, the leaderboard resolves. Reconnection to an eliminated faction no longer half-spawns you into limbo.

gameart

Diegetic credit beams + 3D spatial audio

Faction credit drain is now visualized as the laser beams between captured POIs. Audio went 3D at every spawn site: attenuated by distance, placed in the world, no more flat stereo combat.

March 2026

gameinfra

Environment design tools

RotateTool hardened for PIE gameplay, gimbal-lock-proofed, editor viewport ticking restored. Plus a handful of environment authoring tools to speed up world building.

gameinfra

ScatterTool + general world-building pass

Deterministic fixed-rotation layering for scattered props, staircase modes (including spiral staircases), precise X/Y/Z stacking offsets. A lot of quiet cleanup came along with it: fixed pistols, lane manager correctness, tooling ergonomics.

game

POI rejoin race + lane waypoint dedup + gamepad widget focus

A stack of generalized fixes that had been hiding in rejoin edge cases. POI registration guard corrected from 'any POIs present' to 'all POIs registered' so partial caches no longer slip through. Lane waypoint deduplication on insert prevents zero-length segments. Gamepad focus on class and weapon selection widgets via SetIsFocusable in the constructor. Deprecated UE 5.7 CVars renamed, uninitialized object-property crash fixed.

gameinfra

SpacetimeDB 1.0 → 2.0 migration

Full stack move to SpacetimeDB 2.x. Rust module: 43 table macros renamed from 'name =' to 'accessor =', 54 ctx.sender field accesses changed to method calls, primary-key vs unique-column update restrictions honored. C++ client: ModuleBindings fully regenerated, WithModuleName → WithDatabaseName. SDK plugin updated to v2.1.0 with macOS Nil-macro collision fixed via pragma push/pop. Build scripts and toolchain (Rust 1.94, CLI 2.1.0) all moved together.

gameart

Marksman blaster bolts

Traveling projectile VFX for the Marksman kit. The shot you fire now has a body in the world. Speed tuned so a bolt at max range arrives before the next fire cooldown, eliminating overlap clutter. Remote Marksman bolts render for everyone else. Per-shot cost: ~4.6 µs CPU, 0.055% of the 8.33 ms budget at 1000-player scale.

gameart

POI laser beams

First pass on the laser beam system connecting captured POIs across the map. This is the geometry that Apr 1's credit-drain visualization would later ride on.

gameart

Pre-match UI pass

Class select, weapon select, faction lobby, team-indicator layout. All tightened for gamepad and mouse. Focus ring behavior, default selections, back-button flow. The pieces that would get tested hard on April 12's split-screen polish day.

gameart

Map layout pass

POI placement, spawn beacon geometry, biome-border transitions. The kind of week where the editor logs ten hours a day but the repo barely notices. Most of the work lives in assets and level data. Groundwork for the environment tooling that arrives at month-end.

artgame

Biome lighting + atmosphere pass

Post-process volumes, sun angles, fog density, exposure curves tuned per biome so each faction's home reads correctly at a glance. Volcano runs hot and bright at the core, cold at the ridges. Ice sits in diffused overcast. Desert gets the harsh shadow cast. Jungle stays layered and low-visibility.

gamedesign

SpacetimeDB 2.0 migration planning + monetization design

Quiet stretch of design work off the commit graph. Mapped every table-macro and reducer API change between SpacetimeDB 1.x and 2.x ahead of the late-March migration. Monetization flow drafted on paper (Stripe → webhook → entitlement grant → cosmetic unlock) before any of it went into code.

gamedesign

Ability balance + class kit tuning

Cooldowns, ranges, damage curves, cast times across all five classes. Most of the tuning landed in data assets rather than code, so the commit graph stayed quiet. But the time-to-kill, the pace of engagements, and the feel of a Warrior vs Mage exchange all shifted meaningfully by the end of the week.

artgame

Biome kit iteration + environment art

Environment art stretch. Volcano and jungle biome kits filled out with props, hazard set pieces, and signature landmarks. Most of the churn lived in LFS-tracked content, so the git history is thin. But the biomes started to actually look like their factions.

February 2026

gameart

Combat feel + weapon VFX polish

Continuing the Feb 17–18 VFX push: shader tuning on the faction-colored weapon tiers, Niagara parameter tweaks so hit VFX read correctly at distance, timing on ability windups. None of it commit-worthy on its own; all of it landed in the feel of a fight.

game

Stress test: 250 mannequins, 30 → 80–120 fps

Eight-optimization overhaul on the stress-test actor. Mannequin animation plus VFX distance culling applied at every production Niagara spawn site. Live FPS in stress rigs roughly tripled.

gameart

Tier-based weapon VFX + remote cast montages

Faction-colored weapon tier VFX: server-driven Niagara glow on local and remote players, SSOT consolidation of the BiomeColors EffectColor parameter across all spawn paths. Plus: cast montage playback for remote players inside the budgeted remote VFX pipeline, so you finally see what enemy abilities look like mid-cast.

gameinfra

Network egress: −60.9%

Chunk-filtered ability_cast, narrowed 5×5 → 3×3 subscription windows, 20 Hz → 10 Hz position broadcasts, POI timestamp-based control, position-change threshold bumped to 5 cm. Egress cut by about 60% without a perceptible change in gameplay.

game

Server-side mob chase + ranged projectiles

Closed the aggro → attack range gap server-side so mobs actually deal damage once they reach you. Separately, mob damage attribution cleaned up and a ranged-mob projectile system landed.

game

Server-authoritative mob AI

Authoritative client removed. All mob AI runs on the server now. Player position correction became server-side clamping instead of rejection, which fixed a pile of rubber-banding during dash. Hundreds of reducer failures per session, gone.

game

HISM mob frustum culling: expanded cluster bounds

HISM cluster-tree nodes had zero padding, so clusters near the frustum edge failed the intersection test and every instance in the cluster disappeared, even when their meshes were partially visible. Fixed by extending positive and negative bounds extension at mesh-load time (256 cm global default plus per-mob-type overrides) and bumping the component-level bounds scale to 1.5×. Zero per-frame cost.

game

Anti-cheat hardening

Eight server-side exploit vectors closed in a single pass: teleport-through-walls, XP exploits, mob attack auth, delete_mob auth, silent damage drops. If it came from the client, it now has to prove itself before the server trusts it.

game

Codebase hardening wave

A broad hardening wave landed back-to-back: mob death SSOT, weapon status modifier paths, player cleanup, ability assist accounting, admin auth, extracted respawn SSOT, fixed level-up undefined behavior, replaced magic numbers with named constants. Quiet work. The kind that pays dividends for months.

gameinfra

Network egress first pass

Split health tables so health updates don't ride on the same channel as everything else. Server-only mob cooldowns. Chunk-based position subscriptions so you don't hear about players on the other side of the map. The groundwork for thousand-player lobbies.

gameart

Basic Attack + Parry VFX + montage blending

Data-driven ability VFX system (DA_AbilityVFX) so Basic Attacks and Parries read the right montage, VFX, and blend curve per class. Configurable montage blend times gave attacks smooth transitions instead of hard cuts. GC crash in the BasicAttack montage path fixed; per-class attack cooldown in place.

gameart

Preload subsystem + GPU vanish fade

33 runtime asset loads eliminated via centralized preloading. Pooled vanish fade material with GPU-animated opacity and a DitherTemporalAA ragdoll fade. No more spawn-time hitch when a Rogue vanishes. Health VFX material preloaded via the same path.

January 2026

gameinfra

Audio culling, LFS, hot-path caching

Chunk-based culling for the audio manager: around 99% fewer audio events processed when nothing's happening near you. Separately, Content / Binaries / Plugins moved to self-hosted Git LFS so the repo stopped fighting its own history. And a round of hot-path caching (GetWorld, subsystems, components) collapsed a bunch of FindComponentByClass calls that were showing up in profiles.

game

Combat audio + FactionsLoadSystem

Event-driven combat audio with per-biome configuration. Separately, FactionsLoadSystem (a centralized phase-based initialization system) replaced a pile of scattered BeginPlay races. Vanish weapon-mesh transparency with predictive break on ability use.

game

VAT + HISM mob architecture

The architectural refactor that makes 3000 mobs per match possible. Actor-per-mob torn out; replaced with a Structure-of-Arrays mob manager (Positions[], Velocities[], Health[], MobStates[]) backed by Vertex Animation Textures and HISM rendering. Single draw call per biome × type instead of 2000. Batch AI, Newton's-third-law separation, GPU upload pipeline. 3098 lines deleted, replaced with something that scales.

game

Transform throttling + adaptive LOD

LOD-based HISM update frequency. Adaptive LOD multiplier that clamps down harder as entity count rises. 120 fps-targeted rendering optimizations as a follow-up to the VAT+HISM landing.

game

Mob AI parity pass

Spatial hash separation, BatchGroundTraces so mobs stop floating, event-based POI actor registration, faction-based mob targeting (finally: mobs only attack enemy-faction players), POI race condition validated by a canonical POI set. Five functional bugs closed in one pass.

gameart

Vertex animation texture for characters

Character animation baked into textures (anim2texture). At the cost of skeletal-mesh flexibility, you get GPU-driven animation playback that costs almost nothing per instance. The thing that makes thousand-mob crowds cheap enough to exist.

gameart

Shadowstep + Eclipse Nuke teleport

Client-side teleport path for Rogue's Shadowstep and Eclipse Nuke detonations. Vanish material support with player-status subscription. The Rogue kit finally feels like a Rogue kit.

gamedesign

Biome-agnostic talents + status effects

V3 talent system lands. 32 universal talents and 128 biome variants. Status-type lookup is O(1) via direct array indexing by faction, no string parsing at runtime. Same damage, same cooldowns; only the status effect varies (burn / slow / shock / poison). Status effects ship alongside: O(1) DoT-tick processing, movement and action restrictions for frozen/rooted/stunned/feared.

game

Niagara cache consistency + mob persistence fix

Niagara compiled-data cache refreshed after blueprint compilation so already-spawned components don't fall back to placeholder shapes. Separately, mobs no longer survive a match transition: unbind SpacetimeDB callbacks synchronously before the async unsubscribe window closes.

game

8 CPU-bottleneck optimizations: 2000+ mobs at 120 fps

Eight targeted optimizations in one push. Spatial-hash expanding-ring query instead of O(600) brute force. Cached target snapshot indices for lock-free position access. Squared-distance LOD (no more sqrt calls in the tick). Cached target pointers with periodic refresh. Cell-local spatial queries for ~60% of mobs far from cell boundaries. Adaptive LOD multiplier driven by entity count. Batched spatial-hash updates for players. TeleportPhysics for batch transforms to bypass the physics scene.

game

LOD throttling: -93% MoveComponent calls

Visual interpolation and mesh tick throttled by LOD. Near mobs at 30 Hz, mid at 15, far at 2. Delta-threshold skips micro-updates under 2 cm, visibility culling skips mobs not rendered in the last 200 ms. MoveComponent calls dropped from 1664 to 108 per frame at 1890 mobs, transform updates from 1672 to 178.

game

42k heap allocs/sec eliminated from spatial hash

Spatial-hash queries were allocating arrays every frame to return results. Replaced with caller-owned buffers. 42,000 heap allocations per second disappeared from the profile.

game

AOE ground snap + iterator crash fix

AOE VFX now traces multiple hits with ECC_Visibility and picks the lowest-Z impact, so ground effects never float in mid-air over POI meshes. Separately, an iterator-invalidation crash during rapid player movement in batch interpolation was tracked down and closed.

game

Unified spatial hash + performant hit detection

One spatial hash for mobs and players instead of two. Capsule-collision hit detection rewritten to hit a single hash instead of iterating actors. Casting optimizations across the ability pipeline. Event-driven player-controller binding and caching where tick was doing work a delegate could do once.

game

Animation instance injection + mob phase 3

Animation instances now injected cleanly instead of depending on fragile BeginPlay ordering. Alongside, the phase-3 optimization pass on the mob system: mob pool extensions, O(n²) → O(1) reductions, leash fixes, POI capture fixes.

game

Unified entity registry + remote players

One registry for every entity in the match instead of several overlapping ones. Remote players stand up properly: spawn-in, networking, mob cleanup, logging stripped. The substrate for everything that comes after.

game

AI state-tree refactor

Mob AI moved to a proper state machine (windup, chase, attack, leash, idle) instead of ad-hoc flags. Combat finalization flows through it. This is the foundation the Feb 2026 server-authoritative AI rebuild sits on top of.

game

Game-end widget + leaderboard + damage/assists

First real post-match UX. Leaderboard with damage and assist attribution. End-match widget, match-continue flow. The early-game main-base and POI work landed in the same stretch.

game

Multiplayer plumbing: rejoin, late-join, subscription races

An ugly week of network work. Reducer races, rejoin flows, late-join subscription ordering, position replay. Most of the commits from this stretch would make you wince. All of them together turned the game from solo-only into something you can disconnect from and come back to.

December 2025

game

Project inception

First commit. The foundations of a thousand-player PvPvE MMO, committed alone.