22、Unity游戏构建与测试全解析

Unity游戏构建与测试全解析

一、构建参数详解

在进行游戏构建时,有许多参数需要我们去设置和理解,下面为大家详细介绍。

(一)目标平台

这个选项很简单,就是选择你要将游戏构建到哪个平台。可选的平台有Windows、macOS和Linux。例如,我们当前的垂直切片构建是针对Windows平台的。

(二)架构

我们需要确定CPU架构。32位操作系统要求游戏使用的内存小于4GB,但对于小型游戏也可以使用64位架构,这对游戏没有坏处。一般来说,建议选择64位架构。

(三)服务器构建

如果你正在开发多人游戏,Unity可以为你的游戏创建一个服务器。这种构建方式会生成没有视觉元素的玩家设置,同时也会构建为多人游戏定义的托管脚本。不过,我们这里不会涉及这方面的内容,因为多人游戏开发从一开始就是一个不同的项目。

(四)复制PDB文件

这是仅适用于Windows平台的设置。启用该设置后,你可以在Microsoft程序数据库中进行调试。但在我们的构建中不会使用这个设置。

(五)创建Visual Studio解决方案

同样是仅适用于Windows平台的设置。启用此选项后,你可以从Visual Studio进行构建,而不仅仅局限于从构建设置菜单进行构建。如果你针对的是macOS平台,则会有一个“创建Xcode项目”的复选框。

(六)开发构建

启用此选项后,你可以进行调试,包括使用Profiler。Profiler是一个分析器,可以帮助你了解游戏在运行时的性能情况。

(七)自动连接Profiler

当“开发构建”选项开启时,你可以启用此设置。它会自动连接前面提到的Profiler。

(八)深度分析支持

此功能也需要启用“开发构建”选项。它可以让Unity Profiler记录更详细的数据。不过,由于可能会导致脚本执行速度变慢,所以它不是检查性能的最佳选择。深度分析构建的主要目的是通过记录所有函数调用来找出托管应用程序的具体问题。因为每个方法都会被单独记录,所以深度分析可以清晰地显示出哪些方法被调用以及何时被调用,有助于更容易地发现和捕获游戏中的一些bug。

(九)脚本调试

启用此选项同样需要开启“开发构建”,它会在脚本代码中添加调试符号。这样,当游戏运行时,IDE(如Visual Studio)就可以连接到游戏,通过断点和调试系统进行调试。当你选择此选项时,会弹出一个“等待托管调试器”的选项。如果启用该选项,游戏会等待IDE请求连接,在与调试器建立连接之前,脚本不会执行。

(十)仅构建脚本

当你发现一些bug并需要进行更改,但又不想重新构建整个项目时,这个选项就非常有用。因为数据文件可能会非常大,而迭代在游戏开发中非常重要。此选项只会构建脚本,而保持所有数据文件不变,从而显著减少调试迭代之间的时间。

(十一)压缩方法

有三种压缩方法可供选择:
1. 默认 :即不进行压缩。在Windows、Mac和Linux上,不压缩的文件可以直接运行;在Android构建中,会以ZIP文件的形式构建。
2. LZ4 :适用于开发构建,存储的数据会被压缩,并在运行时解压缩。场景和资源加载依赖于磁盘读取速度,这种方法的构建时间比默认方法快,有助于提高迭代速度。值得注意的是,在Android上,LZ4的解压缩速度比默认的ZIP更快。
3. LZ4HC :是LZ4的高压缩版本,构建时间会更长,因为它会对构建进行更深入的压缩。这是在调试完成后进行发布构建的理想选择。

建议在游戏测试的快速测试阶段使用默认方法,在开发构建和调试阶段使用LZ4,在准备发布时使用LZ4HC。

二、游戏测试类型

游戏测试是一个广泛的概念,常见的测试类型有以下几种:

(一)功能测试

