游戏开发Web 开发精选
Bannermarch
一款持久运行的浏览器中世纪策略游戏,玩家通过领地、联盟、市场与战争壮大自己的家族。
ReactTypeScriptCloudflare WorkersDurable ObjectsSQLiteWebSockets

我将 Bannermarch 打造成一款浏览器优先的持久策略游戏。玩家从无地骑士起步,逐渐建立拥有多个领地的家族。即使浏览器关闭,世界仍会继续运转。玩家可以管理生产、建造设施、招募步兵、调动资源和军队、袭击敌对家族、组建联盟、通过运输型市场交易,并在编年史中查看每一次结果。客户端使用 React 和 TypeScript,Cloudflare Workers、基于 SQLite 的 Durable Objects 与 WebSockets 则让模拟保持服务器权威和持久运行。
问题
持久策略游戏需要在玩家长时间离线时继续推进经济、行军和冲突,同时不能信任浏览器,也不能依赖一个成本高昂的全局游戏循环。即使两个家族几乎同时行动,多人操作也必须根据最新状态结算。
方案
React 客户端负责界面展示,并将命令发送给权威的 Cloudflare Worker。基于 SQLite 的 Durable Objects 分别管理每个家族和共享世界系统。玩家返回时,系统按需结算与时间相关的状态;不能等到下次登录的事件则由闹钟处理。独立的 WebSocket 战斗会话会广播经过验证的状态快照,用于实时联军战斗。
关键决策
- 经济、战役、市场和战斗均由服务器裁定。客户端不会决定影响其他玩家的结果。
- 使用按需资源结算代替全局 tick。每次读取或操作都会先结算已经过去的时间,并应用仓储上限和 72 小时累积限制。
- 为家族、编年史、地区、联盟、外交、市场、领土、战争、通信和账户设置各自的 Durable Objects。
- 通过幂等操作和 SQLite 事务,避免重试造成建筑、运输、招募或奖励重复。
- WebSocket 战斗会话让战场保持实时响应,Durable Object 仍是唯一可信状态来源。
- 密码与 Google 登录、一次性找回、HttpOnly 会话、Turnstile 验证和本地化的传令官邮件都运行在同一套 Worker 平台上。
状态
可玩的 Alpha 版本已在 play.bannermarch.com 上线,并持续开发。当前版本包含多领地经济、NPC 与玩家袭击、联盟、条约、运输型市场、领土战争、占领、通信和实时联军战斗。
您的团队需要类似的工作吗?
面向 AI、云和 Web 产品的高级工程服务,从架构设计到生产交付。