如何建造一个游戏引擎?

0 条评论


  • 13

    方可慢一介代码佬

    ZeromaXSynthwave Surfer乌拉拉 等 13人赞同

    在Unity盛行的今天,我们谈游戏引擎,可以将引擎分为两部分:Runtime和Editor。


    Runtime主要涉及的是图形学了,当然也包括最基本、核心的通用编程技术。对于最尖端的Runtime来说,主要追求的是吃透硬件,毕竟真正画出图像的是显卡,Runtime更多的时候起到的是指挥硬件绘图的作用。Unity在这块不太行,我们谈Unity优化时主要谈减DrawCalls就是个佐证。Vulkan、D3D12这些追求命令派送效率的API的兴起,也显示了当前实时渲染这块在追什么热点。


    Editor可能更复杂一些。大部分人能够写出Runtime足够完善的引擎,但是Editor这块却做得一塌糊涂。大部分In-House引擎在Editor这块做得都很差。对比Unity和UE4,Unity的Runtime完全不如UE4,但在Editor这块恐怕Unity更胜一筹。数不尽的Unity第三方插件很好的证明了这一点。


    Editor也是需要很深的通用编程技术的。最基础的两点:GUI和对象反射(还要序列化等)。


    GUI的实现有两种途径,一种借助于操作系统桌面的GUI技术,或者直接在一个Canvas或者叫Framebuffer的东西上一点一线的画(你自己的GUI技术)。一般推荐使用前者,后者工作量不小。一些比如像Qt的技术可以帮助你很方便的使用操作系统的桌面技术。


    反射技术是一项非常好的技术。用过Unity之前的老式引擎的人一定知道它们的Editor多么难用,原因就是它们不像Unity这样用了很多反射。借用反射技术,可以更方便编辑游戏中的对象,实现游戏对象的可视化和所见即所得。在Unity中,反射主要由Mono提供。UE4中,Epic在C++编译器之前加了一个预编译器,使冗长的C++反射实现能够浓缩为比较简洁的代码。


    总的来说,游戏引擎涉及的计算机编程技术非常多,开发游戏引擎也是一个十分漫长的过程。

    更新于 2016-12-13 11:14:14 0 条评论


  • 6

    Meta42levelpp.com

    SayUOMeta42蕾米莉亚 等 6人赞同

    我写过几个引擎,这里我不撤太多技术问题。简单说下你可以去做的路线

    写引擎的话,绕不开计算机图形学,所以先从图形学开始吧

    1. 用DX (不要问我为什么不用opengl)写一些简单的三维图形程序,大致熟悉一下流程

    2. 第一步后,你可能会对图形学有一个懵懂的认识,但是却一知半解 无法下手开始写。这时候建议网上找资料从头写一个软渲染器。熟悉整个3D流水线,这个过程网上有很多资源,书籍

    3. 经过了前两步,应该有一定基础了, 这时候可以开始看 一些简单的引擎源码了。 不要犹豫,找到你能看懂的引擎源码,开始复刻吧。这个过程是为了让走一个流水。不用弄清楚引擎的所有细节,因为魔鬼藏在细节里,这个阶段抓稳主干即可

    4.  可以开始构思自己的引擎了,从头开始,一点一滴,慢慢垒砌吧,这是个愚公移山的过程

    发布于 2016-12-12 22:22:48 0 条评论


  • 1

    明皇十二Unity小程序员一枚

    天 Lely 赞同

    https://www.zhihu.com/question/32063728知乎上看的,长知识

    发布于 2016-10-20 19:24:51 0 条评论


  • 0

    XenoAmessXenoAmess

    1:知道你想要什么

    2:去做

    3:想想还需要什么

    4:goto 1


    虽然不明白为什么一楼的老哥认为Editor比Runtime还复杂。。。

    不过某些时候是可以偷别人的Editor的

    你去兼容一下人家的格式就好了。

    发布于 2019-01-25 03:50:58 0 条评论


  • 0

    uraki

    游戏引擎是做游戏时抽象出来的一些接口而已,如果你没有在游戏,那么你不需要游戏引擎,反之,如果你需要游戏引擎,那么你已经在做游戏了,把其中的接口抽象出来即可。过度抽象没有意义,要注重实际需要的“功能”。

    更新于 2017-01-22 22:38:30 0 条评论

  • 登录奶牛关账号即可参与讨论