网页版 岛屿塔防沙盒,玩法模仿 Bad North:随机群岛、海滩登陆、布置兵团、保护屋舍。画面用 矮人要塞(Dwarf Fortress)式 ASCII / 16 色字符,不依赖图片资源。
打开 index.html(本地建议用静态服务器):
python3 -m http.server 8080
# 浏览器访问 http://localhost:8080或 npm start。
程序化生成一整条南境岛链(默认 16 座)。从西侧家园出发,沿航线推进:
- 在海图上选择已侦察的岛(可见本场 征兆 与据点 圣物)
- 布置阶段把默认的四支部队(两盾、一弓、一枪)放到陆地上,用右键或
R旋转朝向(地图上有箭头) - 按
G开战;北蛮长船从海滩方向靠岸 - 守住屋舍直到所有波次结束 → 按残存屋舍获得钱币;守岛获得该岛圣物
- 用钱币招募新队长(含 投矛手);兵团在战斗中减员,队长死则该编制消失
- 约半数胜利后会遇到 航程抉择(搜刮、收编、神龛、热病、盐商、改道)
指定 种子 / 生态 / 威胁 即时刷岛,用地形笔刷改地块,随时刷北蛮、长船或己方兵。适合研究地形与阵型,不走战役经济。
生态:沃野、岩礁、泽地、霜岛、火山、松林。
| 字符 | 兵种 | 职责 |
|---|---|---|
☻ @ |
盾兵 | 近战抗打,卡海滩与路口 |
} |
弓手 | 远程;高地射程与伤害加成,树木/石墙挡视线 |
↑ |
枪兵 | 正面对冲锋高伤,侧后较弱 |
‡ |
投矛手 | 中距游猎,贴身就退;可招募或航程收编 |
v V x Ω |
北蛮 | 掠袭者、蛮力士、投斧手、领主 |
Ψ |
潮萨满 | 远程诅咒,命中后使南境兵减速 |
d |
猎犬 | 追兵不追屋,速度快 |
敌人会寻路扑向最近的屋舍(猎犬除外);屋舍耐久耗尽即焚毁。队长击杀可累积经验,满额后升级扩编。
每座岛藏一件圣物(南灯、盐风旗、鹰巢石、号角石、潮门、血石、麦仓印、古墙砖、霜牙、松心)。守住后永久生效。登岛前会看到本场征兆:晴潮、海雾、风暴、昏暮、大潮、收获月、鸦群。
每座岛用种子噪声 + 多种岛形蒙版生成(团块、双丘、新月、山脊、海湾、分岛):
- 不规则岸线、双丘地峡、内湖、斜坡;噪声尺度与岛形每局都会变
- 悬崖贴水会软化成可登陆岸线;登陆方向不足时会切开海滩缺口
- 海滩登陆点按「朝向开阔海域的方向」检测
- 房屋放在内陆,并保证从至少一个登陆点可以走到
- 失败会自动重试;最坏情况回退到保底岛
同一数字/字符串种子会得到同一张岛。
鼠标左键 点=选中/就位 拖=平移镜头
鼠标右键 点=转向 拖=平移
悬停 就位预览(青可落 / 红不可)+ 浮动提示
滚轮 缩放 Shift+滚轮 旋转朝向
WASD 平移镜头(按住,Shift 加速)
方向键 / HJKL 移动光标(键盘落子)
, . 或 = 缩放 F / Home 对准选中兵团
1–9 选中对应兵团(并对准)
[ ] 减速 / 加速
空格 战斗暂停 / 海图登陆
G 开战 R 旋转(再点同一兵团也可) Tab 下一兵团
E 撤退 U 号角(每场一次,持号角石可两次)
海图 拖/滚轮/WASD 平移缩放 点岛选中,再点登陆 右键立刻登
Tab 换岛 Enter 登陆 F 对准 0 全图 Q 暂停
P 调色 - 静音
航程界面 1 / 2 选择
沙盒 Y 萨满 I 猎犬 N 蛮兵 B 长船 C 己方
顶栏按钮 开战 / 变速 / 缩放 / 工具(嵌在标题栏下,不挡地图)
底栏编号 快速切换兵团(当前选中高亮)
窄屏 / 触控会切到紧凑布局:左右栏收成底抽屉,底栏为情报 / 部队 / 开战 / 转向 / 菜单;其上方是可横滑的兵团条(含缩放与变速)。
- 点一下:选中士兵或在空地就位(布置时镜头不再跟着手指跑);再点同一兵团会转向
- 海图:点岛选中并对准,再点一次登陆;长按立刻登。列表只移动镜头
- 单指拖:平移镜头(海图同样可拖)
- 双指捏:缩放(海图同样可捏)
- 长按 / 转向:旋转朝向(顶栏会显示「朝南↓」,并弹出提示)
- 沙盒刷地、刷兵、新岛放在「情报」抽屉,不占地图
- 自动用较小地图、限制像素密度、关掉海浪扫描线,减轻发热
建议把页面加到主屏幕(全屏)。
- 岛屿约 80–108 × 60–84(威胁越高越大),外圈是深海;沙盒可选 小/中/大(大图可达约 120×90)
- 战斗用镜头:点一下操作,拖动画布平移;滚轮或
,.缩放,不再把整座岛压进一屏 - 就位即可:部署点是兵团的常驻站位,朝向用箭头标在地图上;开战后天兵整团去歼灭北蛮,并优先保护屋舍
- 守住一岛后,未全灭的兵团恢复满员;全灭的队长不会复活
- 北蛮乘长船从海平线驶来,贴岸后才下船
- 海图约 16 岛;高威胁波次可能双向登陆
- 烽火台 ¥:附近弓手射程与伤害提升
- 乡勇:屋舍首次遇袭时冲出村民拖延;持南灯 / 收获月则更多
- 号角 U:每场战斗一次(号角石两次),短时大幅减速北蛮
- Esc:打开暂停菜单(战役 / 战斗 / 沙盒)
- 空格:战斗内软暂停(只冻时间)
- F5:快速写入自动档(战斗中会带战局快照)
- F9:读取最近存档
- 暂停菜单可写入 自动 / 1 / 2 / 3 四个槽位(v4,兼容 v2/v3)
- 调色与静音写入本地设置,刷新后保留
- 切换浏览器标签会自动暂停战斗
详见 docs/ARCHITECTURE.md。分层摘要:
- Core:
events总线 ·config数值 ·rng/util·content(圣物 / 征兆 / 航程) - Domain:
army·campaign·save·waves - Simulation:
sim(Battle)·mapgen·pathfind - Presentation:
render·ui·screens·hud·audio - Application:
game(模式状态机 +dispatch)·input·app(boot)
所有键盘/鼠标/按钮最终进入 Game.dispatch(act, arg),避免 UI 与模拟互相缠绕。
index.html
docs/ARCHITECTURE.md
css/style.css
js/
events.js config.js util.js rng.js
tiles.js names.js content.js
pathfind.js mapgen.js
army.js campaign.js save.js waves.js
sim.js
render.js audio.js ui.js screens.js hud.js
input.js game.js app.js
tests/test.js
npm test原版 Bad North 的美术与关卡仍归其作者。本仓库是独立的 ASCII 致敬与沙盒习作,非官方移植。