CampusKing 是一个基于 Spring Boot + Vue 的肉鸽卡牌PVP游戏原型。
当前项目包含:
- Java 后端:负责房间、对局状态、回合流转、卡牌结算和 WebSocket 广播。
- Vue 前端:提供首页、卡牌大全、对局页面、公告和文档弹窗。
- Java 卡牌类:每张卡是一个
GameCard实现,位于src/main/java/zx/campusking/cards/。 - 资源目录:图片和 favicon 放在项目根目录
resources/,可同步到 COS 桶。
- 支持
PVP双人房间和PVE人机房间。 - 每名玩家初始
100 HP,每回合默认抽2张牌。 - 每名玩家有
3个召唤位,每回合最多召唤1个角色。 - 角色牌可以攻击对方角色;对方场上没有角色时可以直接攻击玩家。
- 技能牌由具体卡牌类实现效果,已包含护盾、反制、群伤、持续增益、抽牌换牌、弃置手牌等机制。
根目录下的setup.sh
后端:
bash ./mvnw spring-boot:run前端:
cd webui
npm install
npm run devsrc/main/java/zx/campusking
├── cards # 卡牌定义与卡牌 hook
├── config # 配置读取、跨域和 WebSocket 配置
├── controller # REST API
├── model # 对局模型、DTO 和枚举
├── service # 房间、对局、战斗、状态、牌堆和资源服务
└── websocket # 房间内实时广播
resources
├── favicon.ico
└── images # 卡图、标题图、顶部背景等静态资源
webui
├── src # Vue 前端源码
└── package.json
原图放在 resources/original/images/,运行下面命令可将所有 PNG/JPG/JPEG 转成 WebP,并按相同目录结构输出到 resources/images/:
bash scripts/png-to-webp.sh可选参数:
bash scripts/png-to-webp.sh --quality 82 --force主要配置在 config/config.yaml:
server:
backendPort: 8080
frontendPort: 5173
frontend:
baseUrl: ""
apiBaseUrl: ""
wsBaseUrl: ""
githubUrl: "https://github.com/Tabris-ZX/CampusKing"
backend:
baseUrl: ""
asset:
baseUrl: ""
localRoot: "resources"
maxResponseBytes: 1048576
cards:
package: "zx.campusking.cards"
websocket:
gamePath: "/ws/game"server.backendPort 控制 Spring Boot 后端端口和 Vite 本地开发代理目标端口,server.frontendPort 控制 Vite 前端开发服务端口。
frontend.apiBaseUrl 或 backend.baseUrl 可指定前端请求的后端接口根地址。
资源路径示例:
resources/favicon.ico
resources/images/texture/characters/dragon.webp
resources/images/texture/skills/soda.webp