如何在没有访问开发套件的情况下获得PS3 / Xbox 360体验?


24

我是一个崭露头角的游戏程序员,试图进入PS3,Xbox 360的行业编程。我看到的主要问题是需要向潜在的雇主证明我的技能,但是却无法获得PS3或Xbox 360的开发套件,这直接是不可能的。

我的问题是,向控制台开发人员展示我的技能的最佳替代方法是什么?

Windows DirectX中的C ++编程似乎接近于展示Xbox 360编程技能,而OpenGL中的C ++编程则相对接近于展示PS3编程技能。不幸的是,从网络研究看来,Xbox 360和PS3实际上都拥有自己的专有库,因此,这似乎并不是100%富有成果的努力。这种方法似乎最接近,但也最耗时。另外,您实际上并没有使任何内容在控制台上运行。

另一方面,使用XNA编程的好处是您的游戏实际上是在控制台上,尽管我的印象是这不是“真正的交易”,因为它只是DirectX的包装,并且使用C#代替C ++。

有没有人具有行业内的知识或经验,从而知道哪种游戏演示对向潜在雇主展示最有用?DirectX,OpenGL,XNA,虚幻引擎,Unity3d,Flash等中的C ++?一天只有几个小时,我很想知道如何指导我的努力。

我的直觉是,DirectX是最好的选择,因为它似乎更接近Xbox 360上使用的东西,但是如果以另一种语言/引擎进行出色的演示同样好,那么显然花费的时间会更少另一条路线。

预先感谢您的帮助和建议!

Answers:


17

坦率地说,取决于大多数人不希望初级的特定平台技能,这取决于您要走的路。

如果您是游戏程序员,请制作很多游戏。

如果您的技术程序员做了很多技术演示。阅读有趣的白皮书并尝试新的东西。如果您做的有趣的事情使程序员不敢恭维,我们将想与您联系。我们想聊聊您所做的这一有趣的小事。不一定要是游戏。

事实:您的演示应在各种计算机上运行,​​包括作为备份的视频记录。编辑不原始。


8

对于初级职位,我并不是希望在任何特定的API上都具有丰富的经验,而是可以很好地理解所涉及的概念。

如果是相关的位置的图形,你要寻找的,证明你知道3D数学,以及如何使用API 以及(OpenGL或D3D,不在乎这确实-只要确保你优化得很好)。坦白说,所有API或多或少都归结为要绘制的事物列表,提交它们以及管理状态-而且有做这些事情的好方法和坏方法,所以要明白这一点。

对于更通用的控制台编程,请确保您能解决嵌入式平台所遇到的特定问题。有限的内存(无交换,碎片损坏等),应对崩溃的严格规则,有限的I / O带宽,没有(或有限的)补丁/更新能力等。

这是关于编码的样式,而不是细节。

如果您要寻找商业职位,我实际上会避免使用 XNA,因为它实际上在那个领域没有太大用处。


7

FWIW,我会考虑在C#/ XNA在Xbox 360上节目是一个为“实打实”很好的替代品。

考虑:

  • 在360上的XNA中,您必须处理垃圾回收。具体来说,您需要避免每帧分配过多(如果有的话)。虽然在360 C ++,您不必处理垃圾收集(除非你正在处理的脚本语言,像LUA),但你还是要避免每帧使许多,如果有的话,分配。
  • 为了充分利用360的处理能力,您需要使代码成为多线程。由于要弥补托管代码的性能要比C ++差一点,因此在XNA中,这与C ++中的XNA一样,甚至更多。
  • 除了XNA提供的大量辅助功能和类外,XNA中的图形API(基于DirectX)与360上的DirectX / C ++非常相似。

XNA的奇妙之处在于,它可以使您更少地关注在屏幕上显示内容的技术问题,而将更多精力放在制作游戏上。只需制作一个相对没有漏洞并且以适当的帧速率运行的游戏(任何游戏!),尤其是在XNA提供的有限环境中,就会带给您很多经验,可以演示该演示,希望脚在门上。


5

如果您需要PS3编程技能,则可以寻求:

  • 了解PPC架构;您可以在PowerPC机器上进行C / C ++开发,无论是在旧G5 Mac上的OS X,还是在包括PS3在内的任何PowerPC机器上的Linux,都可以做到这一点。
  • 对AltiVec的了解;同样,您可以在最近的PowerPC机器上使用Mac或Linux来获得此功能,但是对SSE3的了解可能就足够了。
  • SPU的知识:您只能使用Linux在PS3上进行练习。

这不会教您如何对PS3视频芯片进行编程,也不会教您如何使用官方的SDK。尽管对于视频编程,一般的OpenGL和DirectX技能可能也足够了,并且还需要一些HLSL。互联网上还有很多信息和材料,并非所有信息和材料都是非法的(例如,GPL涵盖了索尼针对PS3修改的GCC版本)。

如果您需要X360编程技能,则将寻求:

  • 有关PPC架构的知识:请参见上文

  • AltiVec的知识:见上文

  • DirectX知识:您可以在Windows上练习。

  • Xbox 360 SDK的知识:相似之处在于实践XNA会大有帮助。

其他重要技能可能包括多线程编程(一般知识,但也包括原子操作,无锁算法),可移植性(字节序,指针大小,视频硬件功能等)。

是的,正如您提到的,我相信DirectX将是您可以掌握的最有价值的技能。但是,请注意,竞争也将以这种方式进行,一些额外功能可能会有所作为。

资料来源:我做了以上所有工作,自己在这个行业做得很棒。


3

这个问题(或更确切地说,是您的愿望)需要范围。如今,业界几乎没有“游戏程序员”这样的东西。除非您打算去一个很小的工作室或渲染程序员,否则DirectX或OpenGl并不重要。使控制台与PC脱颖而出的原因是性能有限,内存有限和多核问题。无论您追求的是行业编程的哪个分支,这些都是很重要的,因此请表明,您知道如何处理这些问题,它将为您提供帮助。了解您的C ++。了解C ++的陷阱。知道如何不使用STL。确保您的代码是独立于帧率的,多线程的,并且使用自定义内存分配器。当然要强调这一点。我认为真正重要的是您的演示完成了。当核心技工工作时,许多程序员都会停下来,而游戏编程中的阻力却是终结-表明您知道该怎么做。

大多数工作室想知道您的技能是什么,人工智能,游戏性,渲染,系统,音频,物理等。尝试找出答案。没有行业经验的通才将是一件很难的事。

祝好运!


选择重点区域的重点。
jcurrie33

1

DirectX是一个不错的选择。对于我们来说,这是最简单的演示,因为我们已经很可能拥有装有Windows的PC。如果确实选择使用控制台选项,则视频是一个不错的演示。但是,查看实时代码运行无所不能。

请尝试在多台计算机上运行代码,以确保允许使用其他视频卡等。这些天大部分时间都是自动的,但仍可能会出现一些差异。


0

熟悉任何3D API都是很好的。不管是DirectX还是OpenGL。3D概念到处都是相同的,只是API不同。知道OpenGL并不会让您在竞争初级XBOX职位时对知道Direct3D的人处于不利地位。您需要证明的是您具有编写代码的能力,并且您了解C ++(或任何其他语言),标准库,数据结构和算法。对诸如UDK或Unity之类的游戏引擎的了解是一项奖励。这证明了您使用中间件的能力,这在游戏公司中很常见。Flash已用于前端开发,这也是一项不可忽视的技能。

最重要的是,您只需要构建一个演示文件(使用任何语言),使其变得更好,直到最后就可以看到它。祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.