这是华南理工大学华南虎战队 2023 赛季 SimulatorX 模拟器的开源技术报告。本文档主要对模拟器及其支持软件的基础信息进行分享。
详细的资料请移步官方开源网站: simulatorx.org
我们建议您先阅读以下内容,以便于更好地理解官方网站中的文档内容:
其他的相关资料:
- Unity 2020.3.22f1
- Blender 2.93
- Rider
- Windows (服务端/客户端)
- Linux (服务端/客户端)
- Android (客户端)
Assets
Unity项目资源Assets/Scripts
Unity项目脚本Assets/Models
项目模型Assets/Scenes
项目场景Assets/Plugins
项目插件Assets/Fonts
项目字体Assets/Textures
项目贴图Assets/Resources/Language
项目语言包
服务端(Server):
客户端(Client):
- 同上,找到”Build“
- 选择”Build Windows Client“
基本原理
Flux: 由于不好区分 Store 和 View,我们将这两个合到了一起,由 Dispatcher,Store,Action 三种成分构成。
Pros:
- 组件结构规范、耦合度低。
- Dispatcher 的存在方便实现录制、统计等功能。
- 应对规则修改,迭代快速
Cons:
- 需要同步修改 Action,InputActions,Receive 存在心智负担。
- 受 Flux 结构限制,事件传播只有单链,某些逻辑实现很绕。
- 运行在主线程上的 Dispatcher 和分帧发送可能形成性能瓶颈。
- 事件没有复用,无限 new 导致内存占用增长。
- 没有事件监控,传播路径和影响范围难以查明,Debug 困难。
- 跨端同步实现不够自然。
- 使用字符串做事件索引,存在心智负担、性能损耗。
Mirror 结合 Flux,两端之间通信的时机和内容都管理得比较好。
Pros:
- 组件丰富,又加上了 Smooth Sync,总的来说使用很舒适。
- 两端之间通信链路限死,再怎么 Bug 都是那一条,排查方便。
- 同时可以做服务端客户端,而且局域网公网可切换。
- 公网运行稳定,没有出过太多幺蛾子。
Cons:
- 从零基础到学习上手,有很多概念要掌握,包括共用一套代码。
- 今年全部移到服务端,搞得客户端都没有预测,同步会卡。
- 跨端同步强行弄了个 ChildAction 出来,能用但是很诡异。
- Mirror 自带的房间管理不算特别好用。
- 子弹等依然是各仿真各的,结果一致。
今年改进: 我们对网络同步逻辑进行了进一步优化,解决了部分前几个版本没能解决的遗留问题。 Flux与Mirror融合的架构 Flux的Action在服务器端流动,实现功能后同步至客户端进行效果展示。 但是,在这种情况下,Action异常过多时会导致服务器端信息阻塞,从而影响所有游戏玩家的游戏体验。在2023版本中进行了一定的修正。
仍然存在一些问题: 比如机器人飞天、地震和谜之抖动,此类问题由于复现条件苛刻导致难以定位问题,一直没能完全修复是遗憾之一,希望在下个赛季的新版本可以修复,或借助于社区的力量。
场地模型
相较上版本使用更高清的纹理材质。 未来版本 将使用插件进行更高效,精细的建模,创建更精美的贴图以及使用高清渲染管线(HDRP)。
Issue first, then pull request. Welcome to join us!