游戏开发的程序设计流程——以《奔跑吧巨人》为例


本文基于前面的文章<Cocos游戏MVC框架设计>

制作游戏前

制作游戏前的几步:

  1. 导入素材,拼好UI,导入游戏的脚本框架,注意:UI上不得手动挂脚本,不得在场景中放任何实体
  2. 脚本框架有:资源管理,UI管理,声音管理,定时器管理,网络管理,事件管理,配置表管理,相机管理
  3. 在主场景挂上启动脚本,启动脚本中管理UILoading的预制体,代码挂载并初始化管理模块。

开始制作

在启动脚本的调用真正的游戏入口脚本GameApp,开始游戏时需要经过几个步骤:
- 显示UILoading
- 加载所有的配置表,加载玩家存储的本地数据和网络数据,以供游戏中读取
- GameApp脚本挂载地图生成模块(根据配置表生成地图),玩家数据管理模块
- 加载场景(关卡),显示主页UI ,隐藏Loading界面

如何加载关卡

所有关卡数据都从配置表中读取,每一个关卡都存在一个配置表,配置表中的每一行对应场景中一个物体的类型位置旋转大小信息。获取信息后,再从ModuleInfo配置表中获取该物体对应的预制体路径等信息,并加载到场景中。
注意:设置好摄像机和光照,防止拼接的痕迹穿帮。

如何同步UI

  1. UI的数据通过PlayData单例类进行管理
  2. UI加载时,读取数据进行初始化
  3. 当数据变化时,通过事件系统进行通知

如何创建控制人物

  1. 通过资源管理模块加载人物预制体,代码挂上脚本GamePlayer,这是一个逻辑组件
  2. 脚本中需要管理与人物相关的所有属性
  3. 编写控制物体移动的导航组件,如果使用刚体,需要用导航组件控制刚体的移动,如果要使用,处理好物理和碰撞的分组
  4. 处理好重力、地面的碰撞检测
  5. 编写人物移动,攻击等模块,调用动画功能组件实现功能

编写控制和决策模块的代码

  1. 一般人物通过三种方式进行决策:玩家输入、硬编码逻辑、人工智能
  2. 获取玩家的输入事件,游戏进行对应的处理
  3. 在Update里更新人物的速度,位置

控制相机

  1. 编写相机脚本,初始化时要在正确的位置
  2. 相机跟随人物

动画控制与管理

  1. 原则:动画是一个单独的功能组件,不要和逻辑控制组件混在一起写
  2. 定义动画名到文件名的映射,枚举玩家的状态。什么状态就对应有什么动画。
  3. 状态切换时播放动画

如何推进游戏

GameManager脚本管理游戏的进程,把游戏分为不同的阶段(GameStart,GameOver)

当满足游戏结束的条件(生命值为零,Boss死亡等),就派送一个GameOver的事件,以isWin为参数,然后在GameManager脚本来监听,GameManager来做UI的变化和游戏状态的管理。

游戏结束后要重置所有状态。


  目录