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

Meta42 levelpp.com

回答了问题 更新于 2016-12-13 13:02:37

制作游戏时该如何为程序建立起一个框架?

我本人在游戏业从业5年了,游龄也有10年了, 做过 TA, 引擎工程师,Gameplay工程师, 主程序, 自己业余也一个人搞点游戏, 架构性的工作也一直在做,索性就帮帮题主吧。

这是我之前写过的一套架构,目前也有不少身边项目在用,包括我现在在带的项目,是个基于Unity的热更新架构

github: https://github.com/meta-42/UnityFramework


===========================================================

另外补充一点,以下内容,我不会提到什么MVC, 单例,组件,等等其他答主所说的东西,因为在我看来,这些只是战术层面的问题,以下,我想讨论以下战略层面的问题。

原因有两个:

1. 战术问题,需要工程洗礼,我在这里说的再多,炫技,炫名词,多过实际意义。

2. 在思考一个架构时,一般来说是自顶向下,先抓主干,再填细节,所以战略层面是首先需要理清的, 战术层面,只是选择某种战术来达成战略目的罢了

============================================================


这个问题可以拆分成三个层面来讲,因为这个三个层面的架构 都是完全不同的东西

1.Gameplay
2.Engine
3.Workflow



【Gameplay】
我们从Unity引擎的设计理念说起,Unity是一个弯道超车的现代引擎,之所以可以弯道超车,以下两点功不可没

1.设计理念简洁,干净,降低了入手门槛
2.跨平台开发

而导致题主产生这个问题的,便是第一点

Unity整个引擎的设计都遵循着一个简单的逻辑, 引擎内核作为一个黑盒,并提供给开发者这个黑盒的主要接口,使开发者可以在就算不完全理解引擎内核的基础上
也可以进行自己的扩展,简单来讲就是我给你一块白板,上面画什么,怎么画,由你自己决定。

为什么说这个问题导致了题主的问题呢? 那是因为在这个理念下,引擎层便不会包含Gameplay部分的任何东西,开发者需要从头构建Gameplay. 对于已经有多年制作经验的人来说,这太好了, 我可以自己定制一套最适合我的Gameplay架构。 而对于没有制作经验的人来说,就会像题主一样,借由引擎的组件模式, 把一个个功能抽象为一个组件,挨个挂上去就是了,这样下去,游戏做大了, 就会开始觉得似乎架构上有问题了。

那么如何解决这个问题呢??

我的建议是,可以简单了解下一个基本的Gameplay架构有哪些东西,最好,且最容易获得的参考 是Unreal引擎的Gameplay架构。
附个地址:https://docs.unrealengine.com/latest/CHN/Gameplay/Framework/index.html

简单说下包含的主要方面

1. 3C(3A游戏里 Gameplay部分代码量最大的模块): Controller,Camera,Character

2. GameMode

3. UI&HUD

4. State: PlayerState, GameState


这些东西的具体概述,我就不叙述了, 有了这个方向,有心人可以自己查了

一般写游戏的Gameplay部分 都可以从这几个角度入手来分析。


【Workflow】 未完,待补充

【Engine】未完,待补充

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

{{answer_voters_count}}人赞同

...

{{question_follower_count}} 个玩家关注

...

目录

    评论 4

    Biobot 1年前

    谢谢!

    Meta42 [作者] 1年前

    @Biobot‍ 客气

    发布

    吴敏 1年前

    所以说想学好unity架构,先学ue...

    发布

    晨临雾逝 1年前

    mark

    发布

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

    Meta42 的更多回答

    查看所有回答

    该问题的其他回答