新人游戏开发:开局把地基造好,大幅节省开发时间

前言

游戏开发效率一直是一个很棘手的问题,大的项目自有专业人员协助策划,但是中小项目(特别是手游、H5等)则需要尽可能的规划好,但是很多刚接触“游戏开发”不久的朋友可能不太好理解这个问题,最近这几天刚好做了个小游戏,总结下经验可以共同分享交流。

游戏开发地基

每个游戏都有一个“地基”,也就是最基础的一个框架,正常来讲稍微正规一点的游戏,都有适合每款游戏专门设计编写的框架。

当然,并不是所有游戏都必须拥有框架,如果你的游戏不需要过多的代码、设计,那么这样的作品是无需进行框架方面的考虑的,那么问题来了,什么叫框架?什么样的作品需要一个框架?

个人对游戏开发没有专业的知识学习,凭着自己的感觉,框架这种东西更像是一个游戏的“管理员”。

比方说邮政服务的分拣系统,整个物流的流程就像是一个设计好的框架,每个包裹有没有被装箱、包裹信息、物流进度、根据情况会做出一些较通用的处理等等……

游戏框架倒并不是一个死概念,他是根据每个游戏的不同玩法做不同设计,比方说曾经风靡全球的《超级玛丽》,就是那个滑稽的修水管工人游戏,其实这并不算一个制作简单的游戏,如果往深处想一想,这款游戏是否拥有一个“地基\框架”?

新人游戏开发:开局把地基造好,大幅节省开发时间 - MP联机乐趣

回忆一下,如果让我们来制作一个“超级玛丽”,首先应该会分出一些类别,以供慢慢“自然而然”的实现出一个“框架”。

  • 马里奥:拥有一个“主角控制器”,在这个脚本里会控制与他相关的种种事情
  • 其他任何敌人:拥有一个“敌人控制器”,在这个脚本里进行统一的交互,反正就是处理与马里奥“斗智斗勇”的事情
  • 游戏场景:拥有一个“世界控制器”,主要用于场景的加载,以及背景、素材、机制的全局设定
  • 关卡管理:以我个人的习惯,我还要加一个“关卡管理器”,用于控制关卡中的事件(如游戏结束、过关等)

这几点似乎每个都是基于脚本形成的,用途也很明确(是用来控制游戏功能的),但实际上你也需要在场景树中同时搭建一些方便交互的节点(场景树这里指Unity、Cocos等引擎的Nodes),大概内容如下:

  • 游戏场景节点:只负责放置游戏的场景(如主角、敌人、世界等)
  • UI节点:负责管理或控制UI

这里看似只是创建了两个空节点,实际上空节点的下面最好再根据需要创建一些子节点,以供更方便的场景设计及交互(例子如下):

  • 游戏场景节点(父节点) -> 世界场景节点(只放置游戏场景)、敌人及主角交互层节点(只放置敌人控制器和主角控制器)

这里讲的只是一个简单的例子,不过看起来也够用了(UI节点根据自己的需要搭建)。

简单来说的话,现在就已经搭建好一个游戏的“基础框架”了,虽然现在看起来没有什么可观的样子,但是基础地基打牢之后,接下来的开发就会慢慢走入正轨(按照设计好的方向有序开发),哪怕期间可能会根据需求再做改变,但也不会是“想到哪写到哪改到哪”。

那么这些所介绍的就是如何设计一个“简单的基础框架”,问题来了:什么样的作品需要一个框架?

这个问题很简单:特别轻量级的游戏无需框架(如:速算24点、连连看、扫雷),但如果游戏牵扯的元素稍多一些,采用框架开发的话无论从规范、效率、理解上应该会更好一些,不过如果开发的游戏有些复杂(如:太吾绘卷、球球大作战)这类游戏,最好在初期搭建好节点、脚本、管理框架,在前期就要把框架负责、交互的内容建设好,不用说非要多么专业,起码要“够用”。

举个例子:球球大作战

球球大作战中看起来是简单的“大球吃小球”,还加了一些皮肤等元素,那么就拿着个例子来说。

