不使用游戏引擎,如何开发游戏
发布时间:2025-05-21 20:29:50 发布人:远客网络
一、不使用游戏引擎,如何开发游戏
1、游戏引擎是在图形接口(API)的基础上运行的。如果把图形接口比作英文单词库,那游戏引擎就是金山词霸和有道词典。所以不依赖游戏引擎的话,就需要直接驱动图形接口了。如同不借助金山词霸,你要如何成为一个英文作家?当然是直接写英文了。
2、图形接口其实有很多种。但值得一提的只有四个,其中两个主流,两个非主流。
3、两个主流,分别是DirectX和OpenGL。而两个非主流,是Metal和Vulkan。
4、除此之外,还有一些游戏机厂商自己的API,比如索尼的GNM和GNMX,它被用于PS4游戏开发。但这类图形接口,只能服务于固定的硬件环境下。简单说,如果将来再推出PS5的话,GNM和GNMX是无法使用的,因为硬件环境不同了。所以这类图形接口,会随着宿主机型的灭亡而消失,无法被后续机种所继承。
5、因此能够用于各种不同硬件的API,一共就只有四个。
6、性能上,DirectX所向无敌。兼容几乎所有品牌与型号的硬件设备,并能支撑次世代级的画面水平,从技术角度简直是完美的。但问题是,DirectX是微软独家的,只能工作在Windows系操作系统与Xbox游戏机之上。借助DirectX的强大,开发人员不需要太过注重优化,便能获得高超的性能与画面水平。
7、至于OpenGL,其实诞生比DirectX要早,是图形工作站上的产物。它唯一的优点,就是可以跨系统。不仅能运行在Windows系统之上,还能运行在Linux,Mac OS,安卓,IOS,甚至网页之上。由于有代码膨胀的先天缺陷,性能与DirectX相比,简直弱爆了,约10倍左右的性能差距。用于一些2D小游戏还好,开发3D游戏,真是勉为其难。虽然在手机上,可以看到类似《王者荣耀》之类的3D游戏,但这都是建立在开发人员几乎变态的优化与妥协之上,才得以实现,优化的难度,远远超过开发游戏本身,大多数情况下,都要靠降低画质标准才能实现,“手游”与“端游”画质差距,便显得一目了然。也正因OpenGL低下的性能,Mac和Linux始终都是游戏的禁区,几乎所有次世代大作,都是在Windows环境下开发出来的。也正因为各家厂商都对OpenGL的性能非常不满意,才会有Metal和Vulkan诞生。
8、90年代的微软天下无敌,整个IT行业绑在一起,还比不过微软的一条胳膊粗,但随着比尔盖茨隐退,鲍尔默接任掌门人之后,微软在策略上出现连续失误,吞并任天堂计划破产,WP系统夭折,XBOX萎靡不振,.NET平台错过最佳开源时机。。。。。。微软突然病了
9、由于WP系统夭折,DirectX因此没能引入到移动设备。苹果与谷歌趁势崛起,占据了移动端,安卓和IOS成了手游的首选平台。而开发者则必须习惯,在OpenGL上开发游戏。优化便成了首要问题,开发难度明显增加。
10、之后,苹果公司便发布了Metal,主要用于IOS游戏开发,苹果公司号称,它的性能比OpenGL高10倍,且可能超越DirectX。但无论这些数据有多华丽,使用苹果的标准总是要格外谨慎,因为苹果设备与游戏行业本就格格不入,开发手段也从来不与其他平台共享。因此你很可能“进得去,却出不来,最后困死在连调试游戏都困难重重的mac上面”。苹果不仅从来不给开发人员留后路,而且还赚开发者的钱,需要先掏钱,才能开发游戏。加上Object-C,shake,Macintosh等事件,苹果公司的奸商路线,所创造出的血淋淋的教训已经够多了。否则当年作为仅次于IBM的第二大电脑公司,拥有近40%的市占率,也不至于被边缘化到只剩下个位数。十年前IOS开发还很火,Object-C程序员遍布大街小巷,而当苹果抛弃Object-C的时候,失业是他们唯一的选择。所以Metal可能会吸引到一些无辜的初学者,但按照苹果公司一贯的行事作风,很难期待它会成为主流行业标准。
11、另外一个非主流,就是Vulkan,是AMD开发的一个标准,所以也主要是被AMD的显卡所支持,后来开始逐渐支持一些手机设备,系统方面支持windows和安卓,被视为目前最有可能取代OpenGL的潜力股,所以未来可能会很有前景。但到底能不能成为主流,目前还很难说,尤其在英伟达都没跟进的前提下,去谈行业标准,显得为时过早了。
12、如果你是倾向于次世代游戏方向,则DirectX是首选,因为它的性能在今天依然是无可替代的,且至少目前根本看不到对手。而且由于可以通过C#语言驱动,它的学习难度也要比OpenGL容易一些。
13、如果你只是希望学习图形接口。个人比较推荐OpenGL,因为它有更广泛的平台适应性。但它很难承载太大型的游戏项目。不过你依然可以把它用于游戏之外的项目。比如有一个网页版的OpenGL标准,叫做WebGL,只要设置一下浏览器,就可以在网页上显示3D模型。
14、而如果你希望投资未来,为将来做技术储备。那么两者均可。因为万变不离其宗,即便将来有了更优秀的图形接口,基本原理总是不变的。
二、怎么不用引擎用C语言做大型游戏
C语言是面向过程的,C++是面向对象的,关于这个问题有两个原因:
1.大型游戏引擎都不是C语言开发的。如果小游戏的功能代码的话,c没问题,如果要好的界面,C要用gtk+,这个比较难;熟悉c++的话,用wxWidget和Qt写界面会好用点。大型游戏的话,还是要用专门的游戏引擎设计,大型游戏不是一个人能完成的。
2.游戏开发主要涉及到ui和场景、对象管理的需求,c++相比c是更普遍的选择;使用c++的游戏框架、引擎也更多,移动端常见的cocos2d-x,面向3a开发的udk等都是最典型的例子;
三、不用游戏引擎做游戏有多难
1、做游戏,无需游戏引擎,挑战与选择各异。
2、起点不同,难度相异。如从MonoGame出发,构建一个简单的2D平台游戏,其游戏框架虽提供基础功能,但碰撞系统、关卡系统、动画系统等仍需开发者自行搭建。相比游戏引擎,难度提升有限。
3、若从ogre这一层次开始,虽然拥有渲染部分的便利,但音频播放、游戏输入检测、物理碰撞检测等仍需开发者自行解决。这一层次称为图形库或渲染引擎,提供的是对象图和3D渲染部分,游戏逻辑支持较少。
4、SDL层次的开始,意味着开发者需从零构建世界,涉及图像显示、纹理加载、GUI展示等,游戏循环、游戏类、场景图等都需要开发者自行编写。这一层次称为窗口库、多媒体库、游戏库,与游戏框架的区别在于游戏框架调用开发者代码,而库则是开发者调用库代码。
5、OpenGL层次下,开发者需自己构建程序窗口,负责顶点缓冲区、正交透视相机、材质系统、纹理渲染、帧缓冲区等,这一层次称为图形API规范,由GPU厂商开发者编写,提供给开发者使用。
6、若不使用GPU,考虑Ray casting+ASCII在控制台应用程序中渲染游戏画面,或借鉴任天堂早期的SNES的Model7,利用Affine transformation伪造3D,实现无图形卡也能运行的伪3D世界。
7、这与提问“不去火锅店吃重庆火锅有多难”相似,选择不同途径,体验迥异。从自热火锅到自行炒制火锅底料,再到自制牛油和干辣椒,每一步选择代表了不同的自由度和挑战。
8、从MonoGame到OpenGL,开发者如同从养牛、种辣椒的农民到培育特有品种的专家,自由度逐渐提升,对细节和创新的掌控能力增强。选择现成的火锅料意味着遵循既定口味,而自制食材则赋予了更多创意空间和口味定制可能。
9、综上所述,做游戏无需游戏引擎的难度取决于起点、目标与个人技能。从简单的框架搭建到复杂的底层构建,每一步都充满挑战与创新机会。选择合适的起点,结合个人兴趣与技能,将能打造出独一无二的游戏体验。