如何在GameMaker Studio 2游戏中接入Steam API与成就系统?
实现《Jump By Coronho: Chapter 2》Steam成就系统的实操指导
一、YOYO扩展基础配置
- 先在GameMaker项目设置的
Steam标签下,填写游戏对应的Steam App ID,测试阶段可使用Steam官方测试ID480。 - 游戏启动时(比如第一个房间的
Create事件)必须优先初始化Steam:if !steam_initialised() { steam_activate(你的游戏AppID); }
二、Steam成就核心操作
1. 成就定义与同步
- 先在Steamworks Partner后台的
Achievements页面创建成就,记录每个成就的唯一API名称(如ACHIEVEMENT_FIRST_CLEAR)。 - 游戏启动后拉取玩家已有成就数据:
此函数必须在所有成就操作前调用。steam_user_stats_request_current_stats();
2. 解锁成就
当玩家达成触发条件时,执行以下代码解锁并同步:
// 避免重复解锁 if !steam_user_stats_get_achievement("ACHIEVEMENT_FIRST_CLEAR") { steam_user_stats_set_achievement("ACHIEVEMENT_FIRST_CLEAR"); steam_user_stats_store_stats(); // 同步到Steam服务器 }
3. 查询成就状态
需要在游戏内展示成就进度或状态时使用:
// 检查成就是否已解锁 var unlocked = steam_user_stats_get_achievement("ACHIEVEMENT_FIRST_CLEAR"); // 获取渐进式成就的进度(需先在后台配置统计项) var jump_count = steam_user_stats_get_stat_int("STAT_TOTAL_JUMPS");
三、调试与验证
- 必须通过Steam客户端启动游戏(直接在GameMaker运行可能不加载Steam环境),按
Shift+Tab打开Steam overlay查看成就状态。 - 若测试无响应,检查:
- Steam账号已加入游戏的测试组(Steamworks后台需设置测试分支);
- 后台创建的成就已发布到测试分支。
四、YOYO扩展无文档的替代思路
如果扩展封装的功能不足,可通过GameMaker的external_call直接调用Steam SDK原生函数,但需提前编译对应平台的Steam SDK动态链接库——不过多数场景下,YOYO扩展已覆盖成就核心操作,优先使用扩展函数即可。
内容的提问来源于stack exchange,提问作者Behind The Mask
相关产品推荐
相关产品推荐

