Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GOOD SOUTH — 南境据点

网页版 岛屿塔防沙盒,玩法模仿 Bad North:随机群岛、海滩登陆、布置兵团、保护屋舍。画面用 矮人要塞(Dwarf Fortress)式 ASCII / 16 色字符,不依赖图片资源。

打开 index.html(本地建议用静态服务器):

python3 -m http.server 8080
# 浏览器访问 http://localhost:8080

npm start

两种模式

战役

程序化生成一整条南境岛链(默认 16 座)。从西侧家园出发,沿航线推进:

  1. 在海图上选择已侦察的岛(可见本场 征兆 与据点 圣物
  2. 布置阶段把默认的四支部队(两盾、一弓、一枪)放到陆地上,用右键或 R 旋转朝向(地图上有箭头)
  3. G 开战;北蛮长船从海滩方向靠岸
  4. 守住屋舍直到所有波次结束 → 按残存屋舍获得钱币;守岛获得该岛圣物
  5. 用钱币招募新队长(含 投矛手);兵团在战斗中减员,队长死则该编制消失
  6. 约半数胜利后会遇到 航程抉择(搜刮、收编、神龛、热病、盐商、改道)

沙盒

指定 种子 / 生态 / 威胁 即时刷岛,用地形笔刷改地块,随时刷北蛮、长船或己方兵。适合研究地形与阵型,不走战役经济。

生态:沃野、岩礁、泽地、霜岛、火山、松林

兵种(Bad North 对应)

字符 兵种 职责
@ 盾兵 近战抗打,卡海滩与路口
} 弓手 远程;高地射程与伤害加成,树木/石墙挡视线
枪兵 正面对冲锋高伤,侧后较弱
投矛手 中距游猎,贴身就退;可招募或航程收编
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。分层摘要:

  • Coreevents 总线 · config 数值 · rng / util · content(圣物 / 征兆 / 航程)
  • Domainarmy · campaign · save · waves
  • Simulationsim(Battle)· mapgen · pathfind
  • Presentationrender · ui · screens · hud · audio
  • Applicationgame(模式状态机 + 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 致敬与沙盒习作,非官方移植。

About

A web game like BadNorth.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages