注册 登录
  • 动态
  • 推荐
  • 游戏
  • 分享链接 new
  • 回答问题
  • 发现
  • 野蔷薇
  • 视频

方可慢 一介代码佬

回答了问题 更新于 2016-12-13 11:14:14

如何建造一个游戏引擎?

在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++反射实现能够浓缩为比较简洁的代码。


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

著作权归作者所有。商业转载请联系作者获得授权,非商业转载务必附上原作者名称,注明来自「奶牛关」并给出原文链接。不得以任何形式演绎或修改。

{{answer_voters_count}}人赞同

...

{{question_follower_count}} 个玩家关注

...

目录

    评论 0

    登录奶牛关账号即可参与讨论
    登录 / 注册

    方可慢 的更多回答

    查看所有回答

    该问题的其他回答