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