新人游戏开发:开局把地基造好,大幅节省开发时间 - MP联机乐趣

首先,同样采用上方的“主角管理器”、“敌人管理器”框架,暂不考虑联机的元素,无非就是分为几个步骤来做:

  1. 根据游戏需求,建设好游戏脚本框架(管理器、控制器脚本)、游戏场景节点+UI节点
  2. 基础框架完成后,编写“世界框架”脚本,主要的作用是加载地图背景、动态在世界范围内生成“小点”(当然:小点也要绑上敌人控制器),所有内容尽量都动态调用生成(或者善用Prefab预制体)
  3. 根据个人习惯,建立一个全局管理脚本,主要作用是加载并开始游戏,首先调用世界框架脚本(步骤:调用世界脚本加载场景 -> 生成世界范围小点),然后应该在全局管理脚本编写创建玩家(包括AI敌人)的代码并调用。需要注意的是,这里所动态生成的节点要置父到之前搭建的对应“框架节点”中
  4. 至此,框架基本编写完成,实现代码功能后,场景内就应该类似图中:拥有世界(背景图)、动态生成的小点点、一个主角、剩下的敌人AI
  5. 编写完这些之后,你只需要做些剩下的步骤(如摇杆控制移动、假AI随机角度移动或躲避、判断自己比目标大就销毁目标并增大自己等),如果不出什么问题的话,一款比较简单的“大球吃小球”就应该差不多啦,而且“框架”中每个脚本、节点的关系也比较清晰,方便后期可以更好的维护修改

说到这里,也许听起来做个“框架游戏”也没那么太难,那么问题来了,你能试想一下不用框架、不走捷径的笨方法吗?

比如说(每项之间没有关系):

  • 手动放置地图上的小点点,先不说随机性如何,实际操作也很累,如果不把节点树搭建好,节点看起来也很乱
  • 没有使用“敌人控制器”相关脚本,以后比如说想给所有敌人批量做些事情,你还需要一个一个修改node或者prefab
  • 一个脚本只控制一个功能?代码维护起来十分复杂,先不说交互之间改起来多麻烦,多日后的自己能不能看得懂?
  • 节点不做框架管理,想到哪建到哪?游戏简单的话还好说,但如果复杂的话,自己想修改个东西都要找半天
  • 不使用主角、敌人控制器类似方式,只用脚本做简单判定?短期还好,但如果后期更新维护起来,很多更复杂的内容不方便实现

小总结:框架的作用没有说多大,但是为了自己和以后的自己能更清晰,在自己做游戏前先花10分钟“构思”个框架设计是很有必要的。

总结

简单来说,在制作中小游戏之前,特别是这个游戏元素牵扯比较多,那么最好还是花点时间构建个框架,具体如何设计就根据自身的经验和游戏需求。

有些简单的拖拽或许能让效果立竿见影,但后期维护起来会牵一发而动全身,你不会相信“宁可重写游戏都不愿意更新游戏”的感觉。

你的游戏现在有什么、想要实现什么、以后要做什么,最好花几分钟时间都考虑到,就好像你在给别人“写一个支持库”一样,多写几句活代码,给多日以后的自己一条好路,可以节省更多时间做别的事情。

建议扩展关键词:动态调用、场景节点树、Prefab、场景控制器、持久化数据

 


感谢浏览!这是由 MP联机乐趣 提供的相关内容,原创文章转载请注明出处!

想了解更多联机游戏?欢迎加入QQ群:311328451

本文链接:https://www.mp-gamer.com/indie-game/developer/727.html

相关推荐

多人联机游戏网络协议+查询端口清单

如何查询某游戏服务器信息?联机游戏服务器在线查询?联机游戏网络协议列表及端口清单,提供GameQuery、Gamespy、Valve等著名游戏网络协议的通讯信息,您可以通过这些有用的信息组建服务器查询系统,以便查询游戏服务器房间的名字、人数、地图、模式等关键信息。

error: 尊重创作内容,请勿复制