我有机会参加索尼授权的培训课程,学习如何使用 PS3 的单元架构进行编程。
然而,我对 C++ 仅有基本的了解,并且想知道 PS3 对于像我这样有抱负的初学者游戏开发者来说是否有点矫枉过正。
还有什么是让我在大约 2 个月的时间内达到 C++ 图形编程水平的最佳资源?
我敢打赌这会很有趣,而且你在课程中学到的任何东西都会帮助你成为一个更好的程序员。
最后一个关于我日常工作的问题.... :)
你学到的很多关于 PS3 的知识将适用于其他架构,因为并行编程开始看起来像未来。PS3 上使用的许多并行技术直接适用于 Xbox 360。我怀疑未来的许多游戏机将朝着同一个方向发展,我们都需要开始更多地考虑并行化目前。
也就是说,如果您对 C++ 仅有基本的了解,那么很多材料可能会超出您的想象。我想这取决于你想从会议中得到什么。您是在寻找 PS3 的介绍,还是希望能够在会议结束后的第二天开始在 PS3 Linux 上制作游戏?
假设您负担得起,这些信息会很有趣并且可能会有所帮助。除非您觉得成本大于收益,否则我不会放弃这样的机会。(我假设有成本,我真的不知道。)
游戏编程资源遍布网络。如果你想参加 C++ 速成课程,我会选择 Lippman 等人的 C++ Primer。如果你想要一个图形速成课程,那么实时渲染是最好的起点,还有一本关于数学的好书,比如 Eric Lengyel 的 3D 游戏编程数学。还可以浏览一些 OpenGL 或 D3D 教程;即使两者都不常用在 PS3 上,其原理也与任何 API 相同。
问题不在于 PS3 太过分了,而在于 Cell 处理器是出了名的难以编程以发挥其潜力。高度并行化的架构可能非常强大,但要真正获得这种性能并不容易。
我认为这是一个为未来做准备的伟大架构(多核编程)。但是,对于大多数实际目的,您实际上最好学习基于 Windows 的游戏开发,因为使用控制台的启动成本要高得多。例如,开始为 DirectX 编码会容易得多。
所以,是的,在某些方面你是在找麻烦。如果您决定使用 PS3,请务必查看 MIT PS3 课程。
不,一点也不,如果您使用.NET 作为您的主要语言,它只会变得更加困难。如果你想使用 .NET,我建议 XBOX 360 使用 C#/XNA。
编辑: 这是一个很好的链接,可以帮助您入门: http: //www.cag.csail.mit.edu/ps3/
我认为,如果您有机会参加而不是什么都不做,那么您绝对应该去参加。从比你了解更多的人那里学到东西的回报是很多人没有的礼物。它来自有执照的培训师,这一事实使它更加值得。
他在学习 PS3 架构、库、特殊技巧等时专门谈论学习 C++。我不建议这样做。你需要在你的 C++ 功夫上很强大才能在 PS3 上很好地编码,如果你出现并且甚至不知道这门语言,你就会出丑。
最糟糕的是,您将浪费专业开发人员的时间。他们实际上可以使用这些信息,但你会花时间处理你应该已经知道的新手问题。
我不是要刻薄;我也不会去,因为我不太了解 C++。试着体谅那些花钱去那里的人。
在过去的几个月里,我一直在自学 Cell 处理器编程(用 C 语言)。这绝对不是最好的起点,因为成功编程 Cell 需要掌握很多技能:C/C++、pthreads、libspe、cell 上的各种通信类型(DMA、邮箱、信号、中断、原子 I/ ○)。为了使这更难,Cell 的文档可能是神秘的、难以找到的和错误的。如果您使用更通用的平台(XNA、pyGame、SDL),将会有更大的用户社区。这并不是说 Cell 没有任何用户社区,只是它更小。即使在其他环境中,人们可能会发现多处理器编程,但由于其独特的架构,很难将这些环境的技术翻译到单元中。还,
但这并不全是坏事。学习 PS3/Cell 会教你很多关于机器附近编程的知识。你真的别无选择,因为程序员可用的抽象并不多。Cell 上的每个 SPU 都有 256KB 的本地内存,如果您需要更多,那么您需要找出某种方案来发出正确的 DMA 请求,以便在正确的时间将正确的值带入内存,并且(希望如此)在 DMA 请求正在进行时让 SPU 忙于做某事。学习细胞
所以,也许不是最好的学习平台,但考虑到你有机会从索尼那里上课,这听起来是一个很好的机会。
无论如何,如果您有兴趣,Scarpino 的书是一本很好的参考书,其中有几章关于使用 OGRE 引擎在单元上进行游戏编程,您可能也会感兴趣。
虽然我没有在 360 或 PS3 上开发应用程序的经验,但我对这两个平台的各种优点进行了大量研究。我使用 C++ 已经很长时间了,尽管我已经用它构建了几个 MFC 和 BeOS 应用程序,但我已经用它构建了许多 UNIX 服务器应用程序,但控制台游戏环境仍然有很大不同。
正如其他人在这里所说,PS3 的 Cell 芯片确实是一头难以驯服的野兽,并且需要 Carmack 级别的才能才能正确使用。话虽如此,如果免费参加课程并没有错,尤其是如果您遇到以前开发过游戏并可以给您一些建议的人。
如果您想为控制台开发游戏,对于只有基本 C++ 知识的人来说,最好的选择是使用 Xbox 360 的基于 C# 的 XNA 套件。如果您熟悉 C++ 的工作方式,C# 不是t那么难拿起。事实上,我认为这比跳到基于单元的多核、多线程编程要小得多。如果您以前从未开发过内核级应用程序,那么在您准备好之前,您应该避开这类事情。两个月的时间还不够。
XNA 平台对有抱负的游戏机开发者来说非常有吸引力,其中最重要的一点是 C# 与 C++ 的相对安全性,以及 XNA 游戏可以通过 Microsoft 市场销售的事实。
我不知道有多少是单手开发的 PS3 游戏,但在 360 上有一些例子,例如 Braid,它们几乎是单独开发的。XNA 示例也非常有趣且具有教育意义。