Skip to content

Commit d2f9c45

Browse files
committed
Add network sync types.
1 parent 8cbdf16 commit d2f9c45

File tree

21 files changed

+92
-69
lines changed

21 files changed

+92
-69
lines changed

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Unity/NetClientP2pBehaviour.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class NetClientP2pBehaviour : NetClientBehaviour
1515
public int MtuInterval = 1100;
1616
public int RudpDisconnectTimeout = 5000;
1717
public PeriodicSyncType SyncType = PeriodicSyncType.None;
18-
public float SyncInterval = 0.5f;
18+
public float SyncInterval = 0.1f;
1919

2020
public NetClientP2p ClientP2p => _client as NetClientP2p;
2121

sandbox/Dev/Client/Assets/Plugins/EuNet/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.zestylife.eunet",
33
"displayName": "EuNet",
4-
"version": "1.1.12",
4+
"version": "1.1.13",
55
"unity": "2018.4",
66
"description": "Easy Unity Network (EuNet) is a network solution for multiplayer games.",
77
"keywords": [ "P2P", "HolePunching", "RPC", "RELAY" ],

sandbox/Dev/Client/Assets/Scenes/Login.unity

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ MonoBehaviour:
477477
_precisionForQuaternionSync: 0.1
478478
_limitForPositionSqrtSync: 100
479479
_limitForRotationSync: 90
480+
_defaultSyncTime: 0.1
480481
--- !u!4 &1164532249
481482
Transform:
482483
m_ObjectHideFlags: 0
@@ -547,7 +548,7 @@ MonoBehaviour:
547548
MtuInterval: 1100
548549
RudpDisconnectTimeout: 5000
549550
SyncType: 1
550-
SyncInterval: 0.5
551+
SyncInterval: 0.1
551552
--- !u!114 &1283901517
552553
MonoBehaviour:
553554
m_ObjectHideFlags: 0

sandbox/Dev/Client/Assets/Scripts/Actor/Actor.cs

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,23 @@ public class Actor : MonoBehaviour , INetViewHandler, INetSerializable , INetVie
1313
private ActorViewRpc _actorRpc;
1414
private CharacterController _moveController;
1515
private Vector3 _moveDirection;
16-
private Vector3? _netSyncPosition;
16+
private SyncVector3 _netPosition;
1717
private float _moveSpeed = 10f;
1818

19+
public Vector3 MoveVelocity
20+
{
21+
get
22+
{
23+
return _moveDirection * _moveSpeed;
24+
}
25+
}
26+
1927
private void Awake()
2028
{
2129
_view = GetComponent<NetView>();
2230
_actorRpc = new ActorViewRpc(_view);
2331
_moveController = GetComponent<CharacterController>();
32+
_netPosition = transform.position;
2433
}
2534

2635
private void Start()
@@ -35,32 +44,31 @@ private void OnDestroy()
3544

3645
private void Update()
3746
{
38-
var moveDelta = _moveDirection * _moveSpeed * Time.deltaTime;
39-
40-
if (_netSyncPosition.HasValue)
47+
if(_view.IsMine())
4148
{
42-
// 네트워크 위치와 동기화를 하자
43-
_netSyncPosition += moveDelta;
44-
45-
var dist = _netSyncPosition.Value - transform.localPosition;
46-
moveDelta = dist * Mathf.Min(Time.deltaTime * 10f, 1f);
49+
var moveDelta = MoveVelocity * Time.deltaTime;
50+
_moveController.Move(moveDelta);
51+
}
52+
else
53+
{
54+
_netPosition.Update(Time.deltaTime);
55+
_moveController.Move(_netPosition - transform.position);
4756
}
48-
49-
_moveController.Move(moveDelta);
5057
}
5158

5259
public void SetMoveDirection(float x, float y)
5360
{
5461
_actorRpc
5562
.ToOthers(DeliveryMethod.Unreliable)
56-
.OnSetMoveDirection(x, y);
63+
.OnSetMoveDirection(x, y, transform.position);
5764

58-
OnSetMoveDirection(x, y);
65+
OnSetMoveDirection(x, y, transform.position);
5966
}
6067

61-
public Task OnSetMoveDirection(float x, float y)
68+
public Task OnSetMoveDirection(float moveX, float moveY, Vector3 position)
6269
{
63-
_moveDirection = new Vector3(x, 0f, y).normalized;
70+
_moveDirection = new Vector3(moveX, 0f, moveY).normalized;
71+
_netPosition.Set(transform.position, position, MoveVelocity);
6472
return Task.CompletedTask;
6573
}
6674

@@ -87,14 +95,15 @@ public void OnViewMessage(NetDataReader reader)
8795
public bool OnViewPeriodicSyncSerialize(NetDataWriter writer)
8896
{
8997
writer.Write(_moveDirection);
90-
writer.Write(transform.localPosition);
98+
writer.Write(transform.position);
9199
return true;
92100
}
93101

94102
public void OnViewPeriodicSyncDeserialize(NetDataReader reader)
95103
{
96104
_moveDirection = reader.ReadVector3();
97-
_netSyncPosition = reader.ReadVector3();
105+
var position = reader.ReadVector3();
106+
_netPosition.Set(transform.position, position, MoveVelocity);
98107
}
99108

