模拟器组 | 2022暑期学习建议


✦
组别介绍
模拟器组是机器人实验室中较新的组别,主要负责每个赛季 RMUL、RMUC 等 RoboMaster 赛事模拟器的开发。开发模拟器的最主要目的是方便参赛操作手熟悉地图、演练战术,随着模拟器影响力的增大,它也可服务于校内赛、跨地域线上赛等办赛需求。
目前,我们已经发布了2021Simulator和 2022SimulatorX 两款可用的模拟器,也在逐步探索模拟器融入视觉、电控等真车研发环节的潜力。

工作环境搭建
“工欲善其事,必先利其器。”在自己的电脑上搭建好趁手的工作环境是开始学习的第一步。模拟器开发流程中,我们用到的软件有 Uniy、Rider 和 Blender。
✦
#1 必备软件
1. Unity 2020.3.22f1 编辑器(必备)
Unity 引擎(https://unity.com)是我们最主要的工作环境。在安装 Unity HUB 完成之后,请从:https://unity3d.com/get-unity/download/archive 页面中找到 2020.3.22f1 版本编辑器,并调起 Unity HUB 进行安装。安装正确版本的编辑器非常重要。
2. JetBrains Rider 编辑器(必备)
你可以通过教育邮箱申请到免费的 JetBrains 学生授权,并下载安装。在暑期学习过程中,你也可以直接使用 Unity 默认安装的 Visual Studio 2019 编辑器。但在模拟器组正式工作中,我们会统一使用 JetBrains Rider 编辑器。
3. 2.8版本以上的Blender(必备)
Blender 是我们使用的三维建模软件。如果之前没有使用 Blender 建模的经验,我们推荐学习使用最新版本的 Blender。如果过去曾经安装过Blender,你也需要检查软件版本是否在2.8以上。
当然,你也可以选择其他软件进行建模学习,如 Cinema4D, 3ds Max, Maya 等。但需要注意的是,工业级的 CAD 不在推荐学习之列,因其面数过高,超出了模拟器开发的需求。
4. Git 命令行的使用(必做)
除了三个必备软件,你也需要学会各种 Git 命令行的使用,包括 init、add、commit、push、pull 等。当然,在掌握基础命令行之后,你也可在Rider上进行操作。
✦
#2 学习建议
1. Unity官方教程:
https://learn.unity.com/mission/programming-basics?
https://learn.unity.com/mission/programming-simple-functionality?
https://learn.unity.com/project/chu-ji-bian-cheng
https://learn.unity.com/project/zhong-ji-bian-cheng
2. 物理系统相关教程:
https://space.bilibili.com/28562838/channel/seriesdetail?sid=1269173
3. C# 脚本语言学习:
https://www.bilibili.com/video/BV1ys411J7Pn?share_source=copy_web&vd_source=8412a1ae01bbaaf15b07a9e1d32c533b
4. 建模学习:
https://www.bilibili.com/video/BV19t4y1m7aR?share_source=copy_web&vd_source=8412a1ae01bbaaf15b07a9e1d32c533b

学习任务介绍
✦
#1 任务目标
暑期学习的目标有三点。首先,学着完成示例教程中的功能,然后逐步整合成为功能完善的demo,以帮助你熟悉 Unity 编辑器的使用。其次,认识和了解面向对象的编程,并了解其设计模式。最后,具有一定的建模基础。
✦
#2 任务的六个板块
1. 做出可控制的装甲车;
2. 做出可发射子弹的炮台;
3. 整合板块1和2,可移动、可旋转打击的炮台装甲车;
4. 建模RMUC基地模型,并将导入Unity为其设置血条;
5.实现随机生成增益宝石及进攻敌人;
6. 整合各个部分并打包为完整的基地保卫战游戏,面试时验收;
在各项任务要求中,除加分项以外都是必做项。

学习任务详细
✦
#1 制作可控制的炮台装甲车
任务目标:
在Unity引擎中,根据教程及素材制作可控制的车辆。
教程:
1.https://docs.unity3d.com/cn/2021.2/Manual/InstantiatingPrefabs.html
2. https://learn.unity.com/project/unit-1-driving-simulation?
3. 学习建议中的Unity教程
任务要求:
【实现炮台装甲车基础控制功能】
1. 实现车辆底盘四个方向的简单移动。
2.(加分项)实现四个轮子独立仿真,引入PID逻辑;
3. 实现鼠标控制炮台视角移动;
4. 实现按下F分别切换第三人称视角、炮台第一人称视角以及驾驶员第一人称视角。
【实现发射子弹】
1. 根据枪口姿态,生成子弹,并使子弹按初速度方向飞出。
2. 使子弹真实的物理表现(下坠、反弹等)。
3.(加分项)实现弹道散布。
你将学到:
1. 对Unity编辑器界面有基本认识;
2. 对C#脚本的编写有基本认识;
3. 熟悉Unity提供的部分常用的API。
✦
#2 实现随机生成宝石及进攻敌人
任务目标:
制作会自主运动、识别到目标后会自动瞄准、反击的哨兵机器人。
教程:
https://learn.unity.com/project/unit-4-gameplay-mechanics?
任务要求:
【随机生成增益宝石】
1. 第一个宝石生成,并于其被捕获后第15秒生成第二个;
2. 增益宝石可提高炮台子弹的射速以及车辆的运动速度,持续8秒。
【随机生成进攻敌人】
1. 敌人从场地的各个位置生成。生成位置需在以基地为圆心、半径自行设置的范围外;
2. 敌人会自动朝着基地移动。
【实现扣血逻辑】
当敌人进入基地一定范围,敌人自爆,对基地造成伤害。基地血量以及敌人伤害量自行设计。
你将学到:
1. 简单的协程使用(在后续开发任务中使用频率极高);
2. Unity中相机视角的使用;
3. 如何在场景中生成预制件等;
4. 进一步熟悉Unity的功能。
✦
#3 建模并实现基地功能
任务要求:
使用建模软件按照规格图片进行基地建筑的建模、导入,并实现整体游戏逻辑。
素材(请在RM官网提供的RMUC规则手册中寻找):
1. 基地的规格图片;
2. 基地效果图。
任务要求:
【基地建模】
1.使用建模软件进行基地的建模并导入Unity;
2.(加分项)对模型进行UV拆分、材质绘制等。
【基地功能实现】
1. 使用 shaderGraph 等功能,创建用于表示基地血量高低的发光灯条
2. 使基地在被敌人打击时扣血。
【成果结合】
1.将基地和上述两个任务的机器人及场地合并;
2.游戏逻辑为:玩家操控炮台装甲车,对随机生成的敌人发起反击,阻止敌人对基地造成伤害,当基地血量为0时游戏结束;
3.(加分项)设计重生按钮等方便游戏推进的小组件。
你将学到:
1. 完整的Unity工作流程;
2. 建模的基本流程;
3. Unity中的shaderGraph功能的使用;
4. 学会Unity中对象之间的交互。

任务验收
在完成所有任务后,你需要测试并保证整个软件的可玩性(控制正常、机器人功能正常、逻辑正常触发),并将其打包为 Windows 64位可执行文件。在 Github 上创建仓库后,结合 Git-LFS,将你的 工程文件全部提交到 Git 仓库中,然后将你的可执行文件提交到仓库的 Release 中。
在查看工程实现前,可执行文件会作为任务验收的优先手段,请保证其正常运行!我们在招新面试时会对任务完成度进行考察,规划好自己的时间,加油完成它。

小贴士
实践是检验理论的一个重要手段,面试的时候会考核大家实践任务的完成情况,大家一定要用心完成。
面试时请携带能够代表个人水平的比赛作品或展示小任务的完成情况,详情请见后续招新咨询qq群通知~


文案 / 模拟器组
编辑 / 张嘉俊
美工 / 胡钰莹
审核 / 徐心卓






