黄金法则和技巧

以下是这本书提到的一些“黄金法则”和诀窍。

诀窍
  • 你需要在Xbox 360上有一个Xbox 360 Live帐户,当年开发和测试您的XNA游戏是它必须一直在线。

  • 请确保您的PC和Xbox 360都在同一网络中并可以可以“看到”对方。您可以从电脑上pingXbox 360的IP或将Xbox 360游戏机作为媒体中心连接到您的PC机上。

  • 当您在XNA Game Lanucher的设置中创建一个加密密钥但PC不接受时,可能是因为你输入错误,或它包含0(数字零)和O字母,看起来几乎相同,只是再次尝试即可。您可以随时创建一个新的加密密钥。细节可见第1章。

  • 如果在编译本书的代码时遇到错误,请取保你拥有所有必须的内容,所有类和使用的变量被正确定义。

  • 阅读编译器的错误信息并改变相应的代码。也许您正试图使用一些过时的方法,要么用新方法代替,要么只是简单得把它们注释掉。

  • 如果编译正常,但程序崩溃或抛出一个错误,最有可能是丢失了一些内容文件或您的图形硬件不支持,至少Shader Model 1.1。

  • 重要的是要记下您的构思,并制定一个小概念。只有一页的构思是非常有用的。

  • 要解决问题你使用自上而下的方法,并将单元测试保持在刚才的最高水平上而不用考虑具体的实现。这样,您就可以迅速通过测试,并写入单元测试,使其更容易地看出你必须实现的方法。

  • 对管理项目的最后提示:思考你遇到的问题,并分解为更小的便于管理的部分。

  • 首先编写测试而不要考虑执行情况。只写下你心目中最终代码的模样。

  • 让测试处理尽可能多的情况。例如,TestIsInList方法能同时测试成功调用IsInList和未能成功调用IsInList。花些时间在您的单元测试上,但不要超过50%。你不应该对只有两行代码大方法编写30个测试。

  • 一开始就不断进行测试,即使你认为没有意义。这将迫使你看到必须做什么和执行过程的进度。第一次测试可能无法编译,因为你没有实现任何东西。在执行空的测试方法会失败,因为你没有做什么还没有,以后当一切开始工作你就会感觉好多了。

  • 虽然你不会经常测试您的静态单元测试,但每次当您编译代码时(如果它们运行得足够快)动态单元测试仍可以检测。总保持每天一次或每周一次运行所有的单元测试以确保新的代码更改没有增添新的漏洞或错误。

黄金法则
  • 如无必要不要使用任何外部的DLL-虽然支持使用XNA游戏库DLL,但大多数W indows平台上的DLL会调用系统上Xbox 360不可用的DLL,使用P-Invoke调用非托管的DLL,出于安全原因这在Xbox 360上是绝对不支持的。也不要使用unsafe代码或试图调用外部代码,接入设备或使用不支持的功能,这只能是浪费时间。

  • 不要等到最后才测试 -在编译为Xbox 360游戏项目时,经常会遇到你习惯的方法在Xbox 360上不存在。例如,在Xbox 360中的System.dll没有TryParse方法,一些方法和类(如MouseState类)在Xbox 360也不存在。
  • 不要直接载入内容 -在Windows平台上可以通过Texture2D或CompiledEffect构造函数直接加载纹理或shader。这些方法在Xbox 360上不存在,你只能从内容管道中加载内容。如果想动态加载纹理或shader,那么只会在Windows平台才能实现。在这种情况下应使用XBOX360定义排除此代码部分,使该项目仍然在Xbox 360平台上正常编译。

  • 保存游戏和加载其他内容 -对于保存的游戏你可以使用Content命名空间和许多辅助类。要加载内容你应在StorageContainer.TitleLocation帮助下确保使用正确的路径,它在Windows平台上也能正常工作。在Xbox 360平台上从其他地方加载会出现拒绝访问的IO操作错误。

  • 测试分辨率 -Xbox 360支持许多不同的分辨率,您应该测试至少2-3个不同的分辨率以确保游戏运行很好。

  • 允许使用手柄控制一切 -我看到的大多数XNA游戏犯了只支持键盘输入或手柄输入的错误,这意味着它也只能运行在Windows平台或您必须有一个Xbox 360手柄。应该始终支持你能想到的尽可能多的输入设备。

  • Xbox 360上的调试和单元测试 -调试和单元测试与在Windows平台并没有什么不同。也许追踪错误和日志消息有点难,但单步调试代码和测试单元测试工作的很好。顺便说一句:编辑并继续只能在Windows平台上实现,Xbox 360游戏不能这样做,这挺烦人的,但通常你是在Windows平台上开发主要部分,所以影响不大。