功能测试其实在你开发过程中就已经开始了。每次你按下播放按钮检查脚本是否按预期工作时,就是在进行功能测试。它主要测试游戏的各项功能,具体包括以下方面:
1. 动画 :检查动画是否协同工作,角色骨骼是否损坏。通过测试角色动画的过渡机制和动作来进行检查。
2. 音频元素和质量 :仔细聆听特定时刻的音频是否存在瑕疵,例如脚步声是否异常、不存在的物体是否有环境噪音以及声音是否放置错误等。
3. 过场动画 :播放过场动画,查找其中是否存在位置不当的声音、视觉效果、动画或整个过场动画的时间安排问题。
4. 说明或教程 :游戏中的说明应该书写正确,并且要符合玩家使用的控制器方案。
5. 机制交互 :体验所有游戏机制,检查它们是否按预期工作,以及是否可以完成相应的任务。
6. 排序 :这是一个关于透明度问题的视觉检查。屏幕上的图层需要明确自己的层级关系,一些效果和UI可能难以正确排序。需要通过多种场景测试来确保具有透明度的游戏对象能够正确排序。
7. 可用性 :检查控制器方案是否合理且可行。例如,通常使用A按钮进行跳跃,如果使用其他按钮,需要详细解释原因。
8. UI(菜单结构、分辨率、宽高比、字体大小) :需要全面检查用户界面的各个方面,如缩放后的外观、颜色是否正确、菜单流程是否易于理解等。任何小问题都可能被大多数用户注意到,需要记录下来进行修复。

功能测试需要反复进行,以确保游戏的各项功能对玩家来说有意义且能正常工作。在测试单个机制时,虽然这是一种很好的做法,但要注意可能会影响到游戏的其他部分。早期和频繁进行强大的功能测试可以使项目更加完善。在进行功能测试时,如果遇到渲染卡顿、帧率降低的情况,要记录下来并添加到性能测试列表中。

(二)性能测试

在Unity中,有四个分析工具可以帮助我们进行性能测试:
1. Unity Profiler :这是最常用的分析工具,用于识别CPU使用情况、内存使用情况和渲染时间。打开方式为:Window > Analysis > Profiler。打开后,你会看到四个部分:
- (红色)Profiler模块 :显示正在使用的分析模块,并通过颜色表示分析器开始记录时的情况。
- (橙色)Profiler控件 :用于设置Profiler的操作,如开始记录、更改模式或分析工具。
- (黄色)帧图表 :以堆叠图表的形式显示各个帧随时间的变化,以及渲染通道的曲线。
- (绿色)模块详细面板 :解释所选帧的每个部分在请求线程上的使用百分比,默认是主线程。

例如,在游戏运行时选择一个帧进行分析,你可以看到当前的帧率,以及哪些操作占用了最多的CPU时间。
  1. Memory Profiler :用于分析编辑器的内存使用情况。如果在构建设置菜单中选择了“开发构建”,也可以在独立构建中运行该分析器。但它不能在发布版本上运行,并且需要手动添加到Unity项目中。添加方法如下:

    • 打开Package Manager。
    • 选择“按名称添加包”选项。
    • 在“按名称添加包”字段中输入“com.unity.memoryProfiler”。

    安装完成后,通过Windows > Analysis > Memory Profiler访问。首次加载时,中间部分是空白的,有一个创建快照的选项。按下播放按钮后再创建快照,你可以查看内存使用情况。如果内存使用符合预期,可以使用帧调试器进一步检查特定帧中可能导致问题的加载内容。
    3. Frame debugger :可以查看单个帧以及绘制调用是如何构建以实现该帧的渲染的,这对于调试视觉伪影非常有帮助。当你在功能测试中发现排序问题时,可以使用它来查看每个项目的渲染时间,从而找出渲染顺序错误的原因。此外,它还可以让你看到正在渲染的项目上设置的Shader属性,有助于发现Shader属性设置不符合预期的问题。
    4. Physics debugger and Profiler module :对于物理方面,我们有调试器和Profiler模块。物理调试器是一个可视化工具,可以帮助你了解场景中的物理碰撞情况,以及哪些对象可以或不可以相互碰撞。打开物理调试器的“颜色”部分,可以根据需要对物理对象进行着色。物理Profiler模块位于Unity Profiler中,当物理调试器发现问题时,它可以帮助我们查找更多信息。如果你的游戏中有快速移动的对象,当记录Profiler时发现游戏对象不应该穿过其他对象却穿过了,这个模块可以查看总内存使用情况,因为可能是内存使用不足导致物理更新速度不够快,无法获取活动物体的信息。物理调试可能需要一些时间才能找到解决方案,所以要耐心使用各种工具。

