virtheart 70e6b5808b feat: 新增游戏界面样式与组件
refactor: 重构游戏面板布局与交互逻辑

style: 优化CSS变量与响应式设计

docs: 添加游戏模型与工具函数文档

chore: 整理项目结构与资源文件
2026-04-29 13:32:22 +08:00

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。这些图是按 docs/awesome-gpt-image-2-prompts/README_zh-CN.md 的思路为本项目生成并接入的,当前已覆盖主要地点背景图。

运行方式

  1. 创建环境变量文件:
cp .env.example .env
  1. 安装依赖:
pnpm install
  1. 初始化数据库:
pnpm db:migrate
  1. 启动前后端开发环境:
pnpm dev
  1. 打开:

Docker 部署

项目现在支持用一个镜像同时承载前端和后端。容器启动时会自动执行数据库迁移,然后由 Fastify 同时提供 /api/* 和前端静态页面。

  1. 构建镜像:
docker build -t tinywaste .
  1. 启动容器:
docker run -d \
  --name tinywaste \
  -p 3001:3001 \
  -v tinywaste-data:/data \
  tinywaste
  1. 打开:

说明:

  • 默认数据库文件在容器内 /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 策略
S
Description
No description provided
Readme 58 MiB
Languages
TypeScript 76.8%
CSS 20.7%
Python 1.6%
JavaScript 0.5%
Dockerfile 0.2%
Other 0.2%