Inspiration
游戏上线之后,真正困难的并不只是“把服务器跑起来”,而是如何长期、安全地管理地图、玩家、存档、排行榜、礼包、风控事件与运营数据。
许多中小型游戏项目依赖零散脚本、数据库工具和人工表格完成运营:权限边界不清晰,正式服和测试服数据容易混用,客户端重试可能造成重复发放,危险操作也缺少审计与回滚能力。
因此,我们打造了 风起游戏后台:一个面向正式运营场景的游戏管理平台,让开发、运营和管理人员能够在统一、安全、可追溯的工作台中协作。
What it does
风起游戏后台以“地图”为核心管理边界,为每张游戏地图提供完整的运营能力:
- 管理正式服、测试大厅和测试服,并保证不同环境的数据相互隔离
- 管理玩家资料、游戏存档以及物品、存档、排行榜三类封禁状态
- 配置实时排行榜,发布不会被后续数据改写的历史榜单快照
- 创建风控规则,接收幂等风险事件并完成审核与处置
- 向玩家发送游戏内消息、发放礼包,并通过 ACK 确认实际送达
- 管理主播、埋点、指标、聚合日志、JSON 配置和预加载代码
- 创建公开群抽活动,支持在线报名、随机开奖和结果公开
- 管理地图文件,并限制危险文件上传、路径越界和未授权访问
- 为游戏客户端创建绑定地图、环境和权限的 API Key
- 提供地图级功能权限矩阵、危险操作确认和完整审计日志
- 支持 Docker 部署、HTTPS、健康检查、数据库及上传文件备份恢复
How we built it
前端使用 React 19、React Router 7 和 Vite 8 构建,提供响应式的地图中心、运营工作台和管理员控制台。
服务端基于 Node.js 与 Express 5,通过 Zod 校验外部输入,使用参数化 SQL 和数据库事务处理关键业务。业务数据存储在 PostgreSQL 中,并通过递增迁移维护数据库结构。
系统设计了三套相互独立的身份与访问边界:
- 后台人员通过 Cookie 会话登录,并接受地图级最小权限校验
- 游戏客户端通过
FQ-Map-Key接入,每个 Key 固定绑定地图、环境和权限 - 群抽参与者只能通过不可猜测的公开链接访问有限的活动数据
生产环境使用 Docker Compose 管理 PostgreSQL、应用服务和 Caddy,并由 Caddy 自动提供 HTTPS。
项目通过 Vitest、GitHub Actions、生产依赖审计和隔离 PostgreSQL 集成测试 建立持续验证流程,确保代码、权限、数据库迁移和生产构建保持可靠。
Challenges we ran into
最大的挑战不是制作页面或完成 CRUD,而是让每一条业务链在真实网络和运营条件下仍然安全可靠。
首先,所有运行数据都必须同时按照 map_id + environment 隔离。游戏客户端不能通过请求参数切换环境,普通后台用户也不能通过修改 URL 访问未授权地图。
其次,游戏网络可能出现延迟、断线和重复请求。我们为存档写入、风险事件、消息和礼包设计了幂等与 ACK 机制,确保客户端重试不会重复创建事件、覆盖新版本存档或错误发放内容。
排行榜也需要明确区分实时数据与历史事实。发布榜单快照时,系统会复制当时符合条件的前 100 名;后续分数变化、数据删除或玩家封禁都不会改写已经发布的历史榜单。
地图永久删除则同时涉及数据库和文件系统。我们通过事务、审计、目录原子暂存与失败恢复,控制“数据库成功但文件残留”或“文件已移动但数据库回滚”等风险。
Accomplishments that we're proud of
我们最自豪的不是功能数量,而是把游戏后台从“能够使用”推进到了“可以被安全运营”:
- 打通后台人员、游戏客户端和公开参与者三类入口
- 实现地图级、环境级和功能级的权限隔离
- 完成玩家、存档、排行榜、风控、消息、礼包和运营数据的完整链路
- API Key 完整 Token 只在创建时展示一次,服务端仅保存哈希
- 危险操作具备服务端授权、明确确认、审计记录和失败回滚
- 建立自动迁移、单元测试、集成测试、生产构建和依赖审计门禁
- 完成 Docker、HTTPS、私有对象存储、定时备份和独立恢复验证
- 保持界面简洁清晰,让复杂的运营能力仍然容易理解和操作
What we learned
这个项目让我们认识到,可靠的游戏管理平台远不只是一个数据面板。
权限必须由服务端执行,不能依赖前端按钮是否显示;网络重试必须作为正常情况处理,而不是异常情况;历史快照、审计日志和备份恢复也必须在设计阶段建立清晰边界,而不能等事故发生后再补救。
我们更加确信:真正优秀的后台系统,应当让安全约束自然地成为业务流程的一部分,让运营人员在不需要理解底层数据库和服务器细节的情况下,也能完成可靠、清晰、可追溯的操作。
What's next for 风起游戏后台
下一阶段,我们计划继续完善:
- 更丰富的运营数据分析与可视化
- 风控规则自动化与异常趋势预警
- 更完整的游戏客户端 SDK 和接入示例
- 批量运营任务与审批工作流
- 多地图数据对比和运营报表
- 监控、告警以及备份恢复演练自动化
- 持续优化移动端体验和无障碍操作
我们的目标,是让风起游戏后台成为一套真正可复用、可扩展,并且能够陪伴游戏长期运营的基础设施。
Built With
- actions?rbac?game
- api?docker?docker
- backend?game
- compose?caddy?github
- javascript?react?react
- operations?risk
- router?vite?node.js?express.js?postgresql?zod?vitest?rest
Log in or sign up for Devpost to join the conversation.