为什么游戏开发人员更喜欢Windows?


396

即使OpenGL是跨平台的,DirectX是否比OpenGL更容易或更出色?为什么我们看不到像Windows那样真正的功能强大的Linux游戏?


55
错误的前提-在哪里有证据表明游戏开发商喜欢Windows?我认为@ user17674更准确-他们想开发平台以便可以销售更多并赚更多钱:-)
Rory Alsop

258
病毒开发人员也更喜欢Windows。这一切都与用户群有关。
CesarGon

4
从历史上看,为什么Windows程序员更喜欢DirectX而不是OpenGL,这可能是一个更有趣的问题。正如下面指向Carmack采访的链接可能表明的那样,DX曾经被人讨厌。知道它如何保持足够的用户数量来支持MS,直到Xbox和现代重写使其流行为止,这将是很有趣的。也许它总是足够好,所以人们坚持使用它。
CodexArcanum 2011年

100
人们为什么要抢银行? 因为那就是钱所在
GrandmasterB

7
@CesarGon:这不仅是因为用户基础,也是为了易于开发。
乔治(Giorgio)2012年

Answers:


1155

这里的许多答案都非常非常好。但是,应该解决OpenGLDirect3D(D3D)问题。这需要...历史课程。

在开始之前,我对OpenGL的了解比对Direct3D的了解还要多。我一生中从未写过任何D3D代码,而且我已经在OpenGL上编写了教程。因此,我要说的不是偏见问题。这完全是历史问题。

冲突的诞生

有一天,在90年代初的某个时候,微软向四周张望。他们看到SNESSega Genesis很棒,可以运行很多动作类游戏。他们看到了DOS。开发人员编写了诸如主机游戏之类的DOS游戏的代码:直接开发。但是与控制台不同,在控制台上,开发SNES游戏的开发人员知道用户将拥有什么硬件,而DOS开发人员则必须编写多种可能的配置。这比听起来要难得多。

微软有一个更大的问题:Windows。与DOS不同,Windows希望拥有硬件,而DOS却可以让开发人员做任何事情。为了拥有应用程序之间的协作,必须拥有硬件。合作正是游戏开发人员所讨厌的,因为合作会占用宝贵的硬件资源,而他们可能会使用这些资源来提高性能。

为了促进Windows上的游戏开发,Microsoft需要一个统一的API,该API是低级的,并且可以在Windows上运行且不受其影响,并且大多数都是跨硬件的。适用于所有图形,声音和输入硬件的单个API。

因此,DirectX诞生了。

3D加速器在几个月后诞生。微软遇到了麻烦。参见DirectX的图形组件DirectDraw,它仅处理2D图形:分配图形内存并在内存的不同分配部分之间进行位清除。

因此,微软收购了一下中间件,它塑造成Direct3D的版本3.据普遍唾骂。并且有充分的理由;查看D3D v3代码就像凝视《约柜》一样。

Id Software的老约翰·卡马克(John John Carmack)看着那个垃圾,说道:“拧紧!” 并决定编写另一个API:OpenGL。

瞧瞧,这头猛兽中的另一部分是Microsoft一直在忙于在Windows的OpenGL实现中使用SGI。这里的想法是向典型的GL应用程序的开发人员求助:工作站应用程序。CAD工具,建模之类的东西。游戏是他们心目中最遥远的事情。这主要是Windows NT,但Microsoft决定也将其添加到Win95。

为了吸引工作站开发人员使用Windows,Microsoft决定尝试贿赂他们以使用这些新型3D图形卡。微软实现了Installable Client Driver协议:图形卡制造商可以使用基于硬件的协议来替代微软的软件OpenGL实现。如果可用,代码可以自动仅使用硬件OpenGL实现。

早期,消费者级别的视频卡虽然不支持OpenGL。这并没有阻止Carmack仅仅将Quake移植到他的SGI工作站上的OpenGL(GLQuake)。正如我们从GLQuake自述文件中看到的:

从理论上讲,glquake将在支持纹理对象扩展的任何兼容OpenGL上运行,但是除非它是非常强大的硬件来加速所需的一切,否则游戏将无法接受。如果必须通过任何软件仿真路径,则性能可能会大大低于每秒一帧。

目前(97年3月),唯一可以合理地发挥作用的标准opengl硬件是鹰图实现,这是一张非常昂贵的卡。3dlabs一直在显着提高其性能,但是使用可用的驱动程序仍然不够好玩。从全屏运行退出时,当前用于glint和permedia板的某些3dlabs驱动程序也会在NT崩溃,因此,我不建议在3dlabs硬件上运行glquake。

3dfx提供了一个opengl32.dll,它可以实现glquake所需的一切,但它不是完整的opengl实现。其他opengl应用程序不太可能与它一起使用,因此基本上将其视为“ glquake驱动程序”。

