boardgame-core/README.md

53 lines
1.8 KiB
Markdown
Raw Normal View History

# boardgame-core
2026-04-04 13:05:08 +08:00
基于 [Preact Signals](https://preactjs.com/guide/v10/signals/) 的桌游状态管理库。
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-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);
2026-04-06 09:46:59 +08:00
await host.start('start');
2026-04-04 13:05:08 +08:00
// 监听状态变化
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 使用 |
2026-04-04 22:19:36 +08:00
| [棋子、区域与 RNG](docs/parts-regions-rng.md) | Part 创建、池管理、区域操作、RNG 使用 |
| [动画与状态同步](docs/animation-sync.md) | produceAsync 和中断机制 |
2026-04-04 13:20:34 +08:00
| [API 参考](docs/api-reference.md) | 所有导出 API 的完整列表 |
| [开发指南](docs/development.md) | 安装、构建脚本、测试命令 |
2026-04-01 22:00:10 +08:00
## License
MIT