Files
TinyWaste/README.md
T
virtheart e783e6e533 feat: 实现游戏核心功能与前端界面
- 添加游戏核心系统:战斗、任务、日志、随机数生成等
- 实现前端主界面、HUD、底部导航和各类卡片组件
- 添加用户认证系统与游戏存档持久化
- 配置项目基础架构与开发环境
- 补充文档说明与Docker部署支持
2026-04-28 22:16:58 +08:00

124 lines
3.6 KiB
Markdown

# TinyWaste
TinyWaste 是基于 `docs/` 里的 GDD、系统设计、存档后端设计和 QA 清单落地的一版可运行在线生存游戏原型。它不是单机本地存档,而是账号登录 + 服务端判定 + 数据库存档的结构,用户登录后可以继续上次进度。
## 技术栈
- `pnpm workspace`
- `apps/web`: React 19 + Vite + TypeScript + React Query
- `apps/api`: Fastify + TypeScript
- `packages/game-core`: 纯逻辑模拟层,负责状态推进、战斗、事件、交易、制作
- `packages/content`: 数据驱动内容层,承载地图、地点、敌人、事件、配方、任务
- `SQLite + Drizzle ORM`: 用户、会话、主存档持久化
- `HttpOnly Session Cookie`: 账号登录态
## 当前实现范围
- 用户注册 / 登录 / 登出
- 每个账号一份主存档,所有行动都会回写数据库
- 服务端权威推进:移动、地点行动、事件选择、战斗、制作、交易、休息、使用物品、装备切换
- 基于文档设计的主线推进骨架:
- `home`
- `roadside`
- `rain_farm`
- `village_market`
- `city_edge`
- `subway_entrance`
- `sewer`
- `vault_gate`
- 前端已实现账号页、建档页、主游戏界面、日志、任务、库存、战斗和事件弹层
## GPT-Image-2 资源
地点视觉资源已放在 [apps/web/public/generated](/Users/virtheart/Documents/CloneProjects/TinyWaste/apps/web/public/generated)。这些图是按 `docs/awesome-gpt-image-2-prompts/README_zh-CN.md` 的思路为本项目生成并接入的,当前已覆盖主要地点背景图。
## 运行方式
1. 创建环境变量文件:
```bash
cp .env.example .env
```
2. 安装依赖:
```bash
pnpm install
```
3. 初始化数据库:
```bash
pnpm db:migrate
```
4. 启动前后端开发环境:
```bash
pnpm dev
```
5. 打开:
- Web: [http://localhost:5173](http://localhost:5173)
- API: [http://localhost:3001/api/health](http://localhost:3001/api/health)
## Docker 部署
项目现在支持用一个镜像同时承载前端和后端。容器启动时会自动执行数据库迁移,然后由 Fastify 同时提供 `/api/*` 和前端静态页面。
1. 构建镜像:
```bash
docker build -t tinywaste .
```
2. 启动容器:
```bash
docker run -d \
--name tinywaste \
-p 3001:3001 \
-v tinywaste-data:/data \
tinywaste
```
3. 打开:
- 应用首页: [http://localhost:3001](http://localhost:3001)
- 健康检查: [http://localhost:3001/api/health](http://localhost:3001/api/health)
说明:
- 默认数据库文件在容器内 `/data/tinywaste.db`,上面的 volume 用来持久化存档数据。
- 如果宿主机端口想改成 `8080`,只需要把参数改成 `-p 8080:3001`,容器内端口仍然是 `3001`
- `WEB_ORIGIN` 在 Docker 场景下一般不需要额外修改,因为前后端由同一个服务同源提供。
- 如果没有传 `SESSION_SECRET`,容器会在启动时自动生成一个临时密钥,方便本地直接跑;正式环境建议显式传入固定长随机串。
## 常用命令
```bash
pnpm build
pnpm test
pnpm --filter @tinywaste/api db:migrate
```
## 目录结构
```text
apps/
api/ Fastify API、认证、会话、存档持久化
web/ React 前端
packages/
game-core/ 游戏核心模拟
content/ 地图与内容数据
docs/ 游戏设计、系统设计、运行发布、QA 与 GPT-Image-2 提示词参考
```
## 后续扩展建议
- 增加多存档槽位与账号资料页
- 给事件、敌人、道具补更多 GPT-Image-2 资产
-`game-core` 和 API 补更多集成测试
- 接入正式生产数据库和 HTTPS Cookie 策略