我已经很长时间没有从事游戏开发了。当我这样做时,大多数人都使用Direct Draw来创建2D游戏。在我停下脚步的时候,人们说采用正交投影的OpenGL或Direct3D只是要走的路。
我正在考虑重新创建2D游戏,尤其是在手机上,但也可能在XNA平台上。要使用OpenGL制作东西,我需要(充分)小的学习曲线来使自己适应3D开发。
是否有任何理由跳过它,而是使用2D框架工作,而我只有一个宽度x高度帧缓冲区,我需要用像素填充?
我已经很长时间没有从事游戏开发了。当我这样做时,大多数人都使用Direct Draw来创建2D游戏。在我停下脚步的时候,人们说采用正交投影的OpenGL或Direct3D只是要走的路。
我正在考虑重新创建2D游戏,尤其是在手机上,但也可能在XNA平台上。要使用OpenGL制作东西,我需要(充分)小的学习曲线来使自己适应3D开发。
是否有任何理由跳过它,而是使用2D框架工作,而我只有一个宽度x高度帧缓冲区,我需要用像素填充?
Answers:
您绝对应该使用在后端使用3D渲染器的工具。但是在您的高级代码中,您甚至都不应该看到Z轴。所有这些都应该在较低的层次上进行抽象。如果直接操作像素,则可能是做错了。
对于我自己的游戏,我建立了一组用于处理2D对象的类。我的游戏逻辑仅处理x和y坐标。我的班级还处理旋转,缩放,混合模式等问题。
当然,您也可以使用现有的2D库-Cocos2D在iPhone上很流行。这些库中的大多数(如果不是全部)将基于较低级别的3D API构建,以便它们从可用的加速中受益。
有理由不使用3D API。
仅北美,欧盟西北和日本的计算机支持它们。
例如,我住在巴西,我的姊妹计算机是新的,具有多核处理器,数GB的ram,但它不运行OpenGL游戏。
例如,我只能在自己的计算机上播放“矮人要塞”(使用OpenGL渲染ASCII图形),在其他任何计算机上,我都发现它运行缓慢。
我问周围的人,这不仅是巴西的问题,而且在世界上的许多地方也很普遍。实际上拥有OpenGL或Direct3D兼容卡的人口很少。
只是这少数人得到了公司的更多关注...
但是,如果您仅针对这些“传统”市场(北美,西北欧盟,日本),那就去吧!
编辑那些不赞成投票的人:显然您不同意,因此,您是否有证据证明没有人再提供不具有VIA或SIS芯片(甚至其他未知或较差的制造商)的计算机,而这些计算机都不支持或仅支持OpenGL 1.0?
我家里有两台这样的机器,它们是新机器(两者都有一个以上的内核,都具有2GB的内存,都具有高于2GHz的时钟频率...)
我的大学有200台这样的机器,甚至有一些戴尔制造的机器。
这很简单,GPU昂贵(甚至是笨拙的Intel的GPU),在贫穷的市场中,这是一种奢侈,人们购买机器来运行MS Word和阅读电子邮件时,不会购买具有良好图形芯片的机器。他们可以买到便宜50美元的食物,特别是当50美元是大多数人一个月必须购买的食物时。
请不要来这里是说BS,如果您从未访问过第三世界国家,而且,也不要说第三世界国家的人不玩游戏,他们会做很多事情,Osmos关于他们的Linux版本发布的开发人员帖子指出,很多传入流量(实际上,大部分来自俄罗斯)是因为这些人通常被忽略。
在巴西,最流行的游戏是在软件模式下运行的Counter-Strike ...有些Lan-Houses只有10%的计算机带有GPU,甚至大型的200甚至300个工作站也是如此。
每次我解释为什么其他游戏使用Allegro 4.4而不是5.0的原因是因为5.0不支持Direct Draw时,我不应该在此发布该信息,所以我会免费损失该发布的积分。在软件模式下,很多人都说我是骗子,或者愚蠢地说出有关OpenGL加速的实际可用性的真相,这让我感到很惊讶。
编辑2:为了能够玩和开发具有OpenGL的游戏,我不得不乞求父母和其他人给我买GeForce 8600(那是我发现仍然可以运行Mass Effect 1和其他UT3的最便宜的显卡引擎游戏),他们给我买了一个,但是现在我已经好几年了,再也没有收到其他礼物了,甚至还没有生日礼物,因为那是多么昂贵的礼物,我希望这张卡片能使用3或4年以上...
编辑3:
一个实际的例子:Eletronic Arts为Ultima Online创造了一个新客户,该客户将3D加速用于其2D图形...结果:许多玩家抱怨帧率低得离谱,而EA在决定强制使用DVR时倒退了新客户端(现在允许使用旧客户端)
2015年第4版:此答复将大部分留在历史文物上,目前即使是在第三世界国家,带有极烂芯片的计算机数量也很少,它们仍然存在,尤其是在办公室专用计算机中,但事实并非如此。不再常见,我认为不再需要与软件模式API一起使用,基于OpenGL的API已成为当前的发展之路。
仍然有数量惊人的真正老旧的机器具有糟糕的/根本不存在的3d加速和从未更新过的驱动程序,因此使用DirectDraw的速度将比OpenGL或D3D快得多。当我尝试在OpenGL中编写一个新的渲染后端以支持其他平台时,我在开发大约10年的2D多人游戏时遇到了这种情况。许多玩家报告称,由于帧速率低,OpenGL模式无法播放。我也同意巴西的说法,在美国和欧洲以外,这种情况更为普遍,但在那些地方也是如此。
如果您以手机或XNA为目标,则一定要使用3D。但是,如果您想制作一个可以在任何PC上任何地方运行的游戏,我会坚持使用DDraw。
如果您的游戏足够简单,并且希望该游戏在低端计算机(尤其是上网本和较旧的笔记本电脑)上运行良好(没有3D加速或非常小-较旧的Intel集成显卡等),那么仍然值得考虑2D帧缓冲方法
如果您对游戏至少需要低端的ATi / NVidia卡/芯片感到满意,那么使用3D API将使您做很多很酷的事情(alpha混合,缩放/旋转等),在纯软件渲染器中出色/高效地执行操作将非常棘手。
另外,请注意,当涉及3D硬件(和双线性过滤/ alpha混合)时,在“纯2D”中非常简单的一些事情会变得更加有趣。了解预乘alpha的概念。还要考虑一下,例如,如果要缩放/旋转视图,如何处理2D瓷砖贴图中的瓷砖之间的接缝。
还要记住,填充率是有限的。在2D模式下达到这些极限非常容易。您可能没有太多的多边形,但是如果您想要大量的alpha混合视差层,粒子或后期效果-您可以很轻松地结束与高端3D游戏一样多的像素填充。
但是一般来说,3D硬件很棒,并且添加混合是您的朋友:)