Skip to content
This repository was archived by the owner on Oct 21, 2026. It is now read-only.
WarsOnPaperOrgPublic archive

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

纸上谈兵 / Wars on Paper

网页端实时领土争夺游戏:地图由上百个城市节点组成,每座城市拥有一块边缘随机的领土并铺满全图;玩家占领城市吞并领土,在 10–20 分钟内以城市数量与领土占比决出胜负。

  • 单机:与 1–7 个 AI 抢先扩张、争夺城市。
  • 多人:单房间 16–32 人在线乱斗。
  • 技术:免编译 —— 原生 ES Module + Canvas 2D + Node.js,改完刷新即生效。

当前状态

v1.10.0 — 机制扩充完成,等待验收。「多人乱斗」进入房间大厅:创建/加入房间,服务器权威 10Hz 同步,最多 32 人;支持中途加入与断线重连。单人模式也已完整(设置页、3 档 AI、科技、跨越/渡海)。

文档

文档 内容
docs/PLAN.md 玩法设计、数值、技术架构、里程碑计划
docs/VERSIONING.md 版本号规则、协议/状态版本、发布流程
AGENT.md AI 协作约定(面向 Agent 与协作者)
CHANGELOG.md 变更记录

启动方式

需要 Node.js ≥ 20(当前无构建步骤,npm install 仅安装 ws,多人模式 M4 才用到)。

npm install          # 可选,仅安装 ws(唯一运行依赖)
npm run dev          # 开发服务器 + 热刷新,浏览器打开 http://localhost:8787
npm run server       # 静态资源 + 多人 WebSocket 服务器(M4 起提供联机)
npm test             # node --test

开发服务器默认只监听 127.0.0.1:8787(8080 常被其他工具占用),可用 PORT=8788 npm run dev 更换端口。

多人游戏(M4)

npm run dev
# 浏览器打开 http://localhost:8787/ → 多人乱斗
# 两个浏览器(或不同窗口)分别建房/加入 → 房主开始

房间码形如 QW5ZN;刷新页面会用当前标签页的 token 自动重连。最多 32 人,240 城地图默认支持 32 个出生点。压测:npm run bench(见 docs/PERF.md)。

当前系统:三兵种(步/骑/车,克制与攻城加成)、3 系 × 3 层科技树、城市建筑槽(市集/粮仓/兵营/城墙)、外交(结盟/停战/背叛)、无尽模式(限时/无尽可在设置页切换)、行军姿态(常规/突击/固守/袭扰)、将领(招募/派驻/特性/成长)、地图目标(金矿/粮仓/要塞与战略目标胜利)、战场指令(强攻/围城/集火/撤退)、城市专精(军事/商业/农业)与贸易收入、世界事件与 AI 反制联盟、开局剧本(经典/资源争夺/闪电战)、全屏国家总览(Tab,资源图标 + 全城状态表)、新手引导与快捷进攻、Shift 多选批量调动。

机制一览

无尽模式、教程、三兵种、9 项科技、4 种建筑、外交、将领、行军姿态、战场指令、地图据点与战略目标胜利、城市专精与贸易、世界事件、AI 反制联盟/追赶、开局剧本、多线 AI 与难度决策质量。

教程模式

主页「教程模式」进入 40 城小地图,按 7 步引导学习选中、招募、姿态、将领、建筑、科技与占领,完成后可直接开始正式对局。

玩法说明

完整规则见 /help.html(主页「玩法说明」)。

单人游戏(M3)

npm run dev
# 浏览器打开 http://localhost:8787/ → 单人游戏

也支持直接访问 /game.html?seed=123&cities=160&ai=2&difficulty=normal&minutes=10 指定全部参数。对局中:单击城市选中,左侧「派兵数量」滑条决定这次派出多少兵,然后从选中的城市拖到目标城市:拖到自己的城市可跨任意距离调兵,攻击其他城市则只能是相邻或渡海城市。顶栏可暂停与加速。

地图原型(M1)

npm run dev
# 浏览器打开 http://localhost:8787/tools/mapdebug.html

可切换种子与城市数(60 / 100 / 160 / 240 / 360)、显示邻接线、悬停查看城市信息;主菜单页脚也有入口。同一种子始终生成同一张地图。地图为大长方形世界:海洋占 70%,2–4 块独立生成的大陆形状与位置各不相同,空旷海域会生成 1–3 座小岛,海岸线由城市边缘构成,没有湖泊;扩大世界不会改变陆地总面积。

部署

见 docs/DEPLOY.md(Nginx/HTTPS、systemd、Docker、健康检查)。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages