Pesadelo do Espantalho
Active member
Thanks @FastSkillTeam !Congrats @Pesadelo do Espantalho !
Thanks @FastSkillTeam !Congrats @Pesadelo do Espantalho !
The problem for Drive Ability is that I have to take into account all the Drive add-ons for Client-Side Prediction and Server Reconciliation but I will get started on it after having adapted the official Ucc Add-ons.Hello, may I ask when Drive and the add on capabilities can be added?
To adapt the integrations of Ucc I will do it later starting with the integration of Inputs.Hello, may I ask if other abilities support synchronization? For example, A * find path ability, and my custom abilities
Not well, I wanted to get going with this, sadly I haven't had much time. I have created a new project and added the 3 packages and the UCC3 Demo, is running without errors. Now to get the network going. I might just wait for the documentation.Thanks everyone!
I have a new discussion thread: Ultimate Mirror Controller
So did you manage to sleep? lol
In the future, if you or anyone else, interested in implementing NetCode for GameObjects and UCC3, feel free to check out our GitHub repository. We're actively working on networking and have all the essential features up and running. While it's not server authoritative, the core functionalities are in place. Additionally, we're in the process of making it a fork of the parent repository. We're currently focusing on networking our voxel engine alongside UCC3 and NGO, actively searching for and addressing any bugs that may arise with networking.I admit that I am hesitant to migrate to netcode and only do netcode, but there are members of the community who are waiting for Mirror, I am currently looking at Netcode but I had already looked at Fishnet and Netcode before and I'm a little confused about what's next.
This is very cool @GreedyVoxIn the future, if you our anyone else, interested in implementing NetCode for GameObjects and UCC3, feel free to check out our GitHub repository. We're actively working on networking and have all the essential features up and running. While it's not server authoritative, the core functionalities are in place. Additionally, we're in the process of making it a fork of the parent repository. We're currently focusing on networking our voxel engine alongside UCC3 and NGO, actively searching for and addressing any bugs that may arise with networking.
MLAPI is the old branch, this is using NetCode for GameObjects
https://github.com/GreedyVox/MLAPI/tree/GreedyVox/MLAPI/UCC3
Note: Still in progress, but is a stable working branch, will be releasing a video of it in action with our voxel tech.
There use to be an ole thread, I can create a new one if needed?Can you create a new Forum thread and we'll chat over there?
I wasn't able to find the old thread, you may find a bit new interest with a new threadThere use to be an ole thread, I can create a new one if needed?
Sorry I just reread what you sent, I sometimes have a little trouble with English and I tend to panic over nothing, so I wanted to say thank you very much for sharing.In the future, if you or anyone else, interested in implementing NetCode for GameObjects and UCC3, feel free to check out our GitHub repository. We're actively working on networking and have all the essential features up and running. While it's not server authoritative, the core functionalities are in place. Additionally, we're in the process of making it a fork of the parent repository. We're currently focusing on networking our voxel engine alongside UCC3 and NGO, actively searching for and addressing any bugs that may arise with networking.
MLAPI is the old branch, this is using NetCode for GameObjects
https://github.com/GreedyVox/MLAPI/tree/GreedyVox/MLAPI/UCC3
Note: Still in progress, but is a stable working branch, will be releasing a video of it in action with our voxel tech.
Your welcome, hope its helpful.Sorry I just reread what you sent, I sometimes have a little trouble with English and I tend to panic over nothing, so I wanted to say thank you very much for sharing.
Not 100% sure about this question, so will show how things have changed, note the new changes are pretty good, once you know how it works, cause they have made a lot of changes. I will list all the new types of Rpc, one thing to note with the new Rpc, if running as a host, some of the Rpc will be called twice, once for server and once for client, wish there was a default that will only call on a host once instead of twice, but you can roll your own if need be, or have a if statement filter.Hi @GreedyVox, how are you?
How can we allow Client-Rpc only on Server?
Old Netcode was better for this!
[Rpc(SendTo.Server)]
[Rpc(SendTo.NotServer)]
[Rpc(SendTo.Authority)]
[Rpc(SendTo.NotAuthority)]
[Rpc(SendTo.Owner)]
[Rpc(SendTo.NotOwner)]
[Rpc(SendTo.Me)]
[Rpc(SendTo.NotMe)]
[Rpc(SendTo.Everyone)]
[Rpc(SendTo.ClientsAndHost)]
[Rpc(SendTo.SpecifiedInParams)]
private readonly Dictionary<int3, NetworkObjectReference> m_ChunkManager = new(4096);
public override void OnNetworkSpawn()
{
if (!IsOwner)
OnSyncChunkEventRpc();
base.OnNetworkSpawn();
}
/// <summary>
/// A player connected syncing node event sent.
/// </summary>
[Rpc(SendTo.Server, Delivery = RpcDelivery.Reliable)]
private void OnSyncChunkEventRpc(RpcParams rpc = default)
{
foreach (var chunk in m_ChunkManager)
OnSyncChunkEventRpc(chunk.Key.ToVector3Int(), chunk.Value, RpcTarget.Single(rpc.Receive.SenderClientId, RpcTargetUse.Temp));
}
/// <summary>
/// Sync all network objects to the player connecting.
/// </summary>
[Rpc(SendTo.SpecifiedInParams, Delivery = RpcDelivery.Reliable)]
private void OnSyncChunkEventRpc(Vector3Int loc, NetworkObjectReference obj, RpcParams rpc = default)
{
if (m_ChunkManager.TryAdd(loc.ToInt3(), obj))
Debug.Log($"<color=white>Added Network Chunk: [<color=black><b>{loc} | {obj}</b></color>]</color>");
}
Yes I had seen that, I always look at the official documentation, thanks anyway.Not 100% sure about this question, so will show how things have changed, note the new changes are pretty good, once you know how it works, cause they have made a lot of changes. I will list all the new types of Rpc, one thing to note with the new Rpc, if running as a host, some of the Rpc will be called twice, once for server and once for client, wish there was a default that will only call on a host once instead of twice, but you can roll your own if need be, or have a if statement filter.
Code:[Rpc(SendTo.Server)] [Rpc(SendTo.NotServer)] [Rpc(SendTo.Authority)] [Rpc(SendTo.NotAuthority)] [Rpc(SendTo.Owner)] [Rpc(SendTo.NotOwner)] [Rpc(SendTo.Me)] [Rpc(SendTo.NotMe)] [Rpc(SendTo.Everyone)] [Rpc(SendTo.ClientsAndHost)] [Rpc(SendTo.SpecifiedInParams)]
Link to what each Rpc is used for.
https://docs-multiplayer.unity3d.com/netcode/current/advanced-topics/message-system/rpc/
Sharing an example of something cool you can do with the new system, code below is handy for a client joining a server, by notifying the server of the non owner object spawning, which the server replies with the data requests, the only network traffic is between the client object that was spawned and the server. Please note in the example below generates garbage collection(RpcTargetUse.Temp) and its only being used once, if you are creating your own Rpc targets that is used frequently, create some custom targets instead for reuse.
C#:private readonly Dictionary<int3, NetworkObjectReference> m_ChunkManager = new(4096); public override void OnNetworkSpawn() { if (!IsOwner) OnSyncChunkEventRpc(); base.OnNetworkSpawn(); } /// <summary> /// A player connected syncing node event sent. /// </summary> [Rpc(SendTo.Server, Delivery = RpcDelivery.Reliable)] private void OnSyncChunkEventRpc(RpcParams rpc = default) { foreach (var chunk in m_ChunkManager) OnSyncChunkEventRpc(chunk.Key.ToVector3Int(), chunk.Value, RpcTarget.Single(rpc.Receive.SenderClientId, RpcTargetUse.Temp)); } /// <summary> /// Sync all network objects to the player connecting. /// </summary> [Rpc(SendTo.SpecifiedInParams, Delivery = RpcDelivery.Reliable)] private void OnSyncChunkEventRpc(Vector3Int loc, NetworkObjectReference obj, RpcParams rpc = default) { if (m_ChunkManager.TryAdd(loc.ToInt3(), obj)) Debug.Log($"<color=white>Added Network Chunk: [<color=black><b>{loc} | {obj}</b></color>]</color>"); }
In fact you have to send the Client-Rpc to the server each time, and check if the sender is the server otherwise you have to disconnect the client.More advance way of networking data, which is better for a server authority model script that requires constant intensive network traffic, I would use custom messaging, on the GitHub branch check out the script NetCodeCharacterTransformMonitor for a example, link below.
https://github.com/GreedyVox/MLAPI/...Character/NetCodeCharacterTransformMonitor.cs