(三)游戏测试流程

graph LR
    A[开始构建] --> B[选择目标平台]
    B --> C[确定架构]
    C --> D{是否多人游戏}
    D -- 是 --> E[服务器构建]
    D -- 否 --> F[跳过服务器构建]
    E --> G[设置其他参数]
    F --> G
    G --> H[选择压缩方法]
    H --> I[进行开发构建]
    I --> J[功能测试]
    J --> K{是否有性能问题}
    K -- 是 --> L[性能测试]
    K -- 否 --> M[跳过性能测试]
    L --> N[优化]
    M --> N
    N --> O[内部测试(团队、朋友等)]
    O --> P[根据反馈改进]
    P --> Q[外部测试(玩家)]
    Q --> R[最终发布]

(四)游戏测试类型总结

测试类型 测试内容 主要工具
功能测试 动画、音频、过场动画、说明、机制交互、排序、可用性、UI等 无特定工具,主要通过游戏运行体验
性能测试 CPU使用、内存使用、渲染时间、物理性能等 Unity Profiler、Memory Profiler、Frame debugger、Physics debugger and Profiler module
游戏测试 收集玩家对游戏整体体验的反馈 无特定工具,主要通过玩家反馈

三、游戏测试的其他类型

(一)浸泡测试

浸泡测试是一种长时间运行游戏的测试方式,目的是发现游戏在长时间运行过程中可能出现的问题,例如内存泄漏、性能下降、游戏崩溃等。在浸泡测试中,游戏会持续运行数小时甚至数天,模拟玩家长时间连续游戏的场景。通过这种测试,可以确保游戏在长时间运行时的稳定性和可靠性。

(二)本地化测试

本地化测试主要针对游戏在不同语言和文化环境下的适应性进行检查。这包括文本翻译的准确性、字体显示的正确性、界面布局在不同语言下的合理性,以及文化元素是否符合当地的习惯和价值观等。例如,某些颜色在不同文化中有不同的含义,游戏中的颜色使用需要考虑到目标市场的文化背景。此外,本地化测试还需要检查日期、时间、货币等格式是否符合当地的标准。

四、游戏测试的重要性及注意事项

(一)游戏测试的重要性

游戏测试在整个游戏开发过程中起着至关重要的作用。通过各种类型的测试,可以确保游戏的功能正常、性能稳定、用户体验良好。功能测试可以发现游戏中存在的逻辑错误和功能缺陷,保证游戏的各项功能能够按预期运行;性能测试可以优化游戏的性能,避免出现卡顿、掉帧等问题,提高玩家的游戏体验;游戏测试可以收集玩家的反馈,了解玩家的需求和喜好,为游戏的进一步改进提供方向;浸泡测试和本地化测试则分别保证了游戏的长期稳定性和在不同市场的适应性。

(二)游戏测试的注意事项

  1. 全面性 :在进行游戏测试时,要确保覆盖游戏的各个方面,包括不同的功能模块、各种游戏场景、不同的设备和平台等。不能只关注某些重点部分而忽略了其他可能存在问题的地方。
  2. 记录问题 :在测试过程中,要详细记录发现的问题,包括问题的描述、出现的场景、复现步骤等。这有助于开发团队准确地定位和解决问题。
  3. 及时反馈 :测试人员发现问题后,要及时将问题反馈给开发团队,以便开发团队能够尽快进行修复。同时,要与开发团队保持良好的沟通,确保问题得到妥善解决。
  4. 反复测试 :对于修复后的问题,要进行反复测试,确保问题已经彻底解决,不会再次出现。

