主机游戏的PC端口通常会在一两个月后出现。为什么是这样?
游戏也是用也可以在PC上编译的语言编写的,因此游戏逻辑应该毫无问题地进行编译。那是什么阻碍了他们呢?它是呈现代码还是什么?
主机游戏的PC端口通常会在一两个月后出现。为什么是这样?
游戏也是用也可以在PC上编译的语言编写的,因此游戏逻辑应该毫无问题地进行编译。那是什么阻碍了他们呢?它是呈现代码还是什么?
Answers:
PC端口可能要花费一些时间,原因有很多。(如果我似乎要在某个地方重复我自己,我深感抱歉;这是即时写的。)
当您在控制台上玩游戏时,这仅会限制您的操作,因为所有用户都拥有一个游戏手柄。
仅在键盘按键和控制器输入之间创建1:1映射并不总是一个好主意-即使可能的话-有时要花更长的时间才能找到一个好的解决方案。
当您开发Wii U时,您会确切地知道Wii U的行为,因为所有Wii Us都是相同的。对于PC而言并非如此。您有许多不同的图形卡和CPU,有时某些功能将无法使用。发现这些错误需要大量测试,并且修复它们还需要时间。
如果您从未使用过引擎来制作PC版本,则还需要相应地编写硬件抽象代码。有些游戏希望支持Linux / Mac的多个DirectX版本和 OpenGL,如果以前没有做过,那么所有这些都需要时间来编写。
在游戏机上,游戏不必与操作系统争夺资源等。在后台并没有发生很多事情。
在PC上,您正在运行操作系统,并且有大量的后台程序,这一切都意味着您所获得的份额不会达到您的期望。这意味着您有时需要执行其他优化,尤其是对于低端系统上的播放器
使用控制台时,您有一个固定的目标,因此您可以编写着色器等以匹配该目标。
在PC上,某些图形卡支持更高级的功能,也许您想为它们使用更好的着色器。好吧,这意味着您必须编写该着色器。
控制台SDK可能具有许多不方便映射到PC的便捷功能-例如,它可能提供对硬件计时器或良好声音API的访问。
这些东西通常在PC上不可用。您需要使用其他方式来完成这些任务,并且可能会改变您抽象平台差异的方式。
一个简单的原因是,控制台具有一套与每个控制台相同的硬件。
您的XBox,PS3和Wii都具有与邻居XBox,PS3和Wii相同的硬件。但是,您的计算机具有不同的CPU,不同的图形卡,不同数量的RAM,实际上,整个配置和操作系统设置,已安装的驱动程序都可能是世界上其他任何人都无法完全实现的唯一排列。
这就是很难移植到PC的原因。您需要考虑最低系统要求及以上的所有可能硬件。这是编程和调试的棘手且困难的过程。对于开发人员来说,很难知道每种配置都要编程,并且几乎不可能在这些配置上运行测试。
一旦他们为PC开发了它,开发人员就会进行大量的内部测试,但是它也可能依赖于用户长达数周到数月的Beta测试。在正式发布PC端口之前,将测试版测试外包出去的典型原因是,您发现控制台和PC之间的发布日期存在差距。
将代码移植到新平台需要花费时间。为Xbox 360创建一个纳秒计时器(我从未在XNA中开发过)将需要与Linux,Mac或Windows中相同的纳秒计时器不同的实现。现在想象一下,您有数百种需要移植的功能类型,如果引擎足够强大,则有数千种功能需要移植。
要为新平台添加这些不同的实现,可能需要花费一两个月的编码。最重要的是,您不能总是在Xbox 360上使用与Windows,Playstation 3或其他平台上相同的库。这意味着您可能必须使用全新的库才能执行与Xbox 360版本相同的操作。
总体而言,这些事情加起来要花费大量时间。对于大型AAA游戏而言,移植到新平台几乎是不容易的。
最初,在游戏机上制作游戏要比在PC上制作游戏难。最重要的是,在任天堂,索尼和微软之间,控制台具有非常不同的规格和不同的硬件,这不仅导致性能不同,而且意味着不同的瓶颈问题。
通常,游戏只是调整引擎以在每个控制台上最大化质量和性能。
适应PC时,还有其他问题。控制台是同质的,这意味着所有控制台都具有相同的硬件(所有PS3都具有相同的硬件性能)。当您为PC制作游戏时,您的目标是最低规格,但同时也允许用户提高功能更强大的PC的质量。针对PC的游戏优化程度较差,但对于程序员而言更容易制作。
在控制台上编程具有一个优势,它允许程序员最大化性能,因此任何控制台游戏都将始终表现出色。
在PC上,情况更糟,因为那里有许多硬件,但是,当然,它具有更大的自由度,因此效果最好的游戏始终在PC上,因为PC始终处于最前沿,但要付出一定的代价。
将游戏从游戏机移植到PC可能会很棘手,因为游戏机是为提高游戏性能而设计的,而PC并不是为了游戏性能而设计的,但是总的来说,将游戏从游戏机移植到PC的过程要容易得多,因为游戏机的内存要少得多,少2到4倍。
更改代码以适应此内存限制通常将始终意味着完全重新编程。
我认为将游戏从主机移植到PC并不困难,这只是API的问题。只使用控制台的公司和程序员将很难移植到PC,这是因为他们不习惯PC,而且还因为他们不断适应控制台API,因此这意味着他们的代码通常会满足控制台编译器的限制,并且不一定需要PC api。
当然,可以对引擎进行编程以使其在所有控制台和PC上运行,一旦完成,将变得更加容易,总比告诉您的程序员在3到4年内从未计划过将引擎移植到PC上要好。
TL; DR控制台是同类的,并且是上一代控制台,PC是异构的,并且硬件和API不断发展。成本分散在编程和硬件构建之间,这是一个折衷方案。
一件好事是允许所有硬件运行所有东西,但是控制台价格得到补偿,因为游戏公司向控制台制造商支付了许可证,因此他们将其硬件锁定为仅运行付费的游戏公司。太乱了