找回密码
 立即注册
楼主: 贺老师

想学习游戏引擎架构用哪个开源引擎好?

[复制链接]
发表于 2020-12-24 09:55 | 显示全部楼层
@钱康来我又来给钱钱捧场了,钱钱说的挺好,这句话很重要要放在开头。

然后,我是来泼冷水的。

有人提到KlayGE,有人提到Unreal4,有人提到OGRE,都很好,非常不错,因为一些机缘巧合,我给KlayGE提交过一部分代码,所以对KlayGE都有一直在关注,并且也简单阅读过代码,Unreal和OGRE我是不太知道,但是我想说的,不管这些啥吧,你C++过关了嘛?那一片boost你能知道哪个是哪个嘛?

不是我黑Milo翻译的书,这本书我看的时候反正感觉就是大而全,而且偏工程不偏图形理论,所以你图形理论过关了嘛?这本书值得学习注意的是里面提到的各种Ref。

钱钱有提到刀神的gkEngine @易恺铭 ,论代码,刀神的那一套反而阅读起来会非常顺畅,不是我黑刀神的代码写得不鬼畜,我还是试着召唤他看看吧。
发表于 2020-12-24 10:01 | 显示全部楼层
OGRE只是图形引擎,不能算游戏引擎
发表于 2020-12-24 10:08 | 显示全部楼层
都了解一下,找一个顺眼的钻研

还是那句话送给每个都想做游戏的人:搞清楚你以后到底是要写引擎还是要写游戏

这个可是相当于编一个CAD软件和用CAD在天正插件的帮助下画建筑图的差别,重点是完全不同的

你让CAD的主程序过来画个建筑图试试?

国内对开发游戏程序员的需求量远远大于对引擎开发的需求量,中国的所谓引擎开发,要我说。。。呵呵
我们还是谈谈中国的游戏开发吧。。。

ps:鉴于你只写过小游戏。。。建议你先写个大游戏再考虑研究引擎,这样你对引擎的各方面理解的更深(比如这个模块有啥用?打个比方,shader模块,光说多抽象?(当年我一开始学glsl就莫名其妙。。。)为啥要用shader技术而不是直接用多边形?你把它在游戏中应用过之后你就理解了)
发表于 2020-12-24 10:12 | 显示全部楼层
引擎架构没有什么好和不好之分,只有用的人用的好和不好之分。就我个人经验来看,对于引擎技术的理解不是靠研读代码来提升的,而是靠解决实际问题来提升的。任何引擎架构都受限于那个时代的大背景和大环境,引擎中存在大量代码用来解决或者规避各种Detail问题,比如各种OS、硬件驱动和应用的适配等等,而我们中的绝大部分人根本没有机会在阅读代码的同时去跟写这行代码的作者进行交流,所以很可能是花了大量的时间也无法体会作者写这代码背后的意义。
如果希望提升自己对于引擎技术的了解,我的建议是,先去选择使用一款引擎,Unity也好,Unreal也好,或者其他引擎都可以,然后去网上搜集并尝试解决与其相关的10000个技术问题。在你解决问题的过程中,自然就会找到这个问题的答案了。
发表于 2020-12-24 10:14 | 显示全部楼层
说下自己的经历吧仅供参考,我看完那本书后基础基本和题主差不多,然后我根据那本书按照自己的想法设计了自己的2d引擎,使用何方式上是按照自己对unity的理解来设计的,然后我开始按照自己的想法逐个系统实现,先抄了ue4的数学库,看了看cocos2d,然后仔细读了unity的cs代码,对于某些系统仔细了解了多个引擎的实现,最后总共花了一个季度的时间磨完了这个2d引擎的核心部分,这个引擎到最后可以相对方便得开发出一些简单的小游戏。这个时候,游戏引擎的多数系统大概是个什么样子我已经基本了然于心,然后我开始捣鼓多线程,顺着这条线开始系统学习opengl,然后深入研究了实时渲染管线,充分了解之后我开始同时学习动画和渲染,动画看计算机动画算法技术,渲染看pbrt,然后开始读一些能力范围内的siggraph论文并找一些适当的进行实现,通过这么一折腾,数学基本不是什么问题,对于渲染的本质也有了相对深的理解,接下来我开始学习dx,这个时候学起来就真的是飞一样的快了,数学部分基本没有任何障碍,图形算法也不会觉得很奇怪,至于shader什么的可编程管线几乎是一看就懂。接下来就可以找个成熟的引擎一边看一边抄了,剩下的就是耐心和坚持了,基本上不会有什么拦路虎。所以我觉得,看ue4最靠谱。
发表于 2020-12-24 10:18 | 显示全部楼层
1992年,3D Realms公司/Apogee公司发布了一款只有2兆多的小游戏——《德军司令部》,用“革命”这一极富煽动色彩的词语也无法形容出它在整个电脑游戏发展史上占据的重要地位。这部游戏开创了第一人称射击游戏的先河,更重要的是,它在X轴和Y轴的基础上增加了一根Z轴,在由宽度和高度构成的平面上增加了一个向前向后的纵深空间,这根Z轴对那些看惯了2D游戏的玩家造成的巨大冲击可想而知。
引擎在诞生初期的另一部重要游戏出自id Software公司的第一人称射击游戏——《Doom》。Doom引擎在技术上大大超越了《德军司令部》,虽然游戏的关卡还是维持在2D平面上进行制作,但墙壁的厚度可以为任意,并且路径之间的角度也可以为任意,这使得楼梯、升降平台、塔楼和户外等各种场景成为可能。



