Skip to content

Repository files navigation

GeneralGame ⚔️

本项目的是在多人在线真人对战小游戏 Generals.io 上开发的人机对战版本 Generals 游戏。

generals.io 风格的人机对战实时棋盘策略网页游戏。纯前端实现,零后端,静态部署在 GitHub Pages。

传动门

  • 🎮 WASD 操控,开箱即玩
  • 🤖 4 种 AI 对手:贪心策略 / LLM / 用户自写 bot / 机器学习
  • 🌫️ 战争迷雾、城市与主城、移动队列
  • 🔐 LLM Key 双通道安全(自填 Key + 共享代理),密钥绝不进入前端

当前进度:M1 核心(人 vs 贪心)已完成。LLM / 用户 bot / ML bot 为后续里程碑。

玩法

占领空地扩张、攻下中立城市加速产兵、最终攻占对方主城 ★ 消灭对手。

作用
W A S D 向 上/左/下/右 派兵(默认半兵)
Shift + 方向 全兵出击(留 1)
E 选中自己的主城
Q 清空移动队列
Space 暂停 / 继续
🖱️ 点击 选中己方格

详细规则见 docs/DESIGN.md

本地开发

本项目用 pnpm(包存全局 store,省磁盘、跨项目复用)。

npm install -g pnpm   # 一次性,安装 pnpm 工具
pnpm install          # 装依赖(进全局 store + 本地软链接)
pnpm dev              # http://localhost:5173
pnpm build            # 类型检查 + 产物到 dist/
pnpm preview

部署(GitHub Pages)

  1. push 到 main 触发 .github/workflows/deploy.ymlpnpm install --frozen-lockfilepnpm build → 上传 dist/
  2. 仓库 Settings → Pages → Source 选 GitHub Actions
  3. 访问 https://<用户名>.github.io/GeneralGame_StaticVersion/

务必把 pnpm-lock.yaml 一并提交,CI 才能用 --frozen-lockfile 做可复现的快速安装。

LLM 对手与 Key 安全

纯静态前端里任何内置 Key 都会泄露(F12 可读)。本项目采用双通道:

  • 自填 Key(BYOK,推荐):在「设置」页填你自己的 GLM/DeepSeek Key,仅存浏览器 localStorage,请求直达 LLM。
  • 共享代理:项目方部署 proxy/(Cloudflare Worker),Key 作为服务端 secret,前端只持有公开的代理 URL。

Key 优先级:自填 > 共享代理 > 无(回退贪心)。共享代理的硬化与「Key 未泄露」验证见 PLAN.md §4。

仓库结构

src/
├── game/        纯逻辑层:types / engine / map / loop + ai/
├── net/         LLM 客户端(M2)
├── components/  Board(Canvas) / HUD
└── pages/       Home / Game / Settings
proxy/           共享 Key 代理(Cloudflare Worker)
train/           ML bot 离线训练(Python)
bots/            示例用户 bot
docs/            设计文档 / bot 协议

路线图

  • M1 人 vs 贪心,完全可玩
  • M2 LLM 对手(GLM/DeepSeek)+ 用户自写 bot 沙箱
  • M3 机器学习 bot(离线训练 + 浏览器推理)

参考

About

This is a design that imitates the classic website game generals.io, and attempts to complete the man-machine battle game by accessing ai. In the future, it may be considered to make it a battle of bot that can be designed for many people or accessed to individuals.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages