这是一款基于开源框架GameFramework(以下简称GF)实现的塔防游戏Demo。Demo原型是Unity官方放在Assets Store上的Demo Tower Defense Template。此项目是对Demo原型使用GF进行再实现以及扩展,主要用于个人对GF的学习和实践,也给其他学习GF的同学一个参考。
这里是本人在知乎上对GF代码分析的专栏:GameFramework解析:开篇
游戏是塔防类型,总共五个关卡,每个关卡的地形环境、产生的敌人、以及可使用的塔都不一样。玩家利用获得的能量根据具体情况选择合适的塔,并建造在适当的位置来阻止敌人攻击基地。
玩家在关卡开始有少量初始能量,通过击杀敌人和建造能量塔均可以获得能量,能量用于建造和升级塔。
基地是敌人进攻的最终目标,也是玩家需要守护的目标,当基地血量为0时游戏失败。
若玩家在消灭关卡所有敌人且基地血量不为0时,则通关成功,若在消灭所有怪物前,基地血量被攻击至0,则游戏失败。通关成功会根据基地剩余血量进行评分。
本项目用到了GF中的多个模块包括全局配置、数据表、实体、事件、文件系统、有限状态机、文件系统、本地化、对象池、引用池、流程、资源、场景、游戏配置、声音、UI等。
游戏内所有数据均以Excel形式进行配置,导出生成二进制文件后在运行时加载读取。
利用本地化模块以及资源模块中的变体实现游戏本地化。
项目中大量重复使用的对象都使用了引用池进行缓存,避免频繁的内存分配。
已对所有资源进行打包配置,设置了正确的分包信息、文件系统等。并根据内置分析工具做到0冗余、0循环引用。
游戏启动会检测版本信息并进行基本资源(即非关卡内资源)更新。
游戏对每个关卡资源单独进行分包,进入关卡前需要下载更新相应的资源,而暂时没有玩到的关卡可以暂时不下载。
游戏在Editor下默认以Editor模式启动,即读取工程内资源运行,不会读取AB包也不会进行更新。项目已正确配置打包信息,并完成了相应的热更逻辑的实现,若要测试更新模式,需要在Base组件取消Editor Resource Mode,并确保Resource组件的Resource Mode为Updatable模式。在打包资源并正确部署资源后即可正常运行更新模式(借助HFS等工具可在本地进行部署和测试)。
感谢GameFramework作者Ellan Jiang提供的优秀框架。