有趣的教程,通过GitHub仓库免费为自己的Toy游戏增加GM后台功能,有兴趣的可以看一下
蕾姆-22
2026年10月02日 17:34

一、GM是啥

可以在不更新提交游戏版本同时给玩家发个维护公告、发放游戏奖励补偿。 节日可以给在玩游戏的玩家送上游戏道具

如图:

二、准备工作

1. GitHub 建立仓库

2. 里面建个 gm.json:

{ "notices": [], "rewards": []}

3. 仓库 Settings → Pages → Source 选 Deploy from a branch,Branch 选 main,Save

4. 等几分钟,打开 https://你的用户名.github.io/仓库名称/gm.json 能看到内容就是成功了

三、游戏端代码

进游戏后拉取一次,示例代码如下:

// 地址换成你自己的

var GM_URL = 'https://你的用户名.github.io/wyxx-gm/gm.json';

function fetchGmConfig() {

fetch(GM_URL, { cache: 'no-store'}).then(function (r) { return r.json();}).then(function (cfg) {

if (!cfg) return;

// 1. 公告:没见过的 id 弹窗

(cfg.notices || []).forEach(function (n) {

if (!n ||!n.id) return;

var seen = (Game.state.gmNotices || []).indexOf(n.id) >= 0;

if (!seen || n.force) {

UI.modal({ title: n.title || '公告',

html: '<div>' + n.body + '</div>',

buttons: [{ t: '知道了'}]});

if (!seen) { Game.state.gmNotices.push(n.id); Game.save();}

}

});

// 2. 奖励:转成邮件(同 id 不重复发)

(cfg.rewards || []).forEach(function (rw) {

if (!rw ||!rw.id) return;

Game.sendMail('gm_' + rw.id, rw.title, rw.body, rw.gifts);

});

}).catch(function () {});

// 拉失败静默,游戏不受影响

}

调用时机:进游戏 2 秒后调一次

setTimeout(function () { fetchGmConfig();}, 2000);

四、邮件系统配合

奖励转邮件需要游戏里有邮件系统,核心两个函数

// 发邮件,同 id 不重复

Game.sendMail = function (id, title, body, gifts) {

var mails = Game.state.mails || [];

for (var i = 0; i < mails.length; i++) if (mails[i].id === id) return false;

mails.unshift({ id: id, title: title, body: body,

gifts: gifts || {}, read: false, claimed: false, time: Date.now()});

return true;

};

// 领奖励,防重复

Game.claimMail = function (id) {

var mails = Game.state.mails || [];

for (var i = 0; i < mails.length; i++) {

if (mails[i].id === id) {

if (mails[i].claimed) return { ok: false, msg: '已领取过'};

var g = mails[i].gifts || {};

if (g.lingshi) Game.state.lingshi += g.lingshi;

if (g.xianyu) Game.state.xianyu += g.xianyu;

if (g.mats) for (var k in g.mats)

Game.state.mats[k] = (Game.state.mats[k] || 0) + g.mats[k];

mails[i].claimed = true;

Game.save();

return { ok: true};

}

}

};

五、发公告/奖励

改 gm.json,提交,几分钟生效:

{

"notices": [

{ "id": "n20261003", "title": "维护公告",

"body": "今晚6点维护", "force": true}

],

"rewards": [

{ "id": "r20261003", "title": "补偿", "body": "卡顿补偿",

"gifts": { "lingshi": 5000, "mats": { "灵芝草": 20}}}

]

}

代码里的地址和逻辑按你游戏实际的改改就能用。

记住公告发完记得24小时后删除,不然每次进入游戏都会弹出公告