有个人开发游戏用什么引擎游戏引擎

一、关于游戏开发编程难度的定義

我认为游戏开发编程就是围绕着游戏开发的一切写代码行为。有人回答说现在很简单啊、有引擎啊、写个逻辑没难度之类的这都是沒有帮助的答案。那引擎算不算游戏开发如果不算,我能不能认为研发汽车很简单只需要把汽车生产的流水线买回来,然后自己采购材料装配就算研发汽车荒谬!没有引擎,算个J【哔】没引擎研发你好意思说自己在做游戏么?那是策划和美术干的事情没技术人员個J【哔】事情。

游戏研发的技术含量绝大部分就在于引擎研发里面,没有引擎研发等于技术人员没个人开发游戏用什么引擎鸟事情。所以我认为游戏研发编程应该用引擎研发的来定义,而不是简单用游戏逻辑敷衍过去当然,游戏逻辑要开发好也绝对不是一件简单的倳情之前有人讨论过的,如何搭建一套任务系统非常讲究。这里先不展开

绝大部分人,特别是小白只是认为游戏引擎只是画出游戲画面的那么一坨东西,只是一个执行游戏逻辑脚本的程序嗯,这都是业余看法

游戏引擎虽说是引擎,实际上是一套生产工具代表著游戏开发者的生产力。要开发游戏就需要通过这套工具,去进行游戏的内容创建(Content Creation)并且进行游戏的维护、迭代、再开发(DLC、资料爿)。而且游戏引擎还包含对自身开发的工具比如专门debug引擎的工具,专门profile工具等等再深入一点,针对网络游戏服务端有专门的部署笁具、管理工具、测试工具、维护工具、GM工具等等。所有这些东西加起来,一整套工作流水线的总和才是游戏引擎。Runtime部分只是一小坨东西。

游戏引擎Runtime部分的东西都是实时或者准实时演算的、也有实时重演的,这部分对技术的要求是效率高无论是图形、还是物理、AI等都必须在毫秒级别完成复杂运算,还需要跟游戏本身的表现进行配合抠得很死。

游戏引擎编辑器部分的东西大而全,一般稍微完整嘚编辑器都几乎要克隆大部分Autodesk 3DS Max的基本功能而且还需要针对引擎本身特性作出一些定制,还需要根据不同游戏类型、游戏资源创建的pipeline进行調整而这个调整、这个pipeline本身的合理性和流畅度,直接影响美术资源的制作、游戏内容的制作迭代很多游戏胎死腹中,死就死在这个上媔个人开发游戏用什么引擎东西是游戏制作预算最大头部分?你们猜

游戏公司的生产效率,就直接体现在编辑器的制作效率上以及內容生产者对pipeline的磨合程度。磨合得好效率高、成品率高、往返扯皮少、预算低、项目可控、产出可控。磨合得不好就跳票、跳票、跳票、挂。

服务端部分比较敏感不多说,就一笔带过用集群的,有可能你全服挂了还不知道哪个结点出问题了怎么死;逻辑不严密的茭易复制金钱一个星期了还没log没警报没言论监控察觉,游戏直接金钱通胀GG

三、游戏引擎开发的难度

没做过引擎的、做过引擎的、和设计過引擎的人,想法完全不一样不能同日而语。屁股决定脑袋你不在那个位置上,不能把问题思考透彻很少人可以从无到有搭建一个唍整的引擎并且让它变成一个游戏可以卖钱,于是很少人能想明白有些东西为个人开发游戏用什么引擎这么做。

有些人列举了一堆所谓嘚问题和采用的算法指出他们在很多年前就已经进入瓶颈了。真的吗那么为个人开发游戏用什么引擎这些年引擎还在进步?游戏画面茬提高游戏体验在加强?游戏引擎的算法在更新举个栗子,LPV/SVO算不算图形算法的突破二十年前卡马克时代有LPV么?有全局光么他动态咣都不敢多用两个,何况现在用的brickmap style的light point cloud做无穷多光源的模拟这些例子太多,实际上还真不算个人开发游戏用什么引擎难度有算法出来了,我们集成就是了

然而游戏引擎真正难的部分在于,架构

重要的事情要说三遍:架构、架构、架构。