这就是miniGL驱动程序的诞生。随着硬件功能强大到足以在硬件中实现大多数OpenGL功能,这些技术最终演变为完整的OpenGL实现。nVidia是第一个提供完整OpenGL实现的公司。许多其他供应商都在苦苦挣扎,这就是开发人员偏爱Direct3D的原因之一:它们与更广泛的硬件兼容。最终仅剩下nVidia和ATI(现在为AMD),并且都具有良好的OpenGL实现。

OpenGL崛起

这样就设置了阶段:Direct3D与OpenGL。考虑到D3D v3的糟糕程度,这真是一个了不起的故事。

OpenGL体系结构评审委员会(ARB)是负责维护OpenGL的组织。他们发布许多扩展,维护扩展存储库,并创建API的新版本。ARB是由许多图形行业参与者以及某些OS制造商组成的委员会。苹果和微软在不同时间都是ARB的成员。

3Dfx随Voodoo2一起推出。这是第一个可以进行多重纹理处理的硬件,这是OpenGL以前无法做到的。虽然3Dfx强烈反对OpenGL,但下一代多纹理图形芯片(TNT1)的制造商NVIDIA很喜欢它。因此,ARB发布了扩展名:GL_ARB_multitexture,它将允许访问多重纹理。

同时,Direct3D v5发布了。现在,D3D已成为实际的API,而不是猫可能会呕吐的东西。问题?没有多重纹理。

哎呀。

现在,由于人们没有过多地使用多重纹理,因此该伤害几乎不会达到应有的程度。不直接。多重纹理会严重影响性能,在许多情况下,与多重传递相比,这是不值得的。当然,游戏开发人员喜欢确保自己的游戏可以在较旧的硬件上运行,而这些硬件没有多重纹理,因此很多游戏都没有它。

因此,D3D被判缓刑。

随着时间的流逝,NVIDIA部署了GeForce 256(不是GeForce GT-250;这是第一个GeForce),在接下来的两年中,显卡的竞争几乎结束了。主要卖点是能够在硬件中执行顶点变换和照明(T&L)。不仅如此,NVIDIA非常热爱OpenGL,因此他们的T&L引擎实际上就是 OpenGL。几乎从字面上看;据我了解,它们的某些寄存器实际上直接将OpenGL枚举数作为值。

Direct3D v6发布。最后是多纹理,但是没有硬件T&L。OpenGL 一直有一条T&L管道,即使在256条之前是通过软件实现的。因此,对于NVIDIA而言,将其软件实现转换为硬件解决方案非常容易。直到D3D v7才最终获得硬件T&L支持。

着色器的曙光,OpenGL的黄昏

然后,GeForce 3出现了。同时发生了很多事情。

微软已经决定他们不会再迟到了。因此,他们没有看NVIDIA在做什么,而是在事后照搬了它,而是采取了惊人的立场去与他们交谈。然后他们相爱了,在一起有了一个小小的控制台。

随后发生了混乱的离婚。但这是另外一次。

这对PC而言意味着GeForce 3与D3D v8同时发布。不难看出GeForce 3如何影响D3D 8的着色器。支持Shader Model 1.0的像素着色器是非常具体的,以NVIDIA的硬件。从未尝试过抽象NVIDIA的硬件。SM 1.0就是GeForce 3所做的。

当ATI开始使用Radeon 8500进入性能显卡竞赛时,出现了问题。8500的像素处理管线比NVIDIA的强大。因此,微软发布了Shader Model 1.1,基本上就是“ 8500所做的一切”。

这听起来像D3D的失败。但是失败和成功是度的问题。而史诗故障是发生在OpenGL的土地。

NVIDIA喜欢OpenGL,因此当GeForce 3推出时,他们发布了一系列OpenGL扩展。专有的 OpenGL扩展:仅NVIDIA。自然而然地,当8500出现时,它不能使用它们中的任何一个。

至少在D3D 8平台上,您可以在ATI硬件上运行SM 1.0着色器。当然,您必须编写新的着色器才能利用8500的凉爽度,但是至少您的代码有效

为了在OpenGL的Radeon 8500上具有任何种类的着色器,ATI必须编写许多OpenGL扩展。专有的 OpenGL扩展:仅ATI。因此,您需要一个NVIDIA代码路径和一个ATI代码路径,才能完全使用着色器

现在,您可能会问:“ OpenGL ARB在哪里,它是使OpenGL保持最新状态的工作?” 许多委员会经常结局的地方:不要傻了。

看到了,我在上面提到了ARB_multitexture,因为它是所有这些的深层因素。从局外人的角度来看,ARB似乎想完全避免着色器的想法。他们认为,如果将足够的可配置性应用于固定功能管道,则它们可以等同于着色器管道的功能。