Doom引擎还是第一个被用于授权的引擎。1993年底,Raven公司采用改进后的Doom引擎开发了一款名为《投影者》的游戏,这是游戏史上第一例成功的嫁接手术。在此之前引擎只是作为一种自产自销的开发工具,从来没有哪家游戏商考虑过依靠引擎赚钱,Doom引擎的成功无疑为人们打开了一片新的市场。
1994年发售的《雷神之锤》采用Quake引擎开发制作,Quake引擎是当时第一款完全支持多边形模型、动画和粒子特效的真正意义上的3D引擎。此外《Quake》的游戏操控方式也树立了FPS游戏的标准。游戏使用鼠标来观看、瞄准、定向以及用键盘前进、后退、侧移,这也成了FPS游戏最普遍的操控模式,直到今日仍没有变化。
一年之后,id Software公司推出《雷神之锤2》,一举确定了自己在3D引擎市场上的霸主地位。《雷神之锤2》采用了一套全新的引擎,可以更充分地利用3D加速和OpenGL技术,在图像和网络方面与前作相比有了质的飞跃。



1999年id发布了Quake III,id Software公司在引擎授权市场上又大赚了一笔。
正当id Software独霸整个引擎市场的时候,Epic Megagames公司的Unreal引擎问世了。除了精致的建筑物外,游戏中的许多特效即便在今天看来依然很出色,荡漾的水波,美丽的天空,庞大的关卡,逼真的火焰、烟雾和力场等效果。从单纯的画面效果来看,Unreal引擎是当之无愧的佼佼者,其震撼力完全可以与人们第一次见到《德军司令部》时的感受相比。
看到Unreal引擎的成功,EPIC又再接再厉推出了Unreal2引擎。相比第一代Unreal引擎,Unreal2的全部代码几乎重写,并集成了最新的编辑器。随着游戏开发的需要,游戏引擎的内涵也在不断扩大,Unreal2引擎拥有了更多的功能。Unreal2引擎期间有过一次小幅升级,被称为UE2.5,渲染性能有了一定提高。有了第一代引擎的铺垫,采用Unreal2及其升级型引擎的游戏数量也大幅提高,其中的知名游戏包括《汤姆克兰西之细胞分裂2:明日潘多拉》、《天堂2》、《荒野大镖客》等等。
到了DirectX 9时代,Epic又推出了Unreal3引擎。Unreal3支持64位HDRR高精度动态渲染、多种类光照和高级动态阴影特效,可以在低多边形数量的模型实现通常数百万个多边形模型才有的高渲染精度,这样就可以用最低的计算资源做到极高画质。Unreal3引擎还提供了强大的编辑工具,让开发人员随意调用游戏对象,真正做到所见即所得。



