TappyPlane 开发日志:状态机、开始界面与代码重构
【Godot01】勇敢小飞机 » Devlog
引言
大家好,我是老李,今天我想与大家分享一下我在开发 TappyPlane 游戏项目过程中的一些经验和进展。
尽管TappyPlane是一个超小型项目,但我依然希望能够使用更规范的开发流程和项目结构。因此近期我进行了如下调整:
本次开发主要集中在三个方面:使用有限状态机(Finite State Machine)管理游戏流程、添加一个开始界面(MenuForm)以及整理项目结构和重构代码。
使用有限状态机管理游戏流程
在游戏开发中,有限状态机是一种非常有效的管理游戏状态的方法。
在 TappyPlane 项目中,我使用状态机来管理游戏的各个阶段,如“开始菜单”、“游戏进行中”和“游戏结束”等。
这样做的好处是,可以清晰地定义每个状态下游戏应有的行为,以及如何从一个状态转换到另一个状态。
实现细节
- 实现了一个简单的有限状态机,并且封装成addons可以在项目间通用
- 通过继承方式实现GameStateMachine,并且维护多个GameState,这些GameState继承自BaseState,是RefCounted的子类(也可以使用Resource,看你的需求)
- 外部通过改变状态机的参数控制状态机的状态切换,状态机提供了set_value和get_value方法。
添加开始界面(MenuForm)
为了提供更完善的用户体验,我添加了一个开始界面,也就是 MenuForm
。这个界面包括“开始游戏”、“设置”、“排行榜”和“退出”等选项。
实现细节
- 使用godot提供的control及其子节点制作MenuForm场景
- UILayer作为UI管理器和所有UI场景的父节点,处理UI层和实际游戏层之间的相互调用
- UI层通过signal实现对外部的通信
整理项目结构和重构代码
随着项目逐渐变大,代码的组织和可维护性成为了不能忽视的问题。因此,我花了一些时间来整理项目结构和重构代码。
实现细节
- 将与特定游戏状态相关的代码移动到相应的状态类中。
- 重构了一些复用性高但结构不清晰的代码,使其更易于理解和维护。
- 使用了一些设计模式,如单例模式,以提高代码的可扩展性。
总结
通过使用有限状态机,我成功地将游戏的不同阶段进行了有效管理。添加的开始界面提供了更好的用户交互,同时,代码重构也使项目更加健壮和可维护。这些改进不仅提高了游戏的质量,也为后续的开发打下了坚实的基础。
感谢大家的关注,我是老李,下次开发日志再见!
Files
TappyPlane_web.zip Play in browser
Sep 13, 2023
TappyPlane_PC.zip 25 MB
Sep 13, 2023
【Godot01】勇敢小飞机
godot教学项目第1弹,课程最终成果演示
More posts
- TappyPlane 开发日志 - 排行榜功能与项目总结Sep 15, 2023
- TappyPlane开发日志:新增设置界面与音效控制Sep 14, 2023
- 使用游戏状态机管理游戏流程:一种优秀的游戏开发习惯Sep 13, 2023
- TappyPlane开发日志:开发内容安排和教学大纲Sep 05, 2023
Leave a comment
Log in with itch.io to leave a comment.