在制作游戏时,测试可执行文件是十分重要的,这可以确保最终的编译时正确的,没有意料之外的错误或差异。然而,创建可执行文件意味着,由于你不能访问 debug 控制台,也不能访问编译器窗口,因此很难确定和调试你可能发现的任何问题。不过有一个方法可以解决这个问题,运行游戏时使用 命令行参数 设置某些属性,就可以创建输出日志文件并测试其他特殊情况。
注意: 命令行参数仅在标准 Windows 目标模块有效。
要使命令行参数可用,你需要创建一个 Windows 可执行游戏,并将其安装到你的测试机上。安装完毕后,你需要在桌面上创建一个游戏的 快捷方式。这是我们需要添加传递给 *.exe 程序的参数的地方(右键 点击游戏可执行文件选择 发送到 --> 桌面快捷方式 即可创建游戏的快捷方式)。
一旦你成功创建了快捷方式,你就可以在目标路径中使用以下任何一个参数:
- -noaudio: 关闭游戏中所有的音频。
- -inawindow: 强制游戏以窗口方式运行,即使在编译时设置成以全屏模式运行。
- -output <filename>: 将控制台输出发送到文件名(filename),包括代码库中的任何调试信息。
- -debugoutput <filename>: 将控制台输出发送到文件名(filename),不包括任何自定义调试信息,但包括来自运行程序错误报告的额外信息。
- -software: 强制游戏使用软件顶点处理而不是硬件渲染游戏图形。这对于使用 Inter GFX 芯片组的电脑或在显露出显示问题的旧电脑上十分有效。
- -intel: 无论使用什么显卡,这都会启用无效 Inter 驱动修复程序。对于那些糟糕的驱动,使用该选项会减慢游戏速度,带来显著的性能下降,如果你不需要修复,就不要使用该选项。
- -vanillaGFX: 使用该选项可以关闭驱动程序制造商检测,这对于测试你的游戏“原貌”非常有用。
值得注意的是,如果需要,-output 和 -debugoutput 两个选项的 <filename> 参数可以是相同的,文件在每次写入时都会被打开并关闭(不需要担心文件句柄被占用的问题)。
你现在应该找到游戏快捷方式,并且右键点击并选择属性。 这将会打开如上窗口。在这里你可以在目标路径添加命令行参数。光标移动到文本末尾,添加一个空格,然后添加命令行参数字符串。例如,需要创建一个调试文件输出,你需要输入:
这将在可执行文件的位置(不是快捷方式位置,而是游戏安装位置)创建一个名为 “debug.txt” 的文件,它带有来自于你完成的游戏的调试和编译信息。点击“确定”,然后用快捷方式运行游戏,让它使用这些参数并帮助你调试。
有关如何调试游戏的详细信息,请参阅 调试 章节。
YoYo runner 还受益于一个特殊的命令行参数:
- -game <filename>: 加载指定的游戏文件
你为什么需要用这个?通常情况下并不需要这样做,但是如果你想同时运行游戏的多个版本,你就可以使用这个命令行参数,使得 A/B 比较测试更加容易用这种方法,你可以与其他人一起进行测试,或者最为设计人员的你,可以通过并行测试来更好地了解游戏。
要使用该参数,你需要先知道一些事情。你首先需要找到 Runner 的路径。Runner 可以在 Windows 操作系统的 Program Data 文件夹找到(该文件夹默认隐藏,所以你需要更改查看属性才能看见它),典型的格式如下:
注意 runtime_version 文件夹取决于你当前安装的运行时版本。你还需要找到 <你的游戏>.win 文件,因为这是我们需要指向 Runner 的文件。最简单的方法是去 Temp 文件夹(通常位于 %localappdata%\Temp\GameMakerStudio\<游戏名>\),然后搜索 *.win,这将显示所有可用项,然后你可以选择你需要的文件获取完整路径。
现在,我们可以仿照上述对 exe 操作中那样为 runner 创建一个快捷方式,然后根据需要更改参数,但这意味着必须在测试之间打开并编辑它,这就违背了我们将此功能用于并行测试的目的。取代方案是,我们将创建几个小的“批处理”文件来解决这个问题。
为此,首先在桌面上创建一个新的文本文档并在记事本中打开它。添加如下内容:
你需要设置临时路径(<LOCAL TEMP PATH>)指向你的游戏 *.win 文件,然后保存为 “GM_Test_1.bat”(注意记事本会自动保存为 *.txt ,所以你需要在保存对话框的保存类型选择“所有文件”)。最后的命令看起来应该是这样的:
现在,创建另一个文本文件并添加相同的内容,只是这次你将它指向你想要并行测试的游戏的第二个版本的路径,并且你会将其保存为“GM_Test_2.bat”。你可以双击 其中任何一个来打开你的游戏的不同版本,将它们作为批处理文件意味着你可以轻松地再次打开它们来编辑它们并修改为需要测试的游戏。