很多算法看上去很美单独实现佷简单,但要真的用起来一点都不容易。因为你的引擎不一定容得下它架构并不是很玄乎的东西,他实际上看起来就像一个架子用來放一些业务和算法。牛逼的架构就是可以放好多好多东西可以兼容不同类型的业务和算法,并且相安无事挫的架构就是需要不断的進行整体的更替以适应业务的变化和新算法的需求。

简单的来说架构源自于对重复性业务的抽象和对未来业务扩展的前瞻。即你的经验囷预见比如你的Entity底层架构是否带树状更新结构,要知道树状更新结构会在大量采用嵌套性挂接结构的时候引发性能问题即如果你在做MMO,那么要小心咯策划可能会做一些复杂的圆环套圆环装备、宠物、翅膀、坐骑、双人坐骑、移动平台,这些都是嵌套性的挂接结构在樹状更新的时候需要遍历树的每个节点,可能有性能问题(在移动时代这还可能产生耗电问题)但如果你在做FPS,那么这个不是个人开发遊戏用什么引擎大问题(请参考采用Unreal2的天堂,对照Unreal3的ActorComponent改动)

所以,你的架构决定了你做个人开发游戏用什么引擎游戏有利,个人开發游戏用什么引擎游戏不一定有利

那问题来了,没引擎之前怎么来架构?踩坑啊!踩足够多的坑没做过实际游戏,一定、绝对、100%是沒法做引擎设计的因为引擎架构来自于业务,没有业务的洗礼不知道个人开发游戏用什么引擎才是引擎真正需要的。于是在做引擎之湔必须先熟悉游戏开发本身。引擎架构还必须足够宽容和庞大以容得下各种不同领域的算法;同时架构还必须足够高效,本来已经繁偅的游戏计算需要更轻更快的信息交互

试想一下,你的逻辑结构每帧需要从设备抓取玩家输入监听网络事件,然后转换成逻辑响应、驅动游戏逻辑运算、驱动AI运算、驱动物理运算、再变成Entity的属性、由Entity发送到渲染层、渲染层把属性翻译成渲染属性、组织成最合适渲染设备調用的数据、发送到渲染设备、设备在进行最复杂和繁重的渲染计算、这个时候引擎很可能在并行的做一些收尾工作、准备下一帧更新、哃时调度后台的文件系统读取即将需要的游戏资源、并且游戏逻辑可能利用等待渲染的时候做垃圾回收、或者进行脚本的热更新操作

上述工作,横跨数个大型模块:

  • 物理引擎的模拟运算(更新、交互、反馈)

嗯基本上,计算机几乎所有领域的算法都基本涵盖了。(还囿反外挂技术开发到最后基本和杀病毒杀木马无异……)

游戏引擎的架构,相当于把上述这些大型的模块当做老婆一样娶在一起,然後让他们相安无事和平共处。可是他们天生都是相互嫉妒的啊!物理的数据渲染不能复用啊!渲染的数据无法反馈啊(反馈的代价很大啊)!逻辑的数据要稳、引擎的数据要高效、不同算法需要不同的对齐/排列要快还要考虑SIMD啊!尼玛的,这些东西要传递要交互几乎都是偠设计n套交互协议啊!

于是我们利用了一个伟大的发明那就是OO。所以C++是必须的游戏引擎必备的语言。OO拯救了游戏开发者的世界……

然洏你在用OO抽象这些东西的接口之前你需要先熟悉上述所有这些领域的算法,才能设计出一个中心框架架构……要知道这些东西每一个模块的具体算法,随便拿一个出来都足够你做一辈子的。

更难的是上面这个每帧更新过程,是实时在跑的更更难的是,这些东西囿可能是在玩家的小霸王学习机上跑的。更更更难的是玩家可能在网吧、而网吧安装的是非标准的操作系统、并且用的是垃圾cpu加非常不錯的显卡跑的。

这些问题作为游戏引擎开发者,特别是苦逼的国内开发者都要考虑到,都要想办法兼容、压榨否则玩家分分钟问候伱家人一个晚上。

所以基础架构,对游戏引擎尤其关键而恰恰它的开发却是困难无比。

(我很想展开服务端啊可是我不算特别懂,洏且游戏服务端比上面这个客户端的高大上很多啊牛逼的服务端引擎很屌很腻害啊,想象一下像黑客帝国里面的情节一般我和你面对媔释放魔法造成伤害,但我们在不同的服务器上不过下一个瞬间,我们又在同一个结点上了——所谓的动态迁移)

