Skip to content

Potatoblock-Dev/Liminal-Platform

Repository files navigation

阈限月台(Liminal Platform)

2D 横版 联机 小游戏:在一列可重组的列车上探索、协作、战斗与自动化。角色使用 Potatoblock 共用皮套,挂在 主站 网页体系里(登录、大厅入口、CD 上线)。

游玩(生产) game.potatoblock.com → 阈限月台
本仓 玩法 / 协议 / 资源的 source of truth
门户对接 Potatoblock-Game(只 vendor 挂载,不要在那里日常改玩法)

本地目录名可能仍是 potatoblock-avatar-lobby/,内容与本仓对应。


玩法

你在 月台 / 列车 世界里以皮套角色移动:走过道、跨车厢、捡放物资、与他人同房联机。

车厢(可拼接)

车厢 作用概要
动力车厢 锅炉与燃料;影响列车驱动
仓储车厢 物资存放与搬运
卫兵防御车厢 双联炮塔、弹药箱;可入座射击
绘轨车厢 探测 / 视野类能力(与自动化传感器配合)
枢机车厢 全屏控制台:为各节车厢编写自动化规则

列车可挂多节同类或不同类车厢;小地图 / 列车图用于定位。

核心循环

  • 移动与交互:行走、攀爬/过道、靠近设备按交互键(锅炉、炮塔座位、仓储、枢机控制台等)。
  • 库存与双手:地面掉落、背包、双手持物;弹药、煤炭、废料、炮塔弹等可搬运与装填。
  • 战斗:手持武器射击;卫兵车厢可入座操作炮塔(人数少时可一人控双塔)。
  • 列车驾驶:油门 / 刹车、燃料消耗;汽笛等反馈。
  • 自动化(枢机):在控制台为指定车厢写「条件 → 行为」规则(统一优先级列表;while/edge 为行属性;冲突域互斥)。详见 docs/liminal-auto-program.md

联机

公共月台或房间码进房;姿态、外观、聊天、开火、库存与世界快照由服务端权威同步。协议说明见 docs/liminal-protocol.md皮套大厅的 avatar 协议不是同一套)。


技术

不换引擎、不另起一套生产服:仍挂在 Potatoblock 同一实例 上。

选择
渲染 / 客户端 Canvas 2D;现有 JS 逐步迁 TypeScript(Vite:client/src/static/js/lp-*.js
服务端 Python + FastAPI;WebSocket 房间;库存 / 世界等权威逻辑可测、从 WS 处理拆出
改动顺序 协议(TS + Python + 文档)→ 服务端权威 → 画面 / 操作
不做 换 Godot 等引擎;为月台单独换 Node/Go/Rust 公网服;用 submodule 当 CD 主路径

前端 Phase 1 已迁网络会话:client/src/npm run buildlp-network.js / lp-session.js。发布前脚本会校验协议版本并对齐镜像:

python3 scripts/prepare_liminal_release.py

push-liminal-platform.py / 主站 push-github.py --package …/avatar-lobby 会自动跑上述准备,避免忘构建。


仓库分工

改玩法 / 协议 / 资源     →  本仓 Liminal-Platform
登录、大厅入口、MCS CD   →  Potatoblock-Game(vendor 进 games/* → CD → /app)

CD(配置驱动,无包名硬编码)

步骤 触发
SoT CI 本仓 .github/workflows/ci.yml — prepare + mapping 冒烟
Vendor 本仓 → Game .github/workflows/vendor-to-game.yml — 读 potatoblock-vendor.json
MCS Game 既有 deploy.ymldeploy.pyMCSM_UPLOAD_DIR 默认 /app

扩展新 SoT:复制 potatoblock-vendor.jsonmappings / prepare / runtime,不必改 Game 的 deploy.py

生产路径(与 config runtime 一致):

角色 路径
MCS 解压根 /app
月台代码 /app/games/liminal_platform
大厅代码 /app/games/avatar_lobby
HTTP /liminal-platform/avatar-lobby
静态 /static/games/liminal-platform/static/games/avatar-lobby

Liminal Actions Secret: POTATOBLOCK_GAME_TOKEN(Contents: Write on Potatoblock-Game)。

推送 .github/workflows/ LIMINAL_PLATFORM_GH_TOKEN 还需 Workflows 权限(classic PAT 的 workflow scope)。权限就绪后:

python3 ~/.cursor/skills/potatoblock-deploy/scripts/push-liminal-platform.py \
  --include-workflows --skip-build --message "ci: enable vendor Actions"

并在 Liminal 仓配置 Secret POTATOBLOCK_GAME_TOKEN。在此之前 workflow 文件只在本地 potatoblock-avatar-lobby/.github/workflows/;可用本地 vendor:

POTATOBLOCK_GAME_TOKEN=… python scripts/vendor_to_game.py
Token(本地 potatogame/.env 用途
LIMINAL_PLATFORM_GH_TOKEN 推送 本仓
GH_TOKEN 本地直推 Potatoblock-Game(可选;CI vendor 用 POTATOBLOCK_GAME_TOKEN
# 只更新本仓(推 main 后 Actions 可自动 vendor → Game → MCS)
python3 ~/.cursor/skills/potatoblock-deploy/scripts/push-liminal-platform.py \
  --message "feat: …"

# 本地手动 vendor(跳过 SoT Actions 时)
python3 ~/.cursor/skills/potatoblock-deploy/scripts/push-github.py \
  --worktree …/potatogame/.deploy-worktree \
  --package …/potatogame/potatoblock-avatar-lobby \
  --message "deploy: vendor liminal"

约定:Cursor skill liminal-platform-devpotatoblock-deploy;挂载包内见 SOURCE.md


本地运行

python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python run_local.py

本地鉴权为 stub(固定测试身份)。生产鉴权只在主站实例。

改 TS 客户端时:npm install && npm run build(或依赖推送脚本里的 prepare)。


目录结构

Liminal-Platform/
├── run_local.py              # 仅本地启动
├── requirements.txt
├── package.json / client/    # TS 源 → Vite 构建进 static/js
├── docs/
│   ├── liminal-protocol.md   # 月台 WS 协议
│   ├── liminal-auto-program.md
│   ├── networking-plan.md    # 皮套大厅联网(旁路,非月台协议)
│   ├── skin-format.md
│   └── motion-references.md
├── potatoblock-vendor.json   # SoT → Game 路径映射(CD 扩展面)
├── scripts/prepare_liminal_release.py
├── scripts/potatoblock_vendor.py / vendor_to_game.py
├── .github/workflows/        # ci + vendor-to-game
├── game/Liminal_Platform/    # 开发镜像(与挂载包同步)
└── app/
    ├── main.py / routers/    # 仅本地 stub(不上 Game 仓)
    └── games/
        ├── liminal_platform/ # 月台挂载包(主站 vendor 目标)
        ├── avatar_lobby/     # 皮套大厅(同包 vendor)
        └── common/

game/Liminal_Platform/app/games/liminal_platform/ 应一致。一侧改完后用 rsync 或 prepare 脚本对齐。

仅本地、不进主站包: run_local.pyapp/main.pyapp/routers/app/static/var/、音频 static/audio/.work/ 等中间产物。


文档


License / 素材

代码归属 Potatoblock-Dev。第三方素材(Kenney Mobile Controls、Kenney Game Icons、Kenney Input Prompts Pixel 等)遵循其各自许可证(多为 CC0);使用时保留原作者说明即可。图标目录见 app/games/liminal_platform/static/img/ui/

About

Potatoblcok game的Liminal Plaform专属仓库

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages