2026-03-31 18:01:57 +08:00
|
|
|
|
# boardgame-core
|
|
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
基于 [Preact Signals](https://preactjs.com/guide/v10/signals/) 的桌游状态管理库。
|
2026-03-31 18:01:57 +08:00
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
使用响应式状态、实体集合、空间区域和命令驱动的游戏循环来构建回合制桌游。
|
2026-04-02 21:58:11 +08:00
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
## 特性
|
2026-03-31 18:01:57 +08:00
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
- **响应式状态管理**:基于 [@preact/signals-core](https://preactjs.com/guide/v10/signals/) 的细粒度响应
|
|
|
|
|
|
- **类型安全**:完整的 TypeScript 支持,启用严格模式和泛型上下文扩展
|
|
|
|
|
|
- **区域系统**:支持多轴定位、对齐和洗牌的空间管理
|
|
|
|
|
|
- **命令系统**:CLI 风格的命令解析,带 schema 校验、类型转换和玩家输入提示
|
|
|
|
|
|
- **游戏生命周期管理**:`GameHost` 类提供清晰的游戏设置/重置/销毁生命周期
|
|
|
|
|
|
- **确定性 RNG**:Mulberry32 种子伪随机数生成器,用于可复现的游戏状态
|
2026-04-01 22:00:10 +08:00
|
|
|
|
|
2026-04-04 13:20:34 +08:00
|
|
|
|
## 快速开始
|
2026-04-01 22:00:10 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm install boardgame-core
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
```ts
|
|
|
|
|
|
import { createGameHost } from 'boardgame-core';
|
|
|
|
|
|
import * as tictactoe from 'boardgame-core/samples/tic-tac-toe';
|
2026-04-03 11:20:35 +08:00
|
|
|
|
|
2026-04-04 13:05:08 +08:00
|
|
|
|
const host = createGameHost(tictactoe);
|
|
|
|
|
|
await host.setup('setup');
|
|
|
|
|
|
|
|
|
|
|
|
// 监听状态变化
|
|
|
|
|
|
effect(() => {
|
|
|
|
|
|
const state = host.state.value;
|
2026-04-04 13:20:34 +08:00
|
|
|
|
console.log(`${state.currentPlayer}'s turn`);
|
2026-04-04 13:05:08 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
2026-04-04 13:20:34 +08:00
|
|
|
|
// 处理玩家输入
|
|
|
|
|
|
const error = host.onInput('play X 1 2');
|
2026-04-03 10:07:12 +08:00
|
|
|
|
```
|
2026-04-02 21:58:11 +08:00
|
|
|
|
|
2026-04-04 13:20:34 +08:00
|
|
|
|
## 文档导航
|
2026-04-04 13:05:08 +08:00
|
|
|
|
|
2026-04-04 13:20:34 +08:00
|
|
|
|
| 文档 | 说明 |
|
2026-04-01 22:00:10 +08:00
|
|
|
|
|---|---|
|
2026-04-04 13:20:34 +08:00
|
|
|
|
| [使用 GameHost](docs/game-host.md) | GameHost 生命周期、响应式状态、事件处理 |
|
|
|
|
|
|
| [编写 GameModule](docs/game-module.md) | 定义状态、注册命令、prompt 系统、Part/Region 使用 |
|
|
|
|
|
|
| [API 参考](docs/api-reference.md) | 所有导出 API 的完整列表 |
|
|
|
|
|
|
| [开发指南](docs/development.md) | 安装、构建脚本、测试命令 |
|
2026-04-01 22:00:10 +08:00
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
|
|
MIT
|