So for the past few hours I’ve been pouring over ECS Netcode 1.0 documentation, and I’m struggling to implement thin client input simulations.
The Networked Cube sample recommends you use CubeInput : IInputComponentData, but looking at any existing samples - this does not seem to be usable for thin clients.
My current understanding is that to simulate inputs on a thin client, I must:
-
Create a dummy input entity
-
Give it an input buffer of my input typer
-
give it a GhostOwner component filled with NetworkId’s singleton’s value
-
Make the CommandTarget singleton point at it
Specifically, the examples in Megacity Multiplayer, and Netcode Samples’ Asteroids, both hint that I should add a buffer of inputs to do this…
But IInputComponentData is not a buffer element…
In the Asteroids sample, ShipCommandData extends ICommandData, which is a buffer element, however to my understanding this is an outdated sample simply patched for 1.0.0 and written originally for 0.50?
In the MegaCity sample, the PlayerVehicleInput is an IInputCommandData as expected… but then there’s this suspiciously commented out line in the thin input system.
// NOTE: The buffer type might not be recognized in your IDE but it will be generated and Unity will recognize it.
// TODO : verify this buffer
//state.EntityManager.AddBuffer<Unity.MegaCity.Gameplay.Generated.PlayerVehicleInputInputBufferData>(inputEntity);
I’ve tried to replicate MegaCity’s thin client input system 1-to-1 code wise, simply using my own cube input component data instead, without the commented out line… and it simply doesn’t work. Trying to point to whatever generated component could exist for my input fails as well though it might be the IDE’s fault and my failure at guessing the proper path.
I have checked the entities hierarchy and I can confirm that the system does run and I do have a thin client input entity. But there is no input buffer, the server doesn’t seem to receive any inputs from it, and holds an empty input buffer.

It is frustrating that the documentation does not cover thin clients to any usable degree, and that the code involved in getting them working has to be found on other samples. I am failing to grasp where is the process going wrong.
From what I can see in the Entities Hierarchy, the thin client does not spawn any ghosts, so there is no entity which is tracked by default, despite the real client properly witnessing said thin client, indicating the server did make a successful connection with it and gave it a player…
Does anyone please have any pointers? What would be required in order to get a thin client working on the networked cube tutorial?