Coder Social home page Coder Social logo

scutrobotlab / simulatorx Goto Github PK

View Code? Open in Web Editor NEW
40.0 3.0 3.0 855.5 MB

华南虎战队开发的 RMUC 2023 比赛模拟器

Home Page: https://simulatorx.org

License: GNU General Public License v3.0

C# 98.35% Smalltalk 0.01% JavaScript 0.07% ShaderLab 1.39% Objective-C++ 0.01% HLSL 0.19%
robomaster blender csharp rider scut unity unity3d

simulatorx's Introduction

Demo4

SimulatorX License: GPL3.0 Unity Project Scutbot

这是华南理工大学华南虎战队 2023 赛季 SimulatorX 模拟器的开源技术报告。本文档主要对模拟器及其支持软件的基础信息进行分享。

详细的资料请移步官方开源网站: simulatorx.org

我们建议您先阅读以下内容,以便于更好地理解官方网站中的文档内容:

其他的相关资料:

Powered By

Unity

RiderBlender

Dependencies | 项目依赖

  • Unity 2020.3.22f1
  • Blender 2.93
  • Rider

Platform | 平台

  • Windows (服务端/客户端)
  • Linux (服务端/客户端)
  • Android (客户端)

Dictionaries | 目录说明

  • Assets Unity项目资源
  • Assets/Scripts Unity项目脚本
  • Assets/Models 项目模型
  • Assets/Scenes 项目场景
  • Assets/Plugins 项目插件
  • Assets/Fonts 项目字体
  • Assets/Textures 项目贴图
  • Assets/Resources/Language 项目语言包

Build | 项目打包

服务端(Server):

  • 打开unity编辑器
  • 在上方菜单栏中找到"Build“ image
  • 展开后选择服务端运行的平台打包

客户端(Client):

  • 同上,找到”Build“
  • 选择”Build Windows Client“

Architecture | 原理架构说明

基本原理

image

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)。

RoadMap | 优化方向

image

Demo | 演示

Demo Demo1 Demo2 Demo3

Downloads

GitHub release (latest by date)

LICENSE

License: GPL3.0

Contribution

Issue first, then pull request. Welcome to join us!

simulatorx's People

Contributors

dokunyu avatar meg-zc avatar waboutme avatar wintbiit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

simulatorx's Issues

how about add aarch64 build for server ?

Think you for your AWESOME work!

It runs nicely on my x86 laptop,

But we are using a Kunpeng920 server which is powered by arm64 instruction set.

how about add support for aarch64 ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.