五、游戏测试的未来发展趋势

(一)自动化测试的普及

随着游戏开发规模的不断扩大和复杂度的增加,手动测试的效率越来越低,难以满足快速迭代的开发需求。因此,自动化测试将逐渐成为游戏测试的主流方式。自动化测试可以通过编写脚本自动执行测试用例,大大提高测试效率和准确性。例如,使用自动化测试工具可以对游戏的界面元素、功能逻辑、性能指标等进行自动化测试,减少人工测试的工作量。

(二)人工智能在测试中的应用

人工智能技术在游戏测试中的应用也将越来越广泛。例如,利用机器学习算法可以对游戏中的大量数据进行分析,预测游戏可能出现的问题;使用人工智能生成测试用例,可以更全面地覆盖游戏的各种场景。此外,人工智能还可以模拟玩家的行为,进行更加真实的游戏测试。

(三)云测试的兴起

云测试是指利用云计算技术进行游戏测试。通过云测试平台,测试人员可以在不同的设备和环境下对游戏进行测试,无需在本地搭建复杂的测试环境。云测试还可以实现多人同时测试,提高测试效率。同时,云测试平台可以提供丰富的测试资源和工具,为游戏测试提供更好的支持。

六、总结

游戏构建和测试是游戏开发过程中不可或缺的环节。在构建过程中,需要仔细设置各种参数,选择合适的目标平台、架构和压缩方法等。而在测试阶段,要进行多种类型的测试,包括功能测试、性能测试、游戏测试、浸泡测试和本地化测试等,以确保游戏的质量和稳定性。同时,随着技术的不断发展,游戏测试也将朝着自动化、智能化和云测试的方向发展。开发者和测试人员需要不断学习和掌握新的技术和方法,以适应游戏行业的快速发展。

游戏测试类型及要点总结

测试类型 测试要点 主要工具 未来趋势
功能测试 检查游戏各项功能的正确性和合理性 无特定工具,主要通过游戏运行体验 结合自动化测试提高效率
性能测试 分析CPU、内存、渲染等性能指标 Unity Profiler、Memory Profiler等 借助人工智能进行更精准分析
游戏测试 收集玩家对游戏整体体验的反馈 无特定工具,主要通过玩家反馈 利用大数据分析玩家行为
浸泡测试 检测游戏长时间运行的稳定性 无特定工具,长时间运行游戏 自动化长时间测试
本地化测试 确保游戏在不同语言和文化环境下的适应性 无特定工具,人工检查 借助机器翻译和人工智能辅助

游戏开发与测试流程总结

graph LR
    A[游戏开发开始] --> B[游戏设计]
    B --> C[代码编写与资源制作]
    C --> D[构建游戏]
    D --> E[功能测试]
    E --> F{是否通过功能测试}
    F -- 否 --> C
    F -- 是 --> G[性能测试]
    G --> H{是否通过性能测试}
    H -- 否 --> C
    H -- 是 --> I[浸泡测试]
    I --> J{是否通过浸泡测试}
    J -- 否 --> C
    J -- 是 --> K[本地化测试]
    K --> L{是否通过本地化测试}
    L -- 否 --> C
    L -- 是 --> M[游戏测试]
    M --> N{是否通过游戏测试}
    N -- 否 --> C
    N -- 是 --> O[游戏发布]

通过以上的构建和测试流程,开发者可以打造出高质量、稳定且受玩家欢迎的游戏。同时,关注游戏测试的未来发展趋势,不断引入新的技术和方法,将有助于提高游戏开发的效率和质量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值