因此,ARB在扩展后发布了扩展。其中每个带有“ texture_env”字样的扩展都是对这种老化设计进行修补的另一种尝试。检查注册表:在ARB和EXT扩展之间,进行了八个扩展。许多已升级为OpenGL核心版本。

微软此时是ARB的一部分。他们在D3D 9命中时就离开了。因此,他们完全有可能以某种方式破坏OpenGL。我个人对此理论有怀疑,有两个原因。第一,他们将不得不从其他ARB成员那里获得帮助,因为每个成员只有一票。最重要的两个是,ARB不需要Microsoft的帮助即可解决问题。我们将进一步证明这一点。

最终,ARB可能受到ATI和NVIDIA(均为活跃成员)的威胁,最终他们伸出了足够的头以提供实际的装配样式着色器。

想要什至是愚蠢的东西吗?

硬件T&L。OpenGL 首先要具备的功能。好吧,这很有趣。为了从硬件T&L中获得最大的性能,您需要将顶点数据存储在GPU上。毕竟,实际上是GPU要使用您的顶点数据。

在D3D v7中,Microsoft引入了顶点缓冲区的概念。这些是为分配顶点数据而分配的大量GPU内存。

是否想知道OpenGL何时获得了等效的支持?噢,NVIDIA是OpenGL的全部爱好者(只要它们是专有的NVIDIA扩展),就在GeForce 256首次发布时发布了顶点阵列范围扩展。但是ARB何时决定提供类似功能?

两年后。这是他们批准了顶点和片段着色器(D3D语言中的像素)之后。这就是ARB开发跨平台解决方案以在GPU内存中存储顶点数据所花的时间。同样,硬件T&L 需要达到最高性能的要求。

一种语言摧毁所有人

因此,OpenGL开发环境曾一度破裂。没有跨硬件着色器,也没有跨硬件GPU顶点存储,而D3D用户则同时享受了两者。会变得更糟吗?

你...你可以这么说。输入3D Labs

您可能会问他们是谁?他们是一家已经停业的公司,我认为它们是OpenGL的真正杀手。当然,当ARB应该拥有D3D时,它的一般能力不足使OpenGL易受攻击。但是3D Labs也许是我想到OpenGL当前市场状况的唯一最大原因。他们可能为此做了什么?

他们设计了OpenGL阴影语言。

看得出来,3D Labs是一家垂死的公司。NVIDIA对工作站市场的压力越来越大,他们昂贵的GPU被边缘化了。与NVIDIA不同,3D Labs在主流市场上没有任何业务。如果NVIDIA赢了,他们就死了。

他们做了。

因此,为了在不希望其产品的世界中保持相关性,3D Labs参加了游戏开发者大会,为他们称为“ OpenGL 2.0”的内容进行演示。这将是对OpenGL API的完整,从零开始的重写。这是有道理的;当时OpenGL的API中存在很多问题(请注意:该问题仍然存在)。只看纹理加载和绑定是如何工作的;它是半鹿茸。

他们提议的一部分是阴影语言。自然。但是,与当前的跨平台ARB扩展不同,它们的着色语言是“高级”的(C是着色语言的高级。是的,确实如此)。

现在,Microsoft正在开发自己的高级着色语言。在Microsoft的全部集体想象中,他们将其称为...高级着色语言(HLSL)。但是它们是对语言的根本不同的方法。

3D Labs着色器语言的最大问题是它是内置的。HLSL是Microsoft定义的一种语言。他们为此发布了一个编译器,并生成了Shader Model 2.0(或更高版本的shader模型)汇编代码,您可以将其输入D3D。在D3D v9时代,HLSL从未直接被D3D所触及。这是一个很好的抽象,但它纯粹是可选的。开发人员总是有机会落后于编译器并调整输出以实现最佳性能。

3D Labs语言没有这些。您为驱动程序提供了类似C的语言,并生成了一个着色器。故事结局。不是程序集着色器,不是您要提供的其他东西。表示着色器的实际OpenGL对象。

这意味着OpenGL用户对各种各样的开发人员持开放态度,这些开发人员刚刚掌握了汇编类语言的编译方法。编译器错误在新命名的OpenGL阴影语言(GLSL)中盛行。更糟糕的是,如果您设法使着色器正确地在多个平台上编译(绝非易事),那么您仍然会受到当天的优化器的影响。并不是最理想的。

虽然这是GLSL中最大的缺陷,但不是唯一的缺陷。通过

在D3D和OpenGL中的旧汇编语言中,可以混合并匹配顶点和片段(像素)着色器。只要它们与同一接口通信,就可以将任何顶点着色器与任何兼容的片段着色器一起使用。他们甚至可以接受不兼容的程度。顶点着色器可以写入片段着色器未读取的输出。依此类推。

