feat: 实现游戏核心功能与前端界面
- 添加游戏核心系统:战斗、任务、日志、随机数生成等 - 实现前端主界面、HUD、底部导航和各类卡片组件 - 添加用户认证系统与游戏存档持久化 - 配置项目基础架构与开发环境 - 补充文档说明与Docker部署支持
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# 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 策略
|
||||
Reference in New Issue
Block a user