Compare commits
3 Commits
0c012c8747
...
898a031bb2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
898a031bb2 | ||
|
|
adbfe31dae | ||
|
|
aade13e6c5 |
16
Helper/TimeStore.cs
Normal file
16
Helper/TimeStore.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
|
||||
namespace stick.plugins.kcpable.Helper;
|
||||
|
||||
public static class TimeStore
|
||||
{
|
||||
private static readonly DateTime Epoch = DateTime.UtcNow;
|
||||
private static ulong _savedTimeMs;
|
||||
|
||||
public static void UpdateTime()
|
||||
{
|
||||
_savedTimeMs = (ulong)(DateTime.UtcNow - Epoch).TotalMilliseconds;
|
||||
}
|
||||
|
||||
public static ulong GetTimeMs() => _savedTimeMs;
|
||||
}
|
||||
16
Helper/Timer.cs
Normal file
16
Helper/Timer.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace stick.plugins.kcpable.Helper;
|
||||
|
||||
public class Timer
|
||||
{
|
||||
private ulong _startTimeMs;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
_startTimeMs = TimeStore.GetTimeMs();
|
||||
}
|
||||
|
||||
public ulong ElapsedMs()
|
||||
{
|
||||
return TimeStore.GetTimeMs() - _startTimeMs;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ using UnityEngine;
|
||||
using Steamworks;
|
||||
using HarmonyLib;
|
||||
using System.Data;
|
||||
using stick.plugins.kcpable.Helper;
|
||||
|
||||
namespace stick.plugins.kcpable;
|
||||
|
||||
@@ -13,6 +14,9 @@ namespace stick.plugins.kcpable;
|
||||
[BepInProcess("StickFight.exe")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
|
||||
void Update()
|
||||
{
|
||||
TimeStore.UpdateTime();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,11 @@ namespace stick.plugins.kcpable.Protocol;
|
||||
public class Hello
|
||||
{
|
||||
public byte version = Const.version;
|
||||
public void Send(P2PPackageHandler p2pHandler, NetConnection user)
|
||||
|
||||
// 暂时懒得实现重试和超时
|
||||
// 事实上我甚至没想好要不要在这层实现
|
||||
// 先留个可选参数
|
||||
public void Send(P2PPackageHandler p2pHandler, NetConnection user, ushort retryTimes = 3, ulong timeoutMs = 5000)
|
||||
{
|
||||
p2pHandler.SendSocketP2PPacketToUser(user, [version], (P2PPackageHandler.MsgType)MsgType.Hello);
|
||||
}
|
||||
|
||||
4
plan.md
4
plan.md
@@ -36,8 +36,10 @@
|
||||
- 主动行为(发送)
|
||||
- 进入房间时向所有人发送请求协议升级的握手包~~(考虑重复三次以规避高丢包场景)~~
|
||||
*还是算了,因为默认的tcp本来就会保证送达,改成超时重传,最多重传三次吧*
|
||||
*暂时懒得实现*
|
||||
- 房间里有新人进入时亦然
|
||||
- 同时增加发送握手包快捷键以主动向所有人发送握手包(加上频率限制防止手动flood)
|
||||
- ~~同时增加发送握手包快捷键以主动向所有人发送握手包(加上频率限制防止手动flood)~~
|
||||
*不行,因为这样事实上引入了握手流程,因为升级到kcp的请求结果是不可知的*
|
||||
- 被动行为(接收)
|
||||
- 若在收到合法握手包:
|
||||
- 若与来源客户端正使用`tcp`连接则对其启用`kcp`连接
|
||||
|
||||
Reference in New Issue
Block a user