# 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 策略