在1998年到2000年期间迅速崛起的还有一款引擎是Monolith公司的LithTech引擎。对于资深游戏玩家来说,《F.E.A.R》这个名字一定不会陌生,而《F.E.A.R》系列游戏就是用LithTech引擎开发制作的。LithTech引擎为这款游戏带来了细致的纵深场景刻画,全屏抗锯齿、实时光影效果都表现完美,而在《F.E.A.R2:起源计划》 中,LithTech引擎又加入了HDR渲染、动态模糊、后期处理、屏幕空间环境光遮蔽等最新画质效果,也增强了物理和人工智能,还完善了对双核心处理器的支持。



曾获得无数大奖的《半条命》采用的是Quake和Quake II引擎的混合体,Valve公司在这两部引擎的基础上加入了两个很重要的特性:一是脚本序列技术,这一技术可以令游戏以合乎情理的节奏通过触动事件的方式让玩家真实地体验到情节的发展。这对于诞生以来就很少注重情节的第一人称射击游戏来说无疑是一次伟大的革命。第二个特性是对人工智能引擎的改进,敌人的行动与以往相比明显有了更多的狡诈,不再是单纯地扑向枪口。这两个特点赋予了《半条命》引擎鲜明的个性,在此基础上诞生的《军团要塞》、《反恐精英》等优秀作品又通过网络代码的加入令《半条命》引擎焕发出了更为夺目的光芒。
在人工智能方面真正取得突破的游戏是Looking Glass工作室的《神偷:暗黑计划》,《神偷》采用的是Looking Glass工作室自行开发的Dark引擎。游戏中的敌人懂得根据声音辨认你的方位,能够分辨出不同地面上的脚步声,在不同的光照环境下有不同的目力,发现同伴的尸体后会进入警戒状态,还会针对你的行动做出各种合理的反应,这在以往那些纯粹的杀戮游戏中是根本见不到的。如今的绝大部分第一人称射击游戏都或多或少地采用了这种隐秘的风格。
Valve公司在开发续作《半条命2》之时,决定自己开发游戏引擎,这也成就了另一款知名的引擎Source引擎。与Unreal引擎一样,Source也不是一款简单的3D引擎,它同样包括了3D图像渲染、材质系统、AI人工智能计算、Havok物理引擎、游戏界面、游戏声效等各个组件,而且创造性地使用了模块化理念,结合Vavlve公司的Stream平台,游戏引擎的修改和升级都非常简单,这也使得Source引擎可以长盛不衰,至今依是主流引擎之一。



在DOOM3和半条命2的同时代,育碧公司利用CryENGINE引擎做出了另一款3A级的游戏《孤岛惊魂》。CryENGINE引擎使用了“PolyBump”特效,利用很少的多边形做出了大量多边形才能实现的游戏效果,游戏中的动态光影效果也非常出色。CryENGINE引擎还HDR高动态压缩、3Dc等技术,后期还通过patch补丁升级了SM3.0支持,画面又有所增强。
后来CryTek的CryENGINE2引擎在DX10时代缔造了另一个画质新高,那就是著名的显卡危机(《孤岛危机》)。06年底,由CryENGINE2引擎的《孤岛危机》夺得了最强0 Directx10画质大旗,并保持至今。




