Hey everyone,
I’m in early prototype stage for a multiplayer movement FPS with melee combat. The core movement system is already built and working with GameObjects — wall running, wall jumping, climbing, ledge grabbing, grappling, swinging, rail movement, and standard locomotion. Physics-based, and it’s feeling good so far.
Now I’m at the point where I need to make a foundational architecture decision before I go any further, and I want to get it right before I’m too deep to change course.
Target Platform: Mobile and PC
Target Player Count: 8+ players per session
Unity Version: 6.4
The Game at a Glance
- Multiplayer movement FPS — fast, physics-driven locomotion is the core fantasy
- Melee combat system — throwables, boomerang, parry, swords, daggers
- Needs to handle high-frequency physics state sync (mid-air collisions, grapple swings, wall contacts) across players
- Target: competitive multiplayer, so netcode quality is non-negotiable
- Must run well on mobile hardware alongside PC — performance budget is tight
The Decision I’m Stuck On
Option A — GameObjects + Netcode for GameObjects
Keep my existing prototype as-is. Use NGO for networking. Familiar workflow, easier to iterate, most Unity learning resources apply directly.
Concern: Will NGO handle the volume and frequency of physics state updates this game demands without turning into a mess? Especially for things like grapple rope simulation, swinging arcs, and throwable weapon trajectories synced across clients. Also concerned about whether NGO can keep up cleanly at 8+ players with this movement frequency on mobile hardware.
Option B — Full DOTS/Entities + Netcode for Entities
Rebuild everything on ECS. Use Netcode for Entities, which is built on Unity Physics and seems purpose-designed for exactly this kind of high-frequency simulation sync.
Concern: Massive migration cost from my existing prototype. And I genuinely don’t know how to handle the parts that DOTS doesn’t cover cleanly — animation, VFX, character management. The development complexity also feels risky for a cross-platform mobile + PC target.
Option C — GameObjects + Netcode for Entities
Keep the GameObjects workflow for game logic, rendering, animation, and VFX — but use Netcode for Entities as the networking layer instead of NGO.
This is the option I’m most seriously considering, but also the one I’m least clear on technically. My understanding is that Netcode for Entities is designed around ECS architecture, so I’m not sure how well it actually plays with a pure GameObject setup. Is this even a viable combination, or is it trying to get the best of both worlds and ending up with the worst?
- Can Netcode for Entities meaningfully sync GameObject-based physics without the underlying ECS simulation?
- Is there a documented or community-validated pattern for this hybrid, or is it essentially unsupported territory?
- Would I lose the core advantages of Netcode for Entities (deterministic physics, proper client prediction, rollback) if the simulation itself is still running on Rigidbodies?
- How does this hold up specifically at 8+ players on a mobile + PC cross-platform target in Unity 6.4?
Specific Questions
1. Physics Approach
- In the GameObject + NGO path: is Rigidbody + NGO’s state sync reliable enough for fast physics bodies (players mid-swing, throwables in arc) at 8+ players? Or will I be fighting desync constantly, especially on mobile where tick rates may need to be lower?
- In the full DOTS path: Unity Physics is deterministic — does that actually solve the sync problem, or does it just move the complexity elsewhere? How do people handle client-side prediction + rollback for physics-heavy objects in Netcode for Entities?
- In the GameObject + Netcode for Entities path: does the determinism and prediction advantage of NFE survive if the physics simulation underneath is still Rigidbody-based? Or is it effectively just NGO with extra steps at that point?
2. Visual Effects, Animation, and Character in Full DOTS
This is the part that worries me most about Option B. If fully committing to ECS:
- How do people handle character animation? Is Animator still used on a separate GameObject that just reads from ECS state, or is there a cleaner pattern in Unity 6.4?
- VFX Graph — does it work alongside DOTS entities without a hybrid workaround?
- Character switching (players can potentially change character/loadout mid-session) — is this manageable in pure ECS or does it get messy fast?
3. Hybrid Viability at Scale
Is there a stable middle ground — whether that’s Option C or running game logic and physics in DOTS but keeping rendering and animation on GameObjects — that people are actually shipping with at 8+ players? Or does any hybrid approach create more problems than it solves, particularly on a cross-platform mobile + PC target?
What I’m Leaning Toward
Currently leaning toward Option C — GameObjects + Netcode for Entities. The reasoning:
- My existing GameObject prototype is already working and I’d like to preserve that investment
- The movement system involves enough physics complexity (grapple, swing, throwables, 8+ players simultaneously) that NGO’s sync model feels like it might not be the right fit
- Animation, VFX, and character management staying in the GameObject world removes the biggest unknowns from Option B
- Cross-platform mobile + PC makes the performance overhead of a full ECS migration harder to justify right now
But I genuinely don’t know if Option C is a real, supported architecture in Unity 6.4 or if I’m misreading what Netcode for Entities can do outside of a pure ECS context. That’s the core thing I need clarity on before I commit.
Any experience from people who’ve shipped or are actively building in this space — especially on mobile + PC cross-platform at this player count — would be really valuable.
Thanks in advance.