GLSL没有任何东西。顶点着色器和片段着色器融合在一起,成为3D Labs称为“程序对象”的对象。因此,如果要共享顶点和片段程序,则必须构建多个程序对象。这引起了第二大问题。

看,3D Labs认为他们很聪明。他们基于GLSL的编译模型基于C / C ++。您采用.c或.cpp并将其编译为目标文件。然后,您获取一个或多个目标文件并将它们链接到程序中。这就是GLSL的编译方式:将着色器(顶点或片段)编译为着色器对象。然后,将这些着色器对象放在程序对象中,并将它们链接在一起以形成您的实际程序。

虽然这确实允许潜在的好主意,例如使“库”着色器包含主着色器可以调用的额外代码,但实际上意味着着色器被编译了两次。一次在编译阶段,一次在链接阶段。尤其是NVIDIA的编译器,因为它基本上运行两次。它没有产生某种目标代码中介。它只是编译一次并扔掉答案,然后在链接时再次编译它。

因此,即使要将顶点着色器链接到两个不同的片段着色器,也必须比D3D进行更多的编译。特别是因为类似C的语言的编译都是脱机完成的,而不是在程序执行开始时进行的。

GLSL还有其他问题。归咎于3D Labs似乎是错误的,因为ARB最终批准并合并了该语言(但“ OpenGL 2.0”计划没有其他要求)。但这是他们的想法。

这是真正令人难过的部分:3D Labs是对的(大部分情况下)。GLSL不是HLSL当时的基于矢量的着色语言。这是因为3D Labs的硬件是标量硬件(类似于现代NVIDIA硬件),但是它们最终正确地朝着许多硬件制造商使用其硬件的方向发展。

他们选择“高级”语言的在线编译模型是正确的。D3D甚至最终切换到了那个版本。

问题在于3D Labs在错误的时间正确。为了尽早召唤未来,为了适应未来,他们放弃了现在。这听起来与OpenGL始终具有T&L功能的可能性类似。除了在硬件T&L之前OpenGL的T&L管道仍然有用,而GLSL在世界赶上它之前是一个责任。

GLSL 现在是一门好语言。但是时间呢?那太差了。OpenGL为此蒙受了痛苦。

走向神化

虽然我坚称3D实验室受到了致命的打击,但ARB本身却是棺材上的最后一颗钉子。

这是您可能听说过的故事。到OpenGL 2.1时,OpenGL遇到了问题。它有很多遗留问题。该API不再易于使用。有5种做事方式,但不知道哪一种是最快的。您可以通过简单的教程“学习” OpenGL,但实际上并没有真正学习能够提供真正性能和图形功能的OpenGL API。

因此,ARB决定尝试重新发明OpenGL。这类似于3D Labs的“ OpenGL 2.0”,但更好,因为ARB在它后面。他们称其为“龙峰”。

花一些时间改进API有什么不好?这很糟糕,因为微软让自己容易受到攻击。瞧,是在Vista切换时。

借助Vista,Microsoft决定在显示驱动程序中进行一些急需的更改。他们迫使驱动程序向操作系统提交图形内存虚拟化和其他各种东西。

尽管人们可以争论这一点的优缺点或是否确实可行,但事实仍然如此:Microsoft认为D3D 10仅适用于Vista(及更高版本)。即使你有,这是硬件能够 D3D 10的,你不能没有也运行Vista上运行的D3D 10级的应用程序。

您可能还记得Vista ...嗯,让我们说它运行不佳。因此,您有一个性能不佳的OS,仅在该OS上运行的新API,以及需要该API和OS执行比上一代产品更快的速度的新一代硬件。

但是,开发人员可以通过OpenGL访问D3D 10级功能。好吧,如果ARB不在朗斯峰(Longs Peak)上忙,他们可以。

基本上,ARB花了一年半到两年的时间来改善API。到OpenGL 3.0真正问世时,Vista的采用率开始上升,Win7即将把Vista抛在后面,大多数游戏开发人员无论如何都不在乎D3D-10类功能。毕竟,D3D 10硬件可以很好地运行D3D 9应用程序。随着PC到控制台端口的增加(或PC开发人员跳入控制台开发。随您选择),开发人员不再需要D3D 10类功能。

现在,如果开发人员可以在WinXP机器上通过OpenGL早期访问这些功能,那么OpenGL开发可能已经需要了很多帮助。但是ARB错过了他们的机会。而且您想知道最糟糕的部分吗?

尽管花了两年宝贵的时间尝试从头开始重建API ...但是它们仍然失败,只是恢复到了现状(除弃用机制外)。

因此,ARB不仅错过了至关重要的机会之窗,甚至没有完成使他们错过机会的任务。几乎所有的史诗失败。

这就是OpenGL与Direct3D的故事。错失良机,愚蠢,任性盲目和愚蠢的故事。


24
您是否已在某处写下了此内容,或者是头顶上写下了该内容?
Kristofer Hoch

