File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ # netcodejs 项目(5/1 前计划)
2
+
3
+ ## netcode
4
+
5
+ ### Roadmap
6
+
7
+ - 基本框架大概完成。
8
+ - Component 属性复制
9
+ - Component Rpc
10
+ - NetComp 支持继承
11
+ - Domain、Entity 的实例获取。 所有 NetComp 必须继承 Comp 类
12
+ - 必须支持回滚。 Case: 回放系统
13
+ - Test
14
+ - 对比单机和联网状态下的性能差距。
15
+ - ArrayBuffer 序列化库对接。 最简的数据结构。 支持 bits 等其他无缝写入。 Lax
16
+ - 支持多序列化库,同时支持 string 和 ArrayBuffer,需要重构。然后 string 是用来作学习用途。
17
+ - 上下文/权限管理。
18
+ - 函数自带 Context,分辨来自于哪个客户端
19
+ - 用户自己拓展权限管理,使用 ClientInfo 类似的组件进行认证。
20
+ - Entity 内置权限校验逻辑,这里 UE 上的自治代理、代理、XXX(后面在讨论)
21
+ - Rpc Return 返回值传输 参考 Socket.IO
22
+ - 必须要求 Rpc 函数的返回值 Promise<RetrunType > | void
23
+ - 封装类型,提供自己的 Promise 类,RpcResp -> IsDone / GetValueAsync: Promise<ReturnType > / Value: ReturnType
24
+ - 同步频率。每个 Entity 可以改变自己同步频率。相关性:插值
25
+ - 同步优先级。限制每帧同步数量。权重 = 初始权重 + 等待时间。优先处理队首的 Entity。
26
+
27
+ - 控制流量。
28
+ - 保证游戏体验。
29
+
30
+ - 网络同步相关的内置逻辑
31
+ - 属性向内插值 @NetInterplateVar @NetArr 。UE 有类似的做法。必须有前后两个状态。
32
+ - 第一种 前一帧 -> 后一阵 = 最终状态
33
+ - 第二种 逻辑的最终状态 -> 渲染层面的最终状态。
34
+ - View Pos 快速接近逻辑状态
35
+ - 时钟同步
36
+ - 本地时间 客户端时钟
37
+ - 远端时间 远端可以对本地做影响。纠正过程,但是也需要平滑纠正。
38
+ - Final Time = Local + (Remote - Local) \* 0.5 (待讨论,Valve 本条命有公式, UE)
39
+
40
+ ## loki-buffer (ArrayBuffer)
41
+
42
+ ### Roadmap
43
+
44
+ - DataView 版本基础完成。未测试。
45
+ - 最小单位为 Bit 的版本。
46
+ - 提供一个 Interface 版本。类似 Java-slf4j,仓库引用 Interface,子树的行为引用 Interface。
47
+ - 规范好大版本和小版本。 Npm
48
+ - arraybuffer -> reader
49
+ - reader.set(arraybuffer)
50
+ - new Reader(arraybuffer)
51
+ - transfer / append
52
+ - 从其他 Buffer 里拷贝数据添加到末尾。
53
+ - Benchmark 对比原生序列化和 protobuf 之类的性能。
54
+ - Test。
55
+
56
+ ## example
57
+
58
+ ### cases
59
+
60
+ - 性能消耗。同屏巨量小球同步。
61
+ - 应用层面
62
+ - 快照同步(Server 权威)
63
+ - 状态同步
64
+ - 预测+回滚
65
+ - Demo 回看系统。
66
+ - 优先级同步
67
+ - 跨界
68
+ - 聊天室
You can’t perform that action at this time.
0 commit comments