技术架构设计

前端技术栈
微信小程序原生框架(WXML/WXSS/JavaScript),使用微信开发者工具进行开发和调试。
采用组件化开发模式,提高代码复用性和可维护性。

后端技术栈
Java + Spring Boot框架,提供RESTful API接口。
数据库选用MySQL,配合MyBatis-Plus进行数据持久化操作。
Redis缓存高频访问数据,如剧本列表、用户状态等。

通信协议
HTTPS协议保证数据传输安全,WebSocket实现实时通信(如游戏内聊天、状态同步)。


核心功能模块设计

1. 用户系统

  • 微信授权登录,获取用户基本信息(openid、昵称、头像)。
  • 角色管理:玩家、主持人(DM)身份切换及权限控制。

2. 剧本管理

  • 剧本分类与检索:按题材(恐怖、推理等)、难度分级展示。
  • 剧本详情页:包含背景故事、角色列表、线索卡等元数据。

3. 房间与匹配系统

  • 创建/加入房间:支持公开房和密码房两种模式。
  • 自动匹配算法:根据玩家偏好(剧本类型、人数)快速组队。

4. 游戏流程控制

  • 阶段状态机:阅读剧本→角色扮演→搜证讨论→投票结案。
  • 主持人控制面板:推进阶段、分发线索、计时器等。

5. 实时交互功能

  • 文字聊天:支持公聊和私聊模式。
  • 线索共享:玩家上传图片或文本线索至公共白板。

数据库设计

表结构示例

  • user:用户基础信息(user_id, openid, nickname)。
  • script:剧本数据(script_id, title, genre, difficulty)。
  • room:房间信息(room_id, script_id, creator_id, status)。
  • game_session:游戏进度(session_id, current_stage, start_time)。

关系设计
多对多关系通过中间表实现,如user_room关联玩家与房间。


关键代码实现

微信小程序端示例

// 创建房间逻辑
Page({
  createRoom: function() {
    wx.request({
      url: 'https://api.example.com/room/create',
      method: 'POST',
      data: { scriptId: 123 },
      success: (res) => {
        wx.navigateTo({ url: '/pages/room?id=' + res.data.roomId });
      }
    });
  }
});

Java后端示例

@RestController
@RequestMapping("/room")
public class RoomController {
    @Autowired
    private RoomService roomService;

    @PostMapping("/create")
    public ResponseResult createRoom(@RequestBody RoomDTO dto) {
        return roomService.createRoom(dto.getScriptId());
    }
}

WebSocket消息处理

@ServerEndpoint("/ws/game/{sessionId}")
public class GameWebSocket {
    @OnMessage
    public void handleMessage(String message, Session session) {
        // 解析消息类型(聊天/线索/状态变更)并广播
    }
}


性能优化与安全

小程序端优化

  • 分包加载:将剧本资源、游戏逻辑拆分为独立分包。
  • 本地缓存:存储用户偏好、最近游玩记录。

服务端优化

  • 接口限流:防止高频请求攻击(如Guava RateLimiter)。
  • SQL优化:对剧本列表等高频查询添加索引。

安全措施

  • 参数校验:使用Spring Validation过滤非法输入。
  • 敏感操作鉴权:验证用户身份与房间归属关系。

剧本杀小程序的实现效果如下

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