内容
<p align="center">
<img src="./web/public/og.png" alt="Tici Taca Toey" width="640">
</p>
<p align="center">
一个基于WebSocket的多人井字棋游戏,支持可配置的棋盘大小(2-12)、玩家数量(2-10)、获胜序列长度、团队、观众和二维码游戏邀请。<br>
2020年创建,2026年复兴,预计运行数十年。
</p>
<p align="center">
<a href="https://ticitacatoey.com">立即游玩</a> ·
<a href="https://stats.uptimerobot.com/Uta5Sjd5ef">游戏状态</a> ·
在印度班加罗尔以♥️打造
</p>
## 布局
- [`web/`](./web/) - React网页客户端(终端/matrix风格,暗黑模式优先)。运行时依赖:`react`和`react-dom`,无其他依赖。
由[Bun](https://bun.sh)打包和提供服务。
- [`server/`](./server/) - WebSocket游戏服务器。**零运行时依赖**,基于Bun原生功能构建。包含计时器、重连和恢复、机器人调度器和TTN游戏符号。
- [`sdk/`](./sdk/) - 零依赖机器人SDK:用约10行代码编写一个机器人。
- [`robots/`](./robots/) - 可运行的参考机器人(rando、greedo、minnie-max)。
- [`playground/`](./playground/) - 学习实验室:从记录的TTN游戏和自我对战中训练策略,然后将机器人设置为`cloney`。
- [`mcp/`](./mcp/) - MCP游戏服务:AI代理通过模型上下文协议连接并像其他人一样玩游戏。指向任何MCP客户端到`https://ticitacatoey.com/mcp` - 无需安装。
- [`mobile/`](./mobile/) - 裸React Native应用(`com.ticitacatoey`),运行时依赖仅`react` + `react-native`。
以前独立的[tici-taca-toey-server](https://github.com/team-black-box/tici-taca-toey-server)仓库已合并到此仓库下的`server/`。
## 快速开始
安装[Bun](https://bun.sh),然后:
```bash
bun install
# 终端1 - 游戏服务器在:8080
cd server && bun run dev
# 终端2 - 网页应用在:3000
cd web && bun run dev
# 终端3(可选)- 对战机器人
bun robots/greedy.ts
```
打开http://localhost:3000,输入一个昵称,开始游戏,然后点击"+ 机器人" - 或者与朋友分享邀请链接(或二维码)。
## 测试和验证
```bash
cd server && bun test # 引擎、获胜者 + 符号模糊测试、恢复、机器人、计时器
cd server && bun run bench # 获胜者计算基准测试
cd web && bun test # 二维码编码器固定测试
cd web && bun run build # 生产环境打包到web/dist
cd sdk && bun run typecheck # SDK + 参考机器人 + 学习实验室
bun playground/train.ts # 训练 + 评估学习实验室策略
cd mobile && bun install && bun run typecheck && bun run bundle:android
```
## 部署
网页应用是静态文件;服务器是一个小型进程。两者都可以免费托管 - 请参阅[`DEPLOYMENT.md`](./DEPLOYMENT.md)。
## 适用于代理和贡献者
从[`claude.md`](./claude.md)开始 - 它映射了文档、任务管理系统([`TODO.md`](./TODO.md),[`tasks/`](./tasks/)),以及本项目遵循的稳定性和个性规则。
## 许可证
[MIT](./LICENSE)