游戏开发中的项目资源管理
修改于11/07226 浏览综合
我是狂猎世界的开发者,大家感兴趣的可以看看我们本次聚光灯开发的项目。
在游戏开发的过程中,不管是个人项目还是集体项目,长期项目还是短期项目,往往都会遇到资源管理问题。这是创作者不得不面对的一个问题。
很多人可能觉得对于个人项目来说资源并不需要得到有效的管理,但事实是个人项目随着开发时间的增长也会出现爆炸式的资源数量膨胀,尤其是UI等琐碎物品的增加会大大的增加资源管理的难度。在这里我将会抛砖引玉,与大家分享我的资源管理经验。
那么在资源管理中,我一般将资产分为三大类。程序类资产,通常也就是C#脚本 ,当然程序的管理设计到程序的组织架构,因此在这里不做过多的讨论。美术类资产,通常包括2D资产,例如UI,HUD,立绘,CG等等,3D资产,包括模型,动画,纹理等等,其他的一些就是shader,特效之类的,这里不进行一一赘述。音频类资产,包括游戏音乐,游戏音效。在这里我们重点讨论游戏美术和音效的资源管理。
在游戏里面音乐的数量往往较为有限,一般来说小型游戏的音乐数量只有十几二十首,大型游戏,例如女神异闻录5,这些大型RPG游戏的音乐数量可以达到上百首。但是音乐的数量终归还是有限的。而且大部分的音乐往往比较好辨认。因此管理起来的难度不算是特别大。音频类资产管理的难点在于各种各样复杂的音效。这些音效往往应用于UI界面,战斗,人物移动,剧情演出等等方面,而且大部分音频比较短小,甚至有些音频区别不大。管理大量的音频对于开发者来说是个比较头疼的事情。
首先要明确音频的命名方式,如果是游戏背景音乐可以命名为BGM000,因为你的游戏音乐数量不会到达四位数。但是游戏音频的命名则建议是SFX0000甚至是SFX00000。一开始就把数量的预期抬高可以避免后期的更换。当然如果你的游戏体量开发到了远超预估的水平,则可以考虑通过脚本对游戏音频进行重新命名,尽管我觉得这会导致游戏出现一些问题。在RPG品类中系统往往是非常复杂的,你的音频资源也会在大量的场景中进行应用。为了方便你通过你的AudioMnager来播放你的音频,我们建议你将音频资源进行分类和命名,并将音频名称硬编码到你的c#脚本中 。如果你觉得这种方法不够好也至少要把你的音频名称存到json等文本文件中,再从文本文件中读取。如果直接通过音频名称使用音频文件可能会导致播放错误或者是不存在的音乐。将音频文件作为一个类,开发一个系统进行统一管理会是一个非常不错的决定。接下来的美术资源管理也同样支持这种方式。
根据游戏类型的不同,游戏美术资产也会有所不同。这里我仅对UI和HUD进行讨论。UI指的是GUI,也就是玩家能够看到游戏上的交互图标。这类图标的显示往往非常琐碎。对UI的管理我通常采用树的形式,也就是大UI作为母文件夹,大UI下的小UI作为子文件夹。比如说我们这次做的战斗UI,就是这种形式。
这里的TeamUI就是战斗UI
当然这种管理方法是我将琐碎的UI文件导入工程后用unity的图集工具进行管理,当然也哭在导入工程前用游戏外部的工具将UI制作成图集再导入游戏,这样你的游戏就可以将UI图集以SO0000的形式进行命名,统一管理。在这里我是对图集以这种形式进行管理。
注意UI的使用尽量保持一对一,这里的一对一是指的一个Sprite对应一个Gameobject,如果玩家觉得某个UI元素可以被应用在其他的UI中时建议单独拷贝一份。
然后是游戏的HUD,游戏的HUD包括物品图标,提示信息等。开发者首先要明确HUD用途。比如物品图标,在我们的项目中是命名为了IT0000(Item)
每添加一个新的物品游戏序号进行递增,每删除一个物品时序号不进行变动(一开始给的数量预估大,有四位数)。这样可以保证在项目周期内不会对命名进行调整,避免不必要的以外。
在开发者制作项目的过程中,必然还会遇到与其他的同伴合作。那么开发资源管理工具就势在必行了。开发者在明确了自己项目的资源类型后,可以开发一个编辑器GUI,这样同伴就可以通过这些资源管理工具而非直接与unity编辑器进行交流。这样就可以大大降低资源管理难度。
#聚光灯游戏开发心得接力