38
@Kristofer:我不知道您是否可以花一个小时左右的时间将它称为“头顶”,但我没有在任何地方写下它。
Nicol Bolas

18
@ F.Aquino:所以您愿意将此归因于FPS游戏使用的渲染系统,而不是引擎本身?即使CS基于《半条命1》,它也基于Quake?抱歉; 不买。当然,我不以新的FPS没有电竞潜力为前提,即使围绕着较新的FPS有很多电子竞技比赛也是如此。他们可能不像CS对某些玩家具有相同的吸引力,但不要误以为这些玩家构成了FPS的所有电子竞技。
Nicol Bolas

165
哇。我什至都不在乎这些东西,而且还是很不错的读物!
Peter Rowell

12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).笑了6分钟以上。
ApprenticeHacker

133

当问题是“游戏开发者”而不是“游戏编辑者”时,我发现每个人都将重点放在用户群上感到奇怪。

对我来说,作为开发人员,Linux真是一团糟。版本太多,有桌面管理器,UI工具包等。。。如果我不想以开源形式分发我的作品,则用户可以在其中(尝试)进行重新编译,以使其适合其软件包,库和设置,这是一场噩梦

另一方面,Microsoft提供(大多数时候)令人难以置信的向后兼容性和平台稳定性。可以使用一个封闭源安装程序来针对整个机器范围,例如运行Windows XP,Vista和7、32和64位版本,未安装适当的DX或VC可再发行文件的计算机等。

最后一件事,请所有人停止比较OPENGL和DIRECTX!比较Direct3D与OpenGL还是不这样做。DirectX提供OpenGL不提供的输入支持,声音支持,电影播放等。


40
“对我而言,作为开发人员,Linux真是一团糟。” 确实!我在Fedora和Ubuntu的环境中工作。即使在这两者之间,我们也有问题。(我必须添加我是Linux迷。)
David Poole

48
@ jv42:这似乎是一个普遍的误解:几乎所有这些版本以及桌面管理器和UI套件等都与启动游戏和正常工作无关。如果您的游戏(出厂时)不仅仅依赖于libGL,libX11和libasound(或libopenal,libao或liboss),则说明您在做错事。
greyfade11年

19
@greyfade“如果您的游戏(如出厂)不仅仅依赖libGL,libX11和libasound(或libopenal,libao或liboss),那么您就在做错事。” -然后您链接到libao-0.0.4alpha,而您的用户拥有libao-0.0.5beta,则没有任何效果。
quant_dev

17
打包二进制文件以使其可以在所有Linux发行版上运行并不难。哎呀,Blender开发人员在每个发行版中都这样做。Blender只有一个(分别是两个,32位和64位)Linux发行包。
datenwolf 2011年


88

这是因为地球上的Windows用户比Linux和Mac多。事实是,人们为拥有最大市场的人做事。
手机也是如此:Android和iPhone拥有很棒的游戏,但Windows Mobile和Symbian却没有...


24
@Mahmoud Hossam:事实并非如此。使用OpenGL并不意味着您的整个应用程序就可以在* nix环境下神奇地工作,这意味着图形引擎可以(并且即使那样也并不意味着Windows上没有怪癖)在Linux上存在,反之亦然)。这还不是全部,而且为多个平台维护其代码肯定会产生可观的成本。
Ed S.

5
@Mahmoud:是的。而且,如果您仍然不想移植到Linux / Mac OS,那么为什么不使用本机库呢?DirectX是很多更好的支持Windows比OpenGL是。
迪恩·哈丁

10
@Mahmoud:问题的全部前提是“开发人员为什么偏爱Windows”。答:因为那是游戏玩家使用的。如果仅占市场的2%,则没有必要移植到Linux / Mac,在这种情况下,如果您不打算移植,则使用OpenGL是没有意义的。
迪恩·哈丁

4
@Mahmoud,这不是游戏开发人员让人们改用Linux的工作。
GrandmasterB

6
@John 10+百万的魔兽世界玩家想和你谈一谈。这只是一场比赛。
Marcelo

50

由于Windows拥有超过90%的市场份额,而Linux(自从您特别询问Linux以来)以拥有许多不愿意为软件付费的用户而闻名。这是真的还是无关紧要的;感觉在那里,它影响着人们的决定。


1
如果开发人员使用OpenGL,它将同时支持Windows和linux,因此实际上吸引潜在的付费用户并使用Linux是他们的营销优势,因为他们认为这样做会更好。
M.Sameer

9
即使使用OpenGL,也有开发和测试跨平台的成本,而Linux市场是不合理的。与OpenGL相比,目前Directx还是(更好地)更好的PC游戏平台-基于OpenGL的PC上很少有新游戏。
马丁·贝克特

25
跨平台并不像“仅用于OpenGL的代码”那样简单。
系统停机时间

