ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

U3D|毕设答辩|毕业设计项目|Unity|基于unity的赛车竞速游戏的设计与开发

U3D|毕设答辩|毕业设计项目|Unity|基于unity的赛车竞速游戏的设计与开发 标题基于unity的赛车竞速游戏的设计与开发文档介绍1 绪论1.1 研究背景和意义计算机图形学技术一直在飞速发展硬件性能也持续优化于是电子游戏产业就成了全球数字经济非常重要的一部分诸多游戏类型当中赛车竞速类游戏靠紧绷又刺激的竞技体验十分逼真的驾驶模拟感以及丰富多彩的视觉效果一直保持着很重要的市场地位从早些年的街机赛车游戏一直到现在的依靠物理引擎的高仿真度驾驶模拟器赛车游戏的发展过程体现了游戏技术的持续改善情况。近些年来Unity 引擎成为主流的跨平台游戏制作工具依靠自身出色的表现力完备的物理系统以及人性化的开发环境渐渐受更多开发者喜爱Unity 引擎既可以显示高质量的 3D 图像而且其中自带的物理引擎模块能够精准模仿汽车的加速度转向以及悬挂系统等繁杂的物理现象给赛车游戏开发构筑了稳固的技术根基不过想要研发出操控顺畅功能齐全又具有沉浸感的赛车竞速游戏依然会碰到很多技术难题譬如说要准确创建车辆的物理模型还要协调好众多模块更要达成随时返回数据的功能等。本课题的研究意义重点体现于如下几处其一经由系统地规划并达成赛车竞速游戏可深入考察Unity引擎在繁杂交互情形下的应用潜能给同类游戏开发赋予参考范例。其二该项目包含登录系统车辆选定竞速运作天气系统特效系统以及音频系统这些完整的功能模块塑造起封闭的游戏感受具备较高的工程操作价值其三借助探究车辆物理系统同天气系统的结合原理探寻环境要素对游戏物理现象产生影响的途径为提升游戏真实性给予可资模仿的技术手段。 其四本项目所采取的模块化设计观念及单例经营模式给大型游戏项目的架构设计带来不错的参考价值。1.2 国内外研究现状1.2.1 国外研究现状国外在赛车竞速游戏领域开始得比较早经过几十年的发展已经形成起成熟的技术体系和丰富的产物矩阵从技术角度来讲国外赛车游戏的研究重点在于车辆物理仿真即时渲染技术以及人工智能对手等方面。就物理仿真而言商业游戏引擎 Unreal Engine 和 Unity 都供应了完备的物理组件开发者能够凭借这些组件创建高度逼真的车辆动力学模型比如赛车游戏中悬挂系统的仿真轮胎与地面摩擦力的计算空气动力学效应等都已有了较为成熟的技术方案。国外的赛车游戏从商业产品角度看表现出多方面化发展的态势有一种是以《极限竞速》系列《GT赛车》系列为典型的拟真驾驶模拟游戏这些游戏看重物理的真实感受细致塑造每一辆车的零件并利用高精度的赛道扫描技术来复原真实的赛场环境。还有一种是像《极品飞车》系列这样的街机风赛车游戏这类游戏侧重于带给玩家刺激感与速度感对于物理真实与否则采取了某种妥协态度更多关注视觉效果以及故事情节带给玩家的感受伴随着虚拟现实技术不断发展利用头显设备加体感外设所带来全方位沉浸感的赛车游戏成了国外的研究焦点之一它会给玩家带来更强临场氛围的驾驶乐趣。在技术社区当中Unity官方论坛GitHub等平台出现了很多开源的赛车游戏项目和技术教程其内容包含从基本的车辆控制一直到高级别的视觉特效等诸多层面这些开源资源给后来的研究者给予了珍贵的学习素材与技术参照。1.2.2 国内研究现状国内赛车竞速游戏的发展起步较晚近些年却呈快速发展趋势从商业角度看国内游戏公司已推出不少具备市场竞争力的赛车游戏其画质操控体验以及盈利模式均表现良好。但是同国外先进的3A级赛车游戏比起来国内作品在物理引擎设置赛道仿真精确度等方面还是存在一些差距。从学术研究角度看国内高校及研究机构针对赛车游戏相关技术展开研究多集中于虚拟现实应用及时渲染改良人机交互设计等方面不少计算机科学与技术数字媒体技术专业毕业生的设计课题当中赛车游戏由于其综合特性较强成了学生综合运用已学知识的常见选择此类研究常常着重于某一项具体技术的达成比如改良车辆控制算法探寻赛道生成技术以及做到多人在线同步机制等等。在技术开发层面Unity 引擎在国内游戏开发领域占据着引领的地位众多独立开发者以及游戏公司均选用 Unity 作为赛车游戏开发的工具平台。Unity Connect 这类国内技术社区上存在 CSDN 掘金等它们汇集了许多有关赛车游戏开发的教学和经验分享营造出不错的技术交流环境但是系统性地针对项目架构模块设计直至功能达成开展全面探究的情况仍较为少见而本课题便依托这样的现实情况试图给出一份完备的赛车竞速游戏设计计划。1.3 主要研究内容本课题要凭借Unity引擎来规划并完成一个功能完善体验不错的赛车竞速游戏研究内容包含从系统架构规划一直到各个功能模块达成的整个过程大致覆盖如下几处研究游戏的整体架构设计时可以利用模块化的设计理念把游戏系统拆解为赛车控制模块竞速经营模块摄像机跟随模块用户界面模块天气系统模块以及音频管理模块等诸多相对独立的子系统依靠单例模式来管理这些全局模块从而保证各个模块彼此之间藕合度低而内聚度高这样就有利于日后执行功能扩充和维持工作。研究车辆物理系统如何达成依靠Unity自带的物理引擎以及车轮碰撞器部件来规划车辆的发动控制转向控制制动控制这些主要功能探究前后轮驱动在达成时存在的差别考察最大扭矩最大转向角等参数给车辆操控手感带来怎样的影响做到契合实际驾驶感觉的车辆控制逻辑。研究竞速经营系统的规划做到比赛流程从开始到结束的全程守护覆盖比赛启动检查点监测圈数计算计时计分直至比赛结束这些阶段。规划依靠顺序检查点的圈数判断算法保障圈数计算无误并达成成绩数据在本地保存以及排行榜显示的效果。研究辅助系统的整合与改进情况设计出动态天气系统达成晴天雨天雪天雾天这四种天气类型可以随意切换还要形成天气和车辆物理之间的联系机制使得在不同的天气状况下车辆的操控感受有所区别做到完善的音频管理系统可以分别控制背景音乐和游戏音效创建粒子特效系统当碰撞受损等事件出现的时候就会启动相应的视觉特效。研究用户交互界面的设计并形成登录界面车辆选择界面起始界面游戏主界面以及成绩显示界面等完整的UI系统设计即时车况显示板块该板块可动态表现车速车损等重要信息达成排行榜数据的动态产生及奖品显示功能。经由前面的研究内容最终会形成起一套较为完备的赛车竞速游戏解决方案针对该开发进程中的关键技术及常见问题展开分析与总结以此来给予同类项目开发一些参照。2 相关技术介绍2.1 Unity游戏引擎Unity是由Unity Technologies开发的跨平台游戏引擎它被全面用于2D3D游戏以及虚拟现实加强现实等领域。从2005年发布至今Unity依靠自身的易用性跨平台能力以及功能强大的生态系统已经成为全球范围内广受喜爱的游戏开发工具之一本项目以Unity 2022.1.9f1c1版为开发依据此版本在渲染管线物理系统以及性能改良等方面有着明显的改善。Unity引擎的核心优势体现在如下几处第一其采用组件化的架构设计游戏对象可经由挂接不同组件达成特定功能此设计大幅提升了代码的可重复利用率及开发效率在赛车游戏中利用挂接刚体组件与车轮碰撞器组件可以立即达成车辆的物理行为开发人员仅需书写控制逻辑就能处理复杂的物理交互。第二Unity自带物理引擎依托NVIDIA PhysX技术该引擎能精准模拟刚体动力学碰撞检测以及关节约束等物理情形给赛车游戏构筑稳固根基第三Unity存在可编程渲染管线本项目选用通用渲染管线既确保了良好的画质显示效果又考虑到了移动设备的性能改善事宜。Unity引擎具备完备的资源经营系统该系统可对各种格式的模型贴图以及音频资源执行导入与经营操作。位于Resources目录之下的资源能够在运行期间执行动态加载这样就方便达成按需加载资源并实施内存经营的目的Unity的预制体系统使得开发者能够把已设置好的游戏对象当作模板储存起来并在场景当中反复创建实例加以利用这在应对各类车型的时候十分有用。2.2 C#编程语言C#属于面向对象的编程语言由微软公司所研发也是Unity 引擎的关键脚本语言C#融合了C的强劲功能以及Java的便捷性具备类型安全垃圾收集丰富的类库这些特点很适合开发大型游戏项目。C#在面向对象编程中有三个重要特性即封装继承和多态这些特性能帮助开发者创建清晰且可守护的代码框架。在当前项目里很多关键功能模块比如赛车控制类竞速经营类UI 经营类等都是用单例模式来封装的这样做就能保证全局只有一个实例运行从而防止出现资源冲突和数据不一致的情况而且C#的命名空间机制对于整理大量的脚本文件很有好处可以提升代码的可读性。C#语言中的委托和事件机制被广泛地运用到游戏开发当中当游戏里某个事件产生的时候比如赛车经过检查点或者比赛结束时可以经由激发事件来通知其他模块做相应的处理从而做到了模块之间的解耦。C#具备协程功能这给开发带来很多方便之处该功能不会阻塞主线程就能做到延时操作以及异步处理本项目里的检查点检测协程就依靠了这个特性。C#和Unity引擎结合紧密Unity包含很多内置API可被C#脚本调用涉及游戏对象管理组件操作物理模拟渲染控制等方面开发者只需少量代码就能达成复杂功能明显减小了游戏开发的技术难度。2.3 数据存储技术游戏开发当中把数据持久化存储起来很关键本项目需将用户账号信息游戏得分数据等存入本地这样玩家下次玩这款游戏时就能看到自己的以往成绩主要利用PlayerPrefs这种本地存储机制并配合JSON数据格式来做数据的持久化运作。Playerprefs 是 Unity 某种轻量的数据存储方式它可以像键值对那样存储数据所支持的数据类型包含整数浮点数和字符串这三种Playerprefs把数据存储于系统的注册表或者偏好设置文件当中很合适用来保存游戏设置玩家进度之类的小规模数据在当前这个项目里用户登录信息成绩排行数据等等都是经由 Playerprefs 来做到存储目的不过 Playerprefs 的长处在于使用起来十分简便不需要额外去执行配置步骤但它存在的存储空间是比较小的所以并不适合用于存储大量的数据内容。本项目要存储结构化的成绩数据于是采用JSON格式执行数据的序列化与反序列化操作JSON属于一种轻量级的数据交换格式具备不错的可读性和跨平台能力。在需保存成绩数据的时候把成绩列表对象序列化成JSON字符串再存入PlayerPrefs当中而想要读取成绩数据时则从PlayerPrefs获取该JSON字符串并将其反序列化为成绩列表对象这样一种数据存储方法既能保障数据完整又方便后续执行各类数据处理任务比如排行榜排序成绩增删之类的。本项目想要方便开发与调试于是具备了数据清除功能开发人员可在运行时经由快捷键清除本地储存的游戏数据该功能在检测阶段颇为实用能够立即重置游戏状态免除由于检测数据汇集引发的异常状况。3 项目分析3.1 业务需求赛车竞速游戏的业务需求源于用户诉求与市场趋势的双重驱动。用户群体呈现多样化特征核心玩家追求真实的驾驶体验希望游戏精确模拟加速响应、转向手感、悬挂系统等物理特性休闲玩家更看重娱乐性和爽快感期待丰富的视觉特效和音效反馈竞技型玩家关注可重玩性希望通过排行榜和奖品解锁机制获得持续成就感。因此项目需提供多层次体验兼顾拟真驾驶与休闲娱乐。从市场角度看移动游戏快速发展为赛车游戏带来广阔空间Unity引擎的跨平台能力使游戏可部署于PC、移动设备等多种终端。面对同类产品竞争项目必须打造差异化优势动态天气系统、车辆损伤机制、奖品解锁系统等特色功能正是形成差异的关键。从运营角度考量游戏需具备良好的数据管理能力包括用户账号本地存储、成绩持久化、游戏设置记忆等功能同时提供便捷操作和清晰反馈降低学习成本。游客登录模式的加入进一步降低了体验门槛让潜在用户能快速感受核心玩法。3.2 功能需求依照业务需求加以分析可知功能需求可被划分进用户经营游戏核心游玩形式视听反馈以及数据经营这四个大类当中。用户管理类功能涵盖账号登录游客登录账号注册以及用户信息存储等方面账号登录需玩家输入用户名及密码经系统校验后方可进入游戏游客登录则无需注册就能直接体验从而减小使用门槛账号注册会在首次使用新账号时自动启动并保留相关信息而用户信息存储用以守护当前登录用户的状况保证成绩得以正确绑定。游戏核心玩法所包含的功能涉及车辆选取车辆操控竞速把控检查点判断圈数累计计时体系受损机制以及比赛重玩其一玩家能够经由车辆选择来查看并挑选赛车其中会有预览图与属性信息展示。其二车辆操控部分可达成加速转向制动等动作借助物理引擎营造出较为真实的手感其三竞速经营单元负责把控比赛的进程其四检查点判定功能依照设定的顺序来检测检查点以此杜绝作弊现象发生其五当玩家依次经过各个检查点之后圈数会逐步增多其六计时系统用于记录比赛所耗费的时间其七受损机制按照撞击力度减去对应的生命值并给予视觉与听觉上的反馈信号其八比赛重玩功能使得玩家无需离开当前界面便可以重新初始化游戏各项设置。视听反馈类功能包含摄像机视角控制天气系统音频系统以及特效系统摄像机具备即时转换第一人称与第三人称视角的能力并带有平滑跟随及障碍物穿透识别功能。天气系统可随机变换四种不同天气状况其对视觉效果和操作感受产生影响音频系统负责统筹背景音乐与音效事宜利用2D和3D音效来优化听觉感受而在碰撞或者受到损害的时候特效系统就会产生火花以及烟雾粒子这类视觉特效。数据管理类功能包含成绩存储排行榜显示奖品显示和数据清除这四个方面比赛结束后会把总用时和最佳圈速保留下来排行榜读取这些成绩数据并显示前六名的成绩。按照成绩来解锁对应的奖励利用颜色的变化来表现其状态数据清除功能给开发人员和检测人员带来很大方便可以很快重新设置本地的数据。3.3 非功能性需求非功能性需求属于衡量系统质量的关键指标它会对用户体验及可守护性产生重要影响就性能而言游戏要维持每秒60帧的流畅运行物理计算精度与帧率应当兼顾而且资源加载必要限定在合理时段之内粒子特效和音频播放要约束资源开销防止出现性能下滑的情况。在可用性层面其操作方式应合乎直觉采用标准键盘按键界面设计要简洁明晰车速圈数等关键信息需突出表现交互反馈须即时而确切游戏规则应当清晰易懂以此来缩减学习成本。系统执行模块化设计各个模块依靠明晰的接口相互交互赛车参数天气参数等借助设置文件来管理预制体系统使得新增赛车类型十分便捷为后续的持续升级和内容更新构筑了技术根基。兼容性层面依靠Unity引擎能够适配各种操作系统平台通用渲染管线保障在不同性能设备上达到画面对应效果输入系统支持扩展手柄方向盘之类的外围设备而且UI系统采取自适应布局不论分辨率高低都能维持界面完整性与可读性。4 游戏设计4.1 设计思路本游戏以“真实感沉浸感可玩性”为核心关键词来设计思路试图凭借有限的开发资源营造出一款可给予玩家良好体验的赛车竞速类游戏。赛车游戏要想抓住玩家关键得有真实性游戏在物理模拟方面下了很大功夫来做到这一点。依靠Unity物理引擎的车轮碰撞器系统可以比较精准地模拟轮胎贴合地面的情形经由调节一些参数比如动力扭矩转向角度以及刹车扭矩等可以让操纵车辆的手感逼近真正的赛车而且悬挂系统的弹簧和阻尼调设也会左右车辆在坏路上面的稳定性再加上一个损坏系统之后真实感就更强了玩家就得小心开车躲避撞击不然车子的各项表现就会下滑。浸浸感源于从视觉听觉到交互的全方位营造视觉层面通用渲染流水线被采用以维持画面的光影效果动态天气系统令游戏场景更具活力更富变化。粒子特效系统在撞击受损等关键瞬间给予视觉上的加强提升感官震撼力听觉层面背景音乐需与游戏氛围相符而且要加入诸如碰撞音效检查点音效之类的细小声音从而让游戏世界更为立体交互层面则是允许玩家在第一人称视角和第三人称视角之间自在切换进而按照个人喜好选取最适合自己的视角而摄像机能平稳跟随着玩家并具有识别障碍物的能力以此保证视野的清晰度。可玩性表现在游戏的深度以及重玩价值方面动态天气系统会使每次比赛遇到的赛道条件有所不同玩家需按天气调整驾驶策略车辆损伤系统会让玩家要在速度和护车之间实施兼顾奖品解锁机制给玩家给予持续目标推动玩家不断挑战自己排行榜系统则让玩家可以对比自己的过去成绩体验到提升带来的成就感。在技术设计方面该系统采取模块化架构各个功能模块职责分明模块之间的依赖关系依靠单例模式和事件机制来运作从而减小了耦合度这样的设计另外有益于开发阶段的并行作业并为后续功能的拓展与守护形成了基础资源运作将资源统一保存在Resources目录当中再经由代码实施动态加载这样就方便执行资源的更新与运作。4.2 功能模块根据设计思路本游戏的系统功能划分为五大核心模块和四大辅助模块各模块协同工作共同构建完整的游戏体验。4.2.1 玩家模块玩家模块属于游戏的关键交互部分其中包含车辆选择车辆控制以及摄像机控制这三个子模块车辆选择这个子模块会在游戏启动之前给玩家供应机会去看并且挑选自己喜爱的赛车经由UI界面显示赛车的预览图片和相关属性信息记住玩家所选赛车种类并将其用于之后的流程当中车辆控制这个子模块具备赛车物理操控方面的逻辑设定覆盖了诸如加速度转向制动这些基本动作而且关乎到发动形式决定受损状况维持以及根据天气状况调整摩擦系数之类的功能此子模块同物理引擎紧密结合在一起借助车轮碰撞器来施加推动扭矩并调控转向角度从而达成如同真车一般的动态效果至于摄像机控制这个子模块则承担着在第一人称和第三人称视角之间实施转换的任务还承担平滑追踪算法以及障碍物穿越判断的责任以保证玩家永远可以收获清晰的视觉体验。4.2.2竞速管理模块竞速管理模块负责比赛流程的全生命周期控制。比赛控制子模块管理比赛的开始、进行和结束状态协调其他模块的运行时机。检查点检测子模块通过在赛道上布置顺序检查点判断玩家是否按照正确路线行驶防止抄近道或逆行等作弊行为。圈数与计时子模块记录玩家的当前圈数、各圈用时和总用时为成绩排名提供数据支持。成绩管理子模块在比赛结束后收集成绩信息包括用户账号、总用时、最佳圈速等传递给数据持久化系统进行存储。4.2.3用户界面模块用户界面模块负责所有交互界面的显示和操作响应。登录界面提供账号登录和游客登录两种入口支持新用户的自动注册。角色选择界面展示可选赛车列表支持浏览和选择操作。游戏主界面实时显示车速、车损程度、当前圈数和计时信息让玩家随时了解比赛状态。成绩展示界面以排行榜形式展示前六名的成绩记录奖品展示界面通过颜色变化展示奖品解锁状态。各界面之间通过界面管理器统一调度实现流畅的切换效果。4.2.4 天气系统模块天气系统模块实现动态环境变化功能。天气控制子模块负责晴天、雨天、雪天、雾天四种天气的随机切换调整天空盒颜色、光照强度和雾效参数。粒子特效子模块在雨天和雪天生成雨滴和雪花效果增强视觉表现。物理适配子模块将当前天气的摩擦力系数传递给车辆控制模块影响赛车的操控手感实现天气与玩法的深度耦合。5 游戏实现5.1 赛车控制模块5.1.1 车辆物理系统设计赛车控制模块属于整个游戏的核心部分其职责在于达成车辆的物理操控逻辑在Unity这个平台当中车辆的物理行为大部分依靠刚体组件以及车轮碰撞器组件共同去完成。刚体组件会给予赛车一些物理特性譬如质量重力作用阻力系数等等从而让赛车可以和周围环境产生实在的物理互动而车轮碰撞器则是专门用来模仿车轮与地面之间的接触情况的里面包含了不少物理参数像弹簧阻尼摩擦力之类的东西可以比较逼真地表现出车辆悬挂系统以及轮胎抓地能力的特点来。在设计车辆物理系统时要综合考量诸多物理量之间的相互作用驱动扭矩为车辆前行供应动力其施加于驱动轮促使车辆加速转向角度负责控制前轮偏转从而确定车辆的行进方向刹车扭矩可起到减速与制动的作用这些物理量需遵照玩家的输入即时作出调整并受车速车损状况以及路面情况等因素的影响最终营造出带有真实感的操控感受。车辆物理系统另一重要方面为参数调校最大推动扭矩关乎车辆的加速性能与最高速度最大转向角度左右着车辆过弯时的灵活性。悬挂系统的弹簧强度与阻尼系数会影响车辆行驶在崎岖路面时的稳定性这些参数必要经由多次试验调整来寻得一种兼顾真实感与操作手感的协调点。5.1.2 车轮碰撞器与驱动方式车轮碰撞器属于Unity所供应的一种专门组件用以模拟汽车轮胎的物理特性每个车轮碰撞器均具备弹簧阻尼摩擦力等参数的设定这些设定可单独执行调节。从实际情况来看赛车一般会设置四个车轮碰撞器它们分别对应左前轮右前轮左后轮以及右后轮车轮碰撞器所处的位置会确定车辆与地面的着地点而它的旋转状况则体现出车轮的转动情况。驱动方式的抉择会给车辆的操控特性带来很大改变前轮驱动的车其动力全都放在前轮上转弯的时候就很可能发生推头状况不过在湿滑路面的稳定性比较好。而后轮驱动的车动力重点在后轮加速时重心往后移动这样就能提升后轮的抓地能力开起来更为灵活但对驾驶员的要求也更高一点这个项目当中利用一个布尔变量来辨别前驱和后驱模式当施加驱动扭矩的时候依照驱动方式把扭矩分配到前轮或者后轮去。转向机制设计重点在于对前轮的作用而后轮一般不会参与转向操作其转向角度会依循输入幅度呈线性变化态势车速快慢会影响最大转向角度大小在高速情况下会限制最大转向角度以此来模仿实际驾驶过程中高速行驶时转向响应迟缓这一现象特征而在执行刹车功能之时则把刹车扭矩平均施加于各个车轮之上从而达成稳定可靠的减速效果。5.1.3 车辆损伤系统实现车辆损伤系统对于提升游戏的真实感十分关键该系统凭借车辆生命值这一概念把碰撞行为转为成可被度量的损伤状态进而引发对应的视觉及听觉反馈。损伤系统的核心在于一个显示车辆生命值的变量其初始值处于满血状态一旦出现碰撞便依照碰撞的相对速度来计算损伤值并从生命值当中予以减去当生命值下降到低于零时就认定车辆已经报废不能再前行了。损伤系统的视觉反馈主要经由车辆材质颜色的改变来达成当生命值不断下降的时候车辆材质渐渐向着暗红色转变这样就直观地显示了车辆受损的程度而且当损伤程度达到某个阈值之后就会启动一些特定的效果轻度损伤时会产生火花效果重度损伤时则会冒出烟雾这些效果都是靠粒子系统来做到的从而加强了损伤在视觉上的体现能力。损伤系统以碰撞检测作为触发机制在赛车控制脚本当中重新编写碰撞检测函数这样就能在发生碰撞的时候得到碰撞的相对速度一旦这个相对速度超出预先设定的阈值就去算出损伤值并且更新车辆的生命值而且还能启动碰撞音效并创建火花特效这样以来碰撞行为就有了确切的因果关联每次碰撞都会给车辆的状态带来能够察觉到的影响进而提升游戏的策略性和真实性。5.1.4 天气摩擦力适配机制天气系统对赛车操控产生影响主要依靠摩擦力适配机制达成在不同天气状况下轮胎与地面之间的摩擦系数有明显差别这会直接左右车辆的加速度转向以及制动性能。在这个项目当中天气摩擦力适配机制经由在赛车控制模块里采用天气系统及时取得当前天气的摩擦力倍数然后动态调节车轮碰撞器的摩擦力参数。在具体落实方面天气系统规定了四种天气类型即晴天雨天雪天以及雾天各类别均对应有摩擦力乘数晴天时摩擦力最大此时车辆操控较灵活。雨天和雪天摩擦力会减小车辆易出现打滑情况所以要更为细致地掌控油门与转向车轮碰撞器的摩擦曲线属性由摩擦力乘数来设定在每一帧的更新过程中赛车控制模块从天气系统取得当下的摩擦力乘数并进而更新所有车轮碰撞器的侧向摩擦力及向前摩擦力。这种设计让天气要素不再仅仅体现在视觉效果上还切实影响到游戏的关键玩法玩家在雨天或者雪天开车的时候得要调整自己的驾驶策略更为稳当地掌控油门和转向防止因为操作过猛而失去控制这样就改良了游戏的重复游玩价值和技术含量。5.2 摄像机跟随模块5.2.1 第一人称与第三人称视角切换摄像机跟随模块负责做到灵活多变的视角控制给玩家带来多种驾驶体验第一人称视角把摄像机置于驾驶员位子经由赛车前挡风玻璃视角来观察赛道这种视角最富沉浸感第三人称视角把摄像机放在赛车后面可以看见赛车自身及周围的环境这样玩家就能更轻松地判断车辆和赛道的相互位置。视角切换靠按键来触发可以在两个模式间快速切换用第一人称视角时实现起来比较简单就是把摄像机设置成赛车内部某个特定锚点子对象的子物体然后让这个子物体随着赛车一起转动和移动。而用第三人称视角就得用复杂的逻辑也就是让摄像机始终位于赛车后方设定好的距离和高度处并且还要跟着赛车的方向一起改变。切换两个视角的时候会做到平滑过渡不会出现突然变化造成的眼观不适情况当视角发生改变时摄像机的视野角度也会跟着调整从第一人称视角来看视野比较狭窄不过能够模拟人眼所见的感觉转到第三人称视角之后视野就变得开阔许多从而可以更好地观测四周环境状况。5.2.2 平滑跟随算法第三人称视角下的平滑跟随对于优化视觉体验十分关键如果只是简单地直接跟随会产生画面抖动的情况特别是赛车急速转向或者行驶在崎岖路面上的时候摄像机会摇晃得非常厉害从而影响到玩家作出决策。平滑跟随算法利用插值计算令摄像机的移动具备某种惯性这样既能快速应对赛车位置的改变又能去除高频次的抖动现象。在实际操作的时候摄像机的目标位置要经由赛车位置再加上一个固定的偏移向量来算出来这个偏移向量是在赛车坐标系当中被界定好的会随着赛车的转动而转动。摄像机的真实位置则是靠线性插值慢慢趋近于目标位置而且跟随的速度是可以按需求来调整的如果玩法竞争比较激烈的话就用比较快的速度要是想要更平和一些的感觉就可以采用比较慢的速度。旋转跟随也靠插值法来做到摄像机要始终瞄准赛车不过也不能太灵敏利用四元数做插值计算就能达成流畅的旋转跟随效果这个平滑的跟随算法让画面更为稳定玩家长时间玩游戏时视觉疲劳状况明显减轻。5.2.3 障碍物穿透检测与视角优化从第三人称角度看赛道上的建筑物路障之类的东西也许会把摄像机和赛车隔开使得玩家看不到赛车这极大地影响游戏体验障碍物穿透检测机制就是为解决这个问题而设的该机制经由射线检测来判断摄像机和赛车之间是否存在障碍物如果存在就会动态调整摄像机的位置让其移动到障碍物前面去。射线检测从赛车位置向摄像机目标位置发射射线射线若在抵达摄像机前碰上障碍物则表明视线被阻挡。这种情况下会把摄像机的位置调整到碰撞点前方而且略微改变摄像机的旋转角度以保证赛车一直位于视野之内等到障碍物消失之后摄像机会慢慢回归到初始位置。这个机制想要达成就得兼顾好响应速度与画面稳定性位置调整如果太快就会感觉生硬突兀若太慢也许就来不及察觉到那些被阻挡住的赛车。经由调节射线检测的频率以及摄像机位置的插值速率可以协调好响应能力和平滑程度之间的关系使得玩家不论处于何种复杂的环境之下总能收获清楚明了的视角。5.3 用户界面模块5.3.1 登录与角色选择界面登录界面是游戏的入口设计了账号登录和游客登录两种方式。账号登录需要用户输入用户名和密码系统会对输入进行非空校验对于新用户自动完成注册并将账号信息保存到本地。游客登录则跳过账号验证直接进入游戏方便玩家快速体验。登录成功后系统保存当前用户的登录状态并在后续的游戏过程中使用该用户信息。图5.1玩家登录角色选择界面展示所有可选赛车每个赛车有对应的预览图片和简要属性说明。界面上提供切换按钮玩家可以浏览不同的赛车选择自己喜欢的车型。选择过程中的视觉反馈是实时更新的当前选中的赛车图片会高亮显示属性信息也会同步更新。开始比赛按钮只有在完成角色选择后才可点击确保玩家有明确的确认操作。图5.2玩家角色5.3.2 实时车况展示比赛主界面上设计了实时车况展示面板动态显示车速、车损程度、当前圈数和计时信息。车速信息通过数字和模拟仪表两种方式呈现直观反映赛车的当前速度。车损程度通过进度条或颜色变化的方式显示让玩家随时了解车辆的损伤状态以便调整驾驶策略。圈数和计时信息的展示采用大字号突出显示便于玩家在快速行驶时快速读取。每完成一圈时圈数更新会有短暂的动画效果给予玩家明确的成就感反馈。最佳圈速也在界面上显示激励玩家不断挑战自己的最好成绩。实时车况展示的数据来源于赛车控制模块和竞速管理模块通过每帧更新UI文本的方式实现。为了优化性能只在数值发生变化时才更新对应的UI元素避免不必要的重绘。图5.3实施车况5.3.3 排行榜与奖品展示界面排行榜界面展示本地存储的前六名竞速成绩包括用户名和比赛用时。排行榜数据从本地存储中加载按照用时升序排列用时越短排名越靠前。排行榜界面支持关闭和重新打开数据会在每次打开时刷新确保展示最新的成绩信息。如果当前成绩数量不足六名显示空白项占位。图5.4排行榜奖品展示界面用于激励玩家不断挑战自我。奖品列表中包含多个奖品项每个奖品有名称、解锁条件和预览图片。解锁条件通常与完成比赛或达到特定成绩相关玩家完成比赛后系统会检查是否满足奖品解锁条件满足则解锁对应的奖品并以颜色变化等方式在界面中呈现解锁状态。这种激励机制增强了游戏的长期可玩性鼓励玩家反复挑战以解锁全部奖品。图5.4奖品展示6 游戏测试6.1 系统的测试方法要想游戏系统既稳定又可靠这个项目就得用多层次的考察方法这种考查包含功能考察融合考察和性能考察这三个方面而且在整个开发时间里不停展开这些考察活动。功能检测用于验证各个功能模块是否正确检测人员依照功能需求文档依次核实各功能点能否照预定情况运行要记录下操作流程预期成果以及实际达成的效果对于未达到预期的功能部分需出具瑕疵报告并经修正之后再展开重新检测该检测包含登录认证车辆选定车辆控制检查点识别圈数计算天气变换音效输出成绩保存等全部功能板块。集成测试重点看模块间交互是否正常游戏系统靠很多独立模块协同运行模块接口及数据交换会左右整体表现。集成测试着重验证玩家模块与竞速经营模块间的数据传递情况天气系统和车辆控制模块之间摩擦力的适配情形特效系统与碰撞检测的触发机制等关键交互环节其中包含各类正常和异常场景的测试用例以此保证模块协作稳定又可靠。性能检测着重看游戏于不同硬件设置下的运行状况检测人员会在大量不同设置的设备上观察帧率的稳定性内存占据情况以及 CPU 使用率等性能指标特别重视粒子特效大量播放时的性能表现场景转换时资源加荷所花的时间还有长时间运行之后是否存在内存泄漏现象依照检测结果展开有针对性的改良措施从而保证游戏在主流硬件设置下能够顺畅运行。6.2 系统功能模块测试及结果玩家模块考察包含车辆选择车辆控制以及摄像机控制方面车辆选择考察针对预览图显示切换按钮反应选中索引记录等功能予以验证考察结果表明这些功能均正常切换也很流畅。车辆控制考察则围绕加速度转向制动等操作的反应情况还有推进方式转换损坏评定摩擦力匹配等功能展开考察结果显示出操控反应迟速恰当损坏评定精确无误摩擦力匹配得以落实摄像机控制考察重点在于视角转换顺畅追随阻挡物探测等方面考察结果显现出视角转换顺利追随过程平缓遇阻时会自动调整位置。竞速经营模块的考量包含比赛流程控制检查点检测圈数统计以及成绩经营方面的内容对于比赛流程控制的考量来说就是要去核实比赛状态的转换是否正确从当前的情况来看结果还是正常的。至于检查点检测这一块其考量设计当中覆盖了正常经过顺序出错以及漏过检查点等等不同的场景显示出来的状况是在正常经过的时候圈数会得到累加并且违规行为也被有效地阻止住了圈数统计的考量重点在于核实多圈累加以及计时的准确性而成绩经营的考量主要针对数据采集储存和表现这些功能实施验证它们的结果全都达到了预先设定的目标。用户界面模块的检测包含登录界面角色选择界面游戏主界面以及成绩显示界面针对登录界面实施检测以核实账号登录游客登录及自动注册功能检测结果表明登录流程运行正常。对于角色选择界面展开检测来验证赛车浏览与选择确认功能其操作过程较为顺畅就游戏主界面执行检测以确认车速车损圈数计时等信息能够即时更新更新之时准确无误而针对成绩显示界面开展检测以验证排行榜的数据读取和显示状况前六名的成绩得以正确显现。天气系统模块的检测包含天气切换视觉表现以及物理适应这三个方面由检测结果可知天气切换没有出现异常状况天空盒的颜色光照强度还有粒子特效均达到设计之初的预期不同天气下摩擦力乘数能够被正确传递对于车辆操控造成的影响也合乎预先设想。音频系统模块被用来考察背景音乐切换音效播放以及音量调节这些功能其检测结果处于正常水平特效系统模块则负责检查碰撞火花和损伤冒烟这类特技产生的时候及其视觉效果该部分的检测情况还算不错数据持久化模块重点关注成绩保存排行榜显现以及奖品状态保留等事宜并对其执行了验证操作。6.3 系统的测试结论经由功能检测融合检测和性能检测的综合性证实本项目的赛车竞速游戏完成了预定的设计目的。从功能完整性上来看游戏达成了登录认证车辆选择竞速比赛成绩显示奖品奖励等完整的流程所有功能点都经过了检测验证登录系统包含账号登录和游客登录两种模式在车辆选择界面可以挑选多款赛车竞速玩法具有检查点检测以及圈数统计的功能成绩排行榜能正确显示前六名的成绩奖品系统的颜色变化用来表现解锁状态各个功能模块均按照设计要求得到了正确的执行。游戏在检测期间未发生崩溃现象亦无重大异常状况长时间维持检测之后其内存占用情况比较稳定并不存在明显的内存泄漏情形。当执行场景转换或者比赛重放操作的时候资源加载效果良好没有出现资源缺失或者加载失败之类的问题各个模块之间的数据交互均正常开展没有出现数据混乱或者状态不符的情况。从用户体验角度看该游戏操作响应快速界面反馈清晰视觉效果不错。车辆操控手感经过多次调校在不同天气条件下表现较为合理摄像机能平滑跟随并流畅切换视角音频播放准确特效表现力较强整体游戏体验符合预期。
返回列表