CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
框架设计

【框架设计】限时活动日历:开启判定与预告推送

2026-09-22 20:38 作者:996 技术组 0 阅读 框架设计

实战应用:用在哪里

一周七天排满不同活动:周一攻城、周三双倍、周末跨服,玩家打开日历一眼看到今天有什么、几点开始。活动日历统一管理开启判定,所有玩法模块向日历注册自己的时间窗口,判定逻辑一处维护,预告推送把人按时拉回,晚间八点的在线峰值因此稳了一截。

日历配置

lua

local ACT_CALENDAR = {
    { wday = 1, name = "攻城战",   open = { { 20, 0, 22, 0 } } },
    { wday = 3, name = "双倍经验", open = { { 12, 0, 14, 0 }, { 19, 0, 23, 0 } } },
    { wday = 6, name = "跨服战场", open = { { 14, 0, 17, 0 } } },
}
function Calendar.isOpen(actId, now)
    local act = ACT_CALENDAR[actId]
    local wd = tonumber(os.date("%w", now))
    if wd ~= act.wday then return false end
    local hhmm = tonumber(os.date("%H%M", now))
    for _, win in ipairs(act.open) do
        if hhmm >= win[1] * 100 + win[2] and hhmm <= win[3] * 100 + win[4] then
            return true
        end
    end
    return false
end

开启窗口按星期与时段配置,多窗口支持午间与晚间双场,时间全部走配置热重载,运营调整不发版。判定函数无状态,玩家请求时实时计算,缓存一天的判定结果也没必要,计算本身微不足道。

预告推送

lua

function Calendar.preNotify(now)
    for actId, act in ipairs(ACT_CALENDAR) do
        local nextAt = Calendar.nextOpen(act, now)
        if nextAt - now <= 600 and not act.notified then
            act.notified = true
            QF_PushAll("「" .. act.name .. "」10 分钟后开启")
        end
    end
end

开启前 10 分钟全服推送,notified 标记防止重复打扰,开启后重置,活动结束同样推一条战报摘要。推送文案带活动入口深链,点开直达报名界面,转化路径一屏内完成。日历界面用 GUI:Calendar 控件按周渲染,进行中的活动角标高亮呼吸,未开始的展示倒计时。

验证与监控

推送触达与活动进场率按场次统计,进场率低于均值三成的活动重新评估时段。

踩坑记录

日历的时区处理在海外服上线时翻过车,北京时间晚八点对当地玩家是清晨,活动面板显示的开启时间按服务器时区硬编码,海外服按注册地区本地化后参与率回升。深链降级路径的测试用例覆盖了每个渠道包,黑屏两周的事故复盘会上定了这条军规。活动预告的文案模板带剩余场次信息,本周还剩两场攻城战的提示让玩家对稀缺性有感,参与率提升的关键有时只是一句文案。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

工具链

【工具链】风格检查器:Lua 脚本命名与规范的自动审查

实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…

2026-09-22 22:32 996 技术组 · 0 阅读
界面UI

【界面UI】拍卖行界面:出价流程与截拍提醒

实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…

2026-09-22 21:12 996 技术组 · 0 阅读
框架设计

【框架设计】幸运值机制:强化失败的隐性补偿

实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…

2026-09-22 21:12 996 技术组 · 0 阅读
安全加密

【安全加密】日志防篡改:哈希链与异地备份

实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…

2026-09-22 21:12 996 技术组 · 0 阅读
性能调优

【性能调优】批量邮件:活动奖励的分批投递

实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…

2026-09-22 21:12 996 技术组 · 0 阅读
网络通信

【网络通信】面对面交易:握手、锁定与确认的协议

实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…

2026-09-22 21:12 996 技术组 · 0 阅读