13
实际上,事实并非如此,Linux用户不会为软件付费。Humble Indie Bundle(您可以用自己想支付的任何价格购买的游戏捆绑包)现在已经完成了两次,每次都表明Linux用户为该捆绑包支付的费用高于Windows用户。
Htbaa 2011年

9
@Htbaa当然,他们付出了更多,他们绝望了,这可能是他们唯一可以在自己的操作系统上玩的游戏。
Marcelo

11

由于Windows由庞大的组织支持,所以十多年前,他们决定希望游戏开发能够在其平台上进行

对于Mac,情况并非如此,现在也不是如此。甚至不是iOS。苹果不提供用于iOS游戏开发的工具。但这是一个巨大的市场(那里的iPhone比1995年的PC多),竞争相对较少,所以人们还是这么做了。

对于Linux,甚至没有某种中央机构可以设置任何优先级。Linux的发展方向更多地是由一群非常优秀但略显超脱的程序员决定的。

要今天创建PC游戏,您需要很多2d / 3d艺术家,游戏设计师,脚本作者,演员,测试人员,而其他人则不需要。至于实际的编程,您可能只是使用实际的游戏引擎(CryEngine,Unreal Engine,Quake Engine,Source Engine)。因此,您可能不需要任何实际的程序员就可以完成整个工作。

因此,由于业务的性质,程序员几乎没有选择哪个平台的发言权。通常,经理们会寻求支持(这是Microsoft声称提供的支持),并且要处理某种程度上与他们的思想模式息息相关的事情,而开源则不是。

因此,大多数商业最终用户软件开发都在Windows上完成。
我在一家公司工作,该公司创建Flash游戏,因此不受特定平台的约束。但是,我们所有人都在Windows上进行开发,因为我们使用的大多数工具不适用于Linux。


2
“因此,您可能不需要任何实际的程序员就可以完成整个工作。” 你忘了讽刺。
Allon Guralnek,2011年

@AllonGuralnek:那里没有讽刺。在大型游戏的经典游戏开发中,程序员将创建引擎和手段来提供内容和行为(通过可视化编辑器或实际脚本),然后游戏/关卡/任务设计者将使用这些手段。如果您购买了一个运行正常且功能强大的发动机,则可以基本上省去第一步。
back2dos

2
您是否有一个无需编写任何代码即可创建的合理值得注意的游戏的特定示例?
Allon Guralnek,2011年

1
@AllonGuralnek:我不是说没有代码,但没有程序员的人会创造游戏。您无需成为程序员即可创建完全改变游戏规则的mod。DotA是我能想到的最流行的一种。
back2dos

1
@AllonGuralnek:否。编写代码的人就是编写代码的人。要求关卡设计师对脚本有一定的了解。很多程序员经常需要具备一定数量的管理技能。它并没有使第一个成为程序员,也不使第二个成为经理。同样,您对DotA的评估是错误的。首先,它完全改变了游戏规则,将RTS转变为一种新类型,其次,它被包括ESWC在内的
back2dos

10

正如某些人已经说过的那样,最重要的部分是用户群。95%的PC用户使用Windows。PC游戏玩家几乎只使用Windows。即使是那些使用Mac或Linux的人,也经常通过某种虚拟化或仿真(很少例外)来运行Windows游戏。

但是人口统计并不是一切。我不会低估Microsoft为使平台对游戏开发人员更具吸引力所做的努力。基本上,您可以获得免费的功能齐全的工具集,最重要的是XNA Game Studio。这不仅允许Windows开发,还允许Xbox360开发。并且即使是WP7手机也具有最新版本。显然,由于它是Microsoft工具,因此它使用DirectX,而不是OpenGL。


3
对于所有耗时的读者,请注意:从2014年4月起,XNA将正式死亡。最新版本(4.0)于2010年发布,从现在(2013)到日落之间将看不到新版本。
阿伦(Aren)2013年

1
给所有时间旅行读者的另一个注意事项:Windows 8(及更高版本)的开发将来将不再免费
Fouric 2013年

6

Ewwww,我不知道。我几乎专门使用Linux。我双重引导到Windows以制作Windows版本,然后将Mac用于Mac版本,仅此而已。

诀窍是我们多年来开发的跨平台框架。我们的游戏建立在此之上,并且在Linux / OpenGL,Mac / OpenGL和Windows / Direct3D(以及不久在iOS / OpenGL)中表现相同。

诚然,我的公司没有AAA称号,因此可能不适用于这些游戏,但我们确实制作了顶级休闲游戏(请参阅网站 -CSI:NY,Murder She Wrote和即将推出的两个2011年代都是使用重要许可证,夏洛克·福尔摩斯1和2的失案也相当成功)

我不会为其他任何事情放弃gedit + gcc + gdb + valgrind。


