用途:该技能面向使用 GameMaker Language(GML)编写游戏代码的开发者,提供可维护、性能良好的代码组织方式、风格约定、玩法架构与性能模式。
主要能力:
- 工作流指导:设计对象(确定 Create、Step、Draw、Collision、Alarm 事件与数据归属);在 Create 中初始化变量、数据结构(ds_map、ds_list、structs)并缓存引用;在 Step 中处理输入、物理/移动、状态机转换与碰撞响应;Draw 仅负责渲染;将可复用逻辑抽为脚本/函数;在 Destroy/Room End 清理数据结构与 surface;优化前先用内置 profiler 或 get_timer() 定位热点。
- 代码组织:对象事件代码保持简短,复用行为放入脚本或命名函数;为脚本(scr_)、对象(obj_)、精灵(spr_)、房间(rm_)与全局变量/宏使用一致命名约定;Create/Step/Draw 职责分离,HUD/UI 用 Draw GUI。
- GML 风格:使用描述性变量名;优先用 var 声明局部变量;用常量、枚举(如 enum PlayerState { IDLE, RUN, JUMP })与 #macro 替代魔法数字;访问可能失效的实例前用 instance_exists 检查;尽量减少全局状态。
- 玩法架构:用有限状态机(枚举+switch 或 struct FSM)管理玩家、敌人、UI 与游戏流程状态;碰撞逻辑明确且确定,统一使用 place_meeting、instance_place 与碰撞事件;输入采集与动作执行分离;计时方式保持一致;存档用结构化 map/struct 并加 save_version 字段。
- 性能:避免每 Step 做昂贵的 instance_find/instance_number 全房间搜索;在 Create 中缓存资源 ID、图层 ID 与实例引用;及时销毁 ds_list、ds_map、ds_grid;对频繁生成的对象使用对象池;优化前先做性能分析。
- 调试与测试:用调试开关绘制碰撞盒、状态、速度向量与 AI 决策;用断言或守卫子句让不可能状态显式失败;分别测试房间切换、暂停/恢复、存档/读档与输入;保留可复现的测试房间。
使用方式:资料未提供具体安装命令或调用方式,仅给出编码实践与示例(如状态机脚本 scr_player_states.gml 与 obj_player 的 Create/Step 事件写法)。
适用场景:GameMaker Studio 中开发 2D 游戏逻辑、状态机、碰撞、存档与性能优化。
限制:资料未说明收费、价格、平台支持范围或效果保证;示例代码仅作风格参考,需按项目实际情况调整。