除去以上几款知名的游戏引擎,还有不少游戏公司的作品素质也很高。
《马克思佩恩》采用的是MAX-FX引擎,这是第一款支持辐射光影渲染技术的引擎,这种技术以往只在一些高级的建筑设计软件中出现过。MAX-FX引擎的另一个特点是所谓的“子弹时间”,这是一种《黑客帝国》风格的慢动镜头,在这种状态下甚至连子弹的飞行轨迹都可以看得一清二楚。
《红色派系》采用的是Geo-Mod引擎,这是第一款可任意改变几何体形状的3D引擎,也就是说,你可以使用武器在墙壁、建筑物或任何坚固的物体上炸开一个缺口,穿墙而过,或者在平地上炸出一个弹坑躲进去。
《英雄萨姆》采用的是Serious引擎,这款引擎最大的特点在于异常强大的渲染能力,面对大批涌来的敌人和一望无际的开阔场景,你丝毫不会感觉到画面的停滞,而且游戏的画面效果也相当出色。此外值得一提的还有《海底惊魂》所用的Krass引擎,这款引擎被作为GeForce 3的官方指定引擎,专门用于宣传、演示GeForce 3的效果,视觉方面的表现无可挑剔。
如今的directx12时代,Unreal引擎已经开发至第四代,Cryengine也到了第三代,市面上的3A大作不断。国内也涌现出很多优秀的自研引擎,如制作Flexi引擎、Next-Gen引擎、黑火引擎、Laya、C2engine等。但是许多优秀的游戏开发者正在退出游戏开发市场,转而进入引擎授权市场,仅靠开发引擎吃饭。尽管引擎的不断进化使游戏的技术含量越来越高,但最终决定一款游戏是否优秀的因素在于使用技术的人而不是技术本身。引擎相当于游戏的框架,框架打好后,你只需往里填充内容即可。框架只是提供了一种可能性,游戏的精彩与否取决于内容如何而非框架如何。正如《无人永生》开发小组所说:“所有问题最终都会归结为一点——你的游戏是否好玩。”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-24 10:25 | 显示全部楼层
既然是学习引擎,我觉得应该考虑的是,学习的难度。我不建议用学习太过复杂的引擎,也不建议学习架构太老太差的引擎。因为我们要学习的是引擎的基本架构,不是一堆优化技巧。优化技巧会使代码变得难以阅读,但是一个production-ready的引擎肯定是有很多优化技巧的。
另外我也不建议从3D引擎开始学习,因为太过于复杂了。即使你要做一个3D引擎,你也应该从2D引擎开始学起。
我尝试列举几个轻量级,容易学习的引擎:
lua实现的love2d
https://love2d.org/?__cf_chl_captcha_tk__=1a4acdca1e22a0c65314bb64065b152fc5afbaa5-1601301216-0-ATAHyBY3D3F4mDN-fP4AO959E1S0QkckH1dn8m0_kWed7hILm1iNfcXLNR-mC1n9y3lU-qtJy0bjtjq0ce53yjqp70BzTOj2u33PustOpS_ydRYn5NdcA_eTOZoewjU3IPWFOpjgArx4nUq4C2my5ItbcBbcDy98L3IHNKWDUdfF6Gzcw2aL57U68SeM70Zf8P1ZUHVCsCckd_LfsAFHn3VQg1dsUBlsU_EmlRST3CkvNEsDZ99c-SZ6Ly0ULoR4NLB4vFB8GX7Yup1Xygfo9vDFmrkjNKhvjlwYBQK4eZZEgDIc5F1IB0rEB3YdOf-hg9ppD6zV_kCYied-vIO5ZbqAD6bLOPmpBKYu2cG1Km9dXfSgjuqdYRXh0J-2wMAJRtd9wzqx71DG_0OqO2Hx-Wr1JM7mbBifyfikMV3PumbOCJ60rnrvOJYoiVq34hn0oZMjE8Vn8vYa_4IXVUv3QPMddy1qUF1aKtaQvxAqY4kAwvr_EJ_pPjomEMeiRG6E3p9YqJ-he1WOCGQSPdIRmhmydYwTFo3GpekIT5W7_8l4lua实现的ejoy2d,国内大神云风的作品
https://github.com/ejoy/ejoy2dhtml5引擎
https://phaser.io/phaser3另外,我也在开发游戏引擎,欢迎关注。
独立农场主:又双叒叕一款国产商业游戏引擎面世独立农场主:玄铁引擎UI实战 - 自动布局篇
发表于 2020-12-24 10:30 | 显示全部楼层
不要用cocos!

不要用cocos!

不要用cocos!
发表于 2020-12-24 10:37 | 显示全部楼层
egret engine 只做2d(推荐从2d开始学比较好,题主专注3d的话,就看看前面图形学大神的回答吧)比较好入门,平台在html5 用typescript 语言,比js更规范,更好用。

缺点即是优点 ts国内资料博客太少,白鹭社区活跃人数不多,但发展潜力很大

我所在的学校本专业大三两门大专业课flash游戏设计(不学as和flash,实际上就是egret游戏设计)以及下学期的游戏引擎设计都是用egret wing来上手的,学设计模式,架构为主。

tpyescript的介绍
http://www.zhihu.com/question/21879449?sort=created(答者就是我们这门课的老师)




egret wing 基于vs code 优点全部继承,很便捷美观,适合国人使用.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-24 10:40 | 显示全部楼层
godot..
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 09:10 , Processed in 0.068945 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表