3
gedit在编程方面被低估了
Alexander

2
@Alexander,被低估了甚至没有开始解释
Shahbaz

3
抱歉,我最终放弃了gedit。我现在使用gvim,而且我更高兴:)
ggambett

4
  1. 惯性。如果您过去曾经使用过Windows,那么切换到其他东西会很麻烦。如果您使用的是Windows,则DirectX比OpenGL更容易且更可能很好地工作。
  2. 市场份额。Windows在台式机上的市场份额大于OS X,后者又比Linux更大。有钱能使鬼推磨。
  3. 牌。DirectX比诸如SDL之类的东西更为人所知(SDL是复制OpenGL以外的某些DirectX功能所需要的东西)。
  4. 减少混乱。用户的Linux是否仅支持OpenGL 1.4或OpenGL 2+?您可以使用OpenGL 2.0教程,例如现代OpenGL入门。第1章:您的Linux版本上的图形管线

如今,在游戏开发方面,Linux更像是一个老古董,大多数开发者最好在Linux版本之前在财务上优先选择OS X端口版本(参见Steam之类的东西)。即使那样,游戏机市场的价值还不止这两个游戏平台的总和。

如果要单声道平台,DirectX很好。如果您想成为跨平台平台,则很有可能必须至少在其他一些平台上使用OpenGL。


2
问题4的答案是:2+。Mesa3D最多支持OpenGL 2.1,这意味着自Mesa 6.8版本以来,用于X11的3D硬件的所有图形驱动程序至少支持OpenGL 2.1。它涵盖了过去几年中发布的所有Linux发行版,以及NVIDIA和AMD发行的支持3.0及更高版本的二进制驱动程序。这不包括intel895的用户,但已弃用。
greyfade 2011年

1
恐怕并非如此。具有(i915 / i945)(GMA 900/950)芯片组的计算机正在(仍)在销售中,并且不被弃用。即使在几个月前的现代发行版(Ubuntu 11.04 / Fedora 15)上,glxinfo仍将返回不高于1.4的OpenGL版本(Mesa 7.11-devel)。这样的Intel硬件在没有软件帮助的情况下根本无法执行更高的版本,因此,直到默认情况下可以使用softpipe为止,此类卡上的Linux才不会使用更高版本的OpenGL。以OpenGL 2.0(或更高版本)为目标将停止在各种Linux桌面系统上运行的程序……
Anon

即使这样,我仍然看不到担心。这些相同的芯片组在Windows上具有局限性,因此无论如何
greyfade

4

答案是显而易见的。编写游戏的目的是赚钱。更多的最终用户使用Windows,因此有一个更大的市场,并且您期望Windows游戏比Linux游戏赚更多的钱。就这么简单。

如果您曾经问​​自己“为什么有人做...”这个问题,请记住,金钱使世界运转。


1
是的,但是您可以制作跨平台游戏并获得更多的Windows用户;)
M.Sameer 2012年

跨平台并不是一切。如果您获得的额外用户数量相对较低,那么您需要平衡额外的开发成本和持续的支持成本与您将从中获得的额外收入,并根据实际的硬数据做出明智的决策。对于该程序,没有全局正确或错误的答案,但是对于每个程序来说,都有正确或错误的答案,对一个程序来说正确的对另一个程序可能是错误的。
Maximus Minimus

4

工具,工具,工具。

这就是结果。在Windows上进行开发,您就可以使用地球上一些最佳的开发工具。没有什么比Visual Studio的调试器更接近远程了,DirectX调试运行时很棒,PIX很棒,并且在其他平台/ API上不存在可比的等效项。当然,那里有一些好东西。我并不是说其他​​平台上的工具很糟糕,但是MS提供的工具远远领先于其他工具(尊敬的例外:Valgrind),甚至都不好笑。

最重要的是,这些工具可以为您提供帮助。它们可以帮助您完成工作,可以帮助您提高工作效率,可以帮助您专注于自己代码中的错误,而不必为从未有过文档记载的API苦苦挣扎。


PIX 真棒。通过单击一个麻烦的像素来调试着色器,看看发生了什么,太好了!
克里斯·皮特曼

4

因此,我已经解决了所有这些答案,作为一个游戏开发人员,他拥有沃尔玛上架的主机游戏代码,所以我有一个非常不同的答案。

分配。

看,如果您想在Nintendo主机上使用,则必须获得Nintendo的许可,从Nintendo的工厂购买,支付Nintendo的间接费用,与沃尔玛进行谈判,处理仓储,您需要预先制造,制造,打印盒子,运送的钱,做所有的保险等等。

如果您想使用XBox,请确保有XBLA,但是您仍然需要Microsoft的祝福,您必须排队等候,仅发布补丁程序就得花费数万美元,等等。

在iOS上,您仍然需要Apple的同意,他们可以(并且确实)反复无常地拉您。