100109
public void Serialize(NetDataWriter writer)

sandbox/Dev/Client/Assets/Scripts/Ui/UiGame.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using EuNet.Unity;
2-
using System.Collections;
3-
using System.Collections.Generic;
2+
using System;
43
using System.Text;
4+
using UniRx;
5+
using UniRx.Triggers;
56
using UnityEngine;
67
using UnityEngine.UI;
78

@@ -11,10 +12,14 @@ public class UiGame : MonoBehaviour
1112

1213
private void Start()
1314
{
14-
15+
gameObject
16+
.AddComponent<ObservableUpdateTrigger>()
17+
.UpdateAsObservable()
18+
.Sample(TimeSpan.FromMilliseconds(500))
19+
.Subscribe(OnUpdateUI);
1520
}
1621

17-
private void Update()
22+
private void OnUpdateUI(Unit unit)
1823
{
1924
StringBuilder builder = new StringBuilder();
2025

sandbox/Dev/Client/Assets/Shared/Common/CodeGen/EuNet.Rpc.CodeGen.cs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ namespace Common
530530
{
531531
public interface IActorViewRpc_NoReply
532532
{
533-
void OnSetMoveDirection(float x, float y);
533+
void OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position);
534534
void OnTest(UnityEngine.Vector3 position, UnityEngine.Quaternion rotation);
535535
}
536536

@@ -601,14 +601,15 @@ public ActorViewRpc WithTimeout(TimeSpan? timeout)
601601
return new ActorViewRpc(Target, RequestWaiter, timeout);
602602
}
603603

604-
public async Task OnSetMoveDirection(float x, float y)
604+
public async Task OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position)
605605
{
606606
var _writer_ = NetPool.DataWriterPool.Alloc();
607607
try
608608
{
609609
_writer_.Write((int)IActorViewRpc_Enum.OnSetMoveDirection);
610-
_writer_.Write(x);
611-
_writer_.Write(y);
610+
_writer_.Write(moveX);
611+
_writer_.Write(moveY);
612+
_writer_.Write(position);
612613
await SendRequestAndWait(_writer_);
613614
}
614615
finally
@@ -636,14 +637,15 @@ public async Task OnSetMoveDirection(float x, float y)
636637
}
637638
}
638639

639-
void IActorViewRpc_NoReply.OnSetMoveDirection(float x, float y)
640+
void IActorViewRpc_NoReply.OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position)
640641
{
641642
var _writer_ = NetPool.DataWriterPool.Alloc();
642643
try
643644
{
644645
_writer_.Write((int)IActorViewRpc_Enum.OnSetMoveDirection);
645-
_writer_.Write(x);
646-
_writer_.Write(y);
646+
_writer_.Write(moveX);
647+
_writer_.Write(moveY);
648+
_writer_.Write(position);
647649
SendRequest(_writer_);
648650
}
649651
finally
@@ -672,7 +674,7 @@ void IActorViewRpc_NoReply.OnTest(UnityEngine.Vector3 position, UnityEngine.Quat
672674
[RequireComponent(typeof(NetView))]
673675
public abstract class ActorViewRpcServiceBehaviour : MonoBehaviour, IRpcInvokable, IActorViewRpc
674676
{
675-
public abstract Task OnSetMoveDirection(float x, float y);
677+
public abstract Task OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position);
676678
public abstract Task<UnityEngine.Color> OnTest(UnityEngine.Vector3 position, UnityEngine.Quaternion rotation);
677679
public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataWriter _writer_)
678680
{
@@ -682,9 +684,10 @@ public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataW
682684
{
683685
case IActorViewRpc_Enum.OnSetMoveDirection:
684686
{
685-
var x = _reader_.ReadSingle();
686-
var y = _reader_.ReadSingle();
687-
await OnSetMoveDirection(x, y);
687+
var moveX = _reader_.ReadSingle();
688+
var moveY = _reader_.ReadSingle();
689+
var position = _reader_.ReadVector3();
690+
await OnSetMoveDirection(moveX, moveY, position);
688691
}
689692
break;
690693
case IActorViewRpc_Enum.OnTest:
@@ -712,9 +715,10 @@ public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataW
712715
{
713716
case IActorViewRpc_Enum.OnSetMoveDirection:
714717
{
715-
var x = _reader_.ReadSingle();
716-
var y = _reader_.ReadSingle();
717-
await _view_.FindRpcHandler<IActorViewRpc>().OnSetMoveDirection(x, y);
718+
var moveX = _reader_.ReadSingle();
719+
var moveY = _reader_.ReadSingle();
720+
var position = _reader_.ReadVector3();
721+
await _view_.FindRpcHandler<IActorViewRpc>().OnSetMoveDirection(moveX, moveY, position);
718722
}
719723
break;
720724
case IActorViewRpc_Enum.OnTest:

sandbox/Dev/Client/Assets/Shared/Common/ViewRpcInterface/IActorViewRpc.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Common
66
{
77
public interface IActorViewRpc : IViewRpc
88
{
9-
Task OnSetMoveDirection(float x, float y);
9+
Task OnSetMoveDirection(float moveX, float moveY, Vector3 position);
1010
Task<Color> OnTest(Vector3 position, Quaternion rotation);
1111
}
1212
}

sandbox/Dev/Common/CodeGen/EuNet.Rpc.CodeGen.cs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ namespace Common
530530
{
531531
public interface IActorViewRpc_NoReply
532532
{
533-
void OnSetMoveDirection(float x, float y);
533+
void OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position);
534534
void OnTest(UnityEngine.Vector3 position, UnityEngine.Quaternion rotation);
535535
}
536536

@@ -601,14 +601,15 @@ public ActorViewRpc WithTimeout(TimeSpan? timeout)
601601
return new ActorViewRpc(Target, RequestWaiter, timeout);
602602
}
603603

604-
public async Task OnSetMoveDirection(float x, float y)
604+
public async Task OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position)
605605
{
606606
var _writer_ = NetPool.DataWriterPool.Alloc();
607607
try
608608
{
609609
_writer_.Write((int)IActorViewRpc_Enum.OnSetMoveDirection);
610-
_writer_.Write(x);
611-
_writer_.Write(y);
610+
_writer_.Write(moveX);
611+
_writer_.Write(moveY);
612+
_writer_.Write(position);
612613
await SendRequestAndWait(_writer_);
613614
}
614615
finally
@@ -636,14 +637,15 @@ public async Task OnSetMoveDirection(float x, float y)
636637
}
637638
}
638639

639-
void IActorViewRpc_NoReply.OnSetMoveDirection(float x, float y)
640+
void IActorViewRpc_NoReply.OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position)
640641
{
641642
var _writer_ = NetPool.DataWriterPool.Alloc();
642643
try
643644
{
644645
_writer_.Write((int)IActorViewRpc_Enum.OnSetMoveDirection);
645-
_writer_.Write(x);
646-
_writer_.Write(y);
646+
_writer_.Write(moveX);
647+
_writer_.Write(moveY);
648+
_writer_.Write(position);
647649
SendRequest(_writer_);
648650
}
649651
finally
@@ -672,7 +674,7 @@ void IActorViewRpc_NoReply.OnTest(UnityEngine.Vector3 position, UnityEngine.Quat
672674
[RequireComponent(typeof(NetView))]
673675
public abstract class ActorViewRpcServiceBehaviour : MonoBehaviour, IRpcInvokable, IActorViewRpc
674676
{
675-
public abstract Task OnSetMoveDirection(float x, float y);
677+
public abstract Task OnSetMoveDirection(float moveX, float moveY, UnityEngine.Vector3 position);
676678
public abstract Task<UnityEngine.Color> OnTest(UnityEngine.Vector3 position, UnityEngine.Quaternion rotation);
677679
public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataWriter _writer_)
678680
{
@@ -682,9 +684,10 @@ public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataW
682684
{
683685
case IActorViewRpc_Enum.OnSetMoveDirection:
684686
{
685-
var x = _reader_.ReadSingle();
686-
var y = _reader_.ReadSingle();
687-
await OnSetMoveDirection(x, y);
687+
var moveX = _reader_.ReadSingle();
688+
var moveY = _reader_.ReadSingle();
689+
var position = _reader_.ReadVector3();
690+
await OnSetMoveDirection(moveX, moveY, position);
688691
}
689692
break;
690693
case IActorViewRpc_Enum.OnTest:
@@ -712,9 +715,10 @@ public async Task<bool> Invoke(object _target_, NetDataReader _reader_, NetDataW
712715
{
713716
case IActorViewRpc_Enum.OnSetMoveDirection:
714717
{
715-
var x = _reader_.ReadSingle();
716-
var y = _reader_.ReadSingle();
717-
await _view_.FindRpcHandler<IActorViewRpc>().OnSetMoveDirection(x, y);
718+
var moveX = _reader_.ReadSingle();
719+
var moveY = _reader_.ReadSingle();
720+
var position = _reader_.ReadVector3();
721+
await _view_.FindRpcHandler<IActorViewRpc>().OnSetMoveDirection(moveX, moveY, position);
718722
}
719723
break;
720724
case IActorViewRpc_Enum.OnTest:

sandbox/Dev/Common/ViewRpcInterface/IActorViewRpc.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Common
66
{
77
public interface IActorViewRpc : IViewRpc
88
{
9-
Task OnSetMoveDirection(float x, float y);
9+
Task OnSetMoveDirection(float moveX, float moveY, Vector3 position);
1010
Task<Color> OnTest(Vector3 position, Quaternion rotation);
1111
}
1212
}

src/EuNet.Client/EuNet.Client.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
66
<Authors>zestylife</Authors>
77
<Company></Company>
8-
<Version>1.1.12</Version>
8+
<Version>1.1.13</Version>
99
<Copyright></Copyright>
1010
<PackageProjectUrl>https://github.com/zestylife/EuNet</PackageProjectUrl>
1111
<RepositoryUrl>https://github.com/zestylife/EuNet</RepositoryUrl>

0 commit comments

Comments
 (0)