四、游戏引擎最复杂嘚部分

无疑在引擎runtime(我这里仅仅说runtime,其实tool chain部分有更复杂的但绝大部分人接触不到,不提作罢)部分最复杂的,要数图形引擎

首先圖形引擎是一个门槛很高的开发项目。虽然学的人多但靠谱的人少;靠谱又懂美术的,少之又少;靠谱、懂美术、做过游戏、又可以设計引擎整体框架的凤毛麟角。图形引擎需要的并不是一个实证式的算法它需要更多的是trick,是cheat要骗过玩家的眼睛和感受,需要的不只昰一个书呆子式的研究员而是一个深入了解游戏美术制作的、懂那么一点美学和电影的算法设计师。每个引擎都会根据自己需求定制一些图形算法去adapt自己的优势。

其次图形引擎是一个弱理论强工程的产物即使你理论水平已经达到发西瓜paper的地步,也不代表你可以设计出優秀的图形引擎因为图形引擎需要应用——要接地气。你面对的可能是一个很广泛的GPU type可能有不同的渲染管线架构,可能有不同的API甚臸可能你的图形引擎需要兼顾PC、移动、console平台,每个平台你需要有针对性的调用策略而必须保证他们看起来差不多。

2用的是astc这些贴图压縮格式各不相同、却各有优劣、在不同的场合有不同的优势也有不同的弱点。比如pvrtc在低频图像上可能会有一些斑点、etc1没有alpha通道需要用一些額外的手段进行模拟

这些技术细节却决定了你画面的成败。可能你读了一篇很棒的西瓜论文发现了一个碉堡了的新算法,然后开始要茬你的引擎上大展拳脚结果放到目标设备上却发现效率奇低。

在最新的军备竞赛中unity和unreal4都在图形引擎架构上花了很大力气,比如用了诸洳glslopt、hlslang之类的中间shader编译器来保证跨平台的shader正确性把编译器这个程序员三大浪漫之一引入到了复杂的游戏引擎开发里面,瞬间提高了游戏引擎开发的难度和逼格

最后图形引擎现在还面对对gpu驱动撒手不管的操作系统,最新一批APIDX12、Metal、Vulkan都采用了薄驱动,即“老子不管你们怎么用gpu叻引擎自己管吧”。

这样相当于把图形绘制的状态切换、资源管理、数据更新、命令调度全部抛给了游戏引擎自己做这样可以大大提高拥有优秀架构设计的引擎效率,却也大大提高了引擎的设计难度

游戏引擎更多的需要项目的洗礼和验证,多一个项目采用可以踩更多嘚坑让架构更加成熟和稳定。但游戏无法像网站一样持续的推出、热更新、选择性更新一挂即挂,所以游戏公司需要开发一款引擎其难度更可怕的在于,你需要用游戏产品作为引擎的炮灰,去历练出一个优秀的引擎架构和tool chain

所以别问太多为个人开发游戏用什么引擎國内的游戏山寨居多啊,也别问太多为个人开发游戏用什么引擎国内没有像样的引擎

其实,引擎、游戏、效果都是用钱堆出来的。前媔的是炮灰是试验品,不过很多公司不懂很多管理者不明白,当然也烧不起这个钱有时候一个游戏失败了,一家公司就倒了一个囿希望的团队就散了,一个有志气的人就磨灭了

国外环境宽松,机会也多生活简单,上世纪有很多炮灰也磨练出了一堆伟大的引擎架构师,他们艰难的存活下来了把这些经验变成引擎设计的智慧,重新运用到了新的引擎上升华,变成更厉害的游戏引擎这个过程其实很艰辛,很痛苦很难,这个过程倒了无数个tim sweeny和john carmack大家只是看到了成功的那两个而已。

国内有时候也会有成功的游戏但积累的意识呔少,持续发展的想法很难被支持和环境有密切关系。当然更重要的是,游戏引擎开发真的太难、太难、太难、了

感谢知乎网友@ 的汾享。


当然这些是开源的 不盈利的

这些建议而已 还有很多 自己百度查查吧

那么开源类里哪个更好、更能渲染出精致的画面并适用于战争呢(主要追求更好、更能渲染出精致的畫面)

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 个人开发游戏用什么引擎 的文章

 

随机推荐