在Steam上,您仍然需要Valve的许可或绿灯,并且需要很多钱。

在Windows上?您设置了一个网站和一个下载按钮。

我并不是说其他​​平台没有价值。但有这么 * *多可怕的东西去当你试图开发一个游戏,那对我来说,是能够只拍网站上的二进制和专注于工作的承诺-至少上手-确实降低了很多潜在的故障壁垒。

“如果情况稳定,我们可以稍后再进行XBLA移植”。

并在较小程度上确保这对Linux也适用,如果有七个客户,则可以从那里开始。

但是Windows具有三大优势:真正的开放式开发,真正的开放式部署,以及对古怪的东西感兴趣的庞大,活跃的客户群。

很难想象我还要从哪里开始。


3

我认为您应该阅读有关DirectX历史和本文的更多信息。

我认为MS选择DX而非openGL是因为他们喜欢锁定人们使用自己的OS。


4
没有,他们创造了DX因为OGL没有针对Windows进行了优化,不能迅速扩大到利用新的硬件和操作系统的发展,不包含声音,控制输入等等等等。
jwenting

2
iow DX出于性能原因专门用于Windows,并允许Microsoft保持这种状态,并在新技术出现时迅速合并。OpenGL停留在5年前的图形硬件支持级别上,甚至更多,因为这是一项固定的工作。
jwenting 2011年

1
@jwenting我认为性能不是他们不将其移植到其他平台的唯一原因,我的意思是,如果他们想移植它,至少他们会开源并将其留给社区来实施它。
Mahmoud Hossam

1
他们没有开源C#,而是向标准机构提交了语言规范。微软是这些标准机构的成员,并且一直在做这样的事情(例如,它们对html,javascript和其他标准有很大的贡献)。开源将意味着在APL之类的版本下发布编译器和库的源代码。
jwenting 2011年

1
@jwenting:记录下来,Linux上有一个针对Gallium3D框架的Direct3D 10和11实现。(这与Wine无关。)我也不同意您的主张,即“ OGL并未针对Windows优化”。这是硬件驱动程序实现的问题,而不是OpenGL的限制。
greyfade11年

1

与政治和控制有很多关系。在90年代后期,SGI和MS实际上同意共同努力:

http://en.wikipedia.org/wiki/Fahrenheit_graphics_API

SGI在该项目上投入了大量资金,MS没有。SGI比MS需要SGI更需要MS。剩下的就是历史了。

D3D和OpenGL是两个非常不同的API,由开发人员选择适合您需要的API。


0

仅仅是因为Linux作为台式机系统严重失败。正如之前有人指出的那样,Linux对开发人员来说是一团糟(不同的库,ui工具包等)

另一个问题是freetardism和缺乏对专有软件的支持。Nvidia始终为Linux提供优质的(专有)驱动程序,但是Ubuntu和其他发行版未提供该驱动程序。与Windows一样,Linux也没有二进制驱动程序接口。(有一个名为binaryApiNonsense.txt的文本文件或Kernel源代码中的某个文件)话虽如此,但Linux仅适当支持Nvidia硬件。您可以在Linux下使用Nvidia硬件玩大多数ID软件游戏。

下一件事开发工具。MSFT提供了出色的C ++支持,就C ++而言,Visual Studio调试器优于gdb。最后但并非最不重要的是,缺少其他工具,例如Photoshop。.net还允许您快速创建GUI工具。许多游戏工作室使用.net框架编写其工具供内部使用。

我几乎忘记了:图形系统是可怕的,在他们刚刚移植X11的日子里,因为它是最简单的方法。他们未能正确设计和实现OSx和Win拥有的现代图形系统。


4
嗯?我的intel和ati卡在Linux上可以正常工作... X11怎么了?我一直觉得它比其他操作系统(尤其是Windows)的客户机/服务器体系结构要好得多。
替代

不,他们没有输入glxinfo并查看天气是否正常!X11可怕地被破坏只是一个例子theinvisiblethings.blogspot.com/2010/08/…–
Nils

如果您读了最后一句话,Linus会自己实施内核级别的补丁程序 -而不是X11补丁程序。
可替代

1
我对图形系统了解不多(您可能有一点要说),但是我说Linux失败了,因为桌面系统不正确或至少不准确。我从Windows迁移到Linux,从那以后我感觉工作效率很高。在我使用的所有计算机上,Linux的性能均优于Windows,并且优于Windows。我也不编写C ++代码,我想知道与Visual Studio相比,Eclipse在C ++ IDE中的地位如何。
M.Sameer 2011年

放下喷火器。我认为人们普遍认为VS是最好的IDE。但是,Eclipse还很年轻,还有路要走-我们将会看到。但是,我只是喜欢在Linux中轻松编写和编写所有内容的过程!
Vorac 2012年
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.