Skip to content

Commit a9cbef7

Browse files
committed
docs: add roadmap
1 parent 709d6c0 commit a9cbef7

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

roadmap.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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+
- 聊天室

0 commit comments

Comments
 (0)