# 版本号验证功能测试指南 ## 功能概述 实现了客户端和服务端的版本号验证机制,确保只有版本匹配的客户端才能登录或注册游戏。 ## 实现的功能 ### 1. 客户端修改 - 在 `MainGame.gd` 中定义了客户端版本号:`const client_version :String = "1.0.1"` - 在 `TCPNetworkManager.gd` 中修改了登录和注册请求,添加了版本号字段 - 在 `login_panel.gd` 中添加了版本号显示功能 ### 2. 服务端修改 - 在 `TCPGameServer.py` 中定义了服务端版本号:`server_version: str = "1.0.1"` - 添加了版本号验证函数 `_check_client_version()` - 在登录和注册处理中添加了版本号验证逻辑 - 在服务器启动时显示版本信息 ## 测试步骤 ### 测试1:版本匹配(正常情况) 1. 确保客户端和服务端版本号都是 "1.0.1" 2. 启动服务器,应该看到: ``` 萌芽农场游戏服务器 v1.0.1 服务器地址: 0.0.0.0:4040 ================================================== ``` 3. 启动客户端,应该看到: ``` 萌芽农场客户端 v1.0.1 启动 ``` 4. 在登录界面应该显示:`萌芽农场 v1.0.1 - 欢迎使用` 5. 尝试登录或注册,应该正常工作 ### 测试2:版本不匹配(客户端版本较低) 1. 修改客户端版本号为 "0.9.0": ```gdscript const client_version :String = "0.9.0" ``` 2. 保持服务端版本为 "1.0.0" 3. 重新启动客户端 4. 尝试登录,应该收到错误消息: ``` 版本不匹配!客户端版本: 0.9.0, 服务端版本: 1.0.1,请更新客户端 ``` 5. 尝试注册,应该收到相同的错误消息 ### 测试3:版本不匹配(客户端版本较高) 1. 修改客户端版本号为 "1.1.0": ```gdscript const client_version :String = "1.1.0" ``` 2. 保持服务端版本为 "1.0.1" 3. 重新启动客户端 4. 尝试登录或注册,应该收到版本不匹配的错误消息 ### 测试4:空版本号处理 1. 修改客户端代码,发送空的版本号 2. 尝试登录或注册,应该被拒绝 ## 预期结果 ### 成功情况 - 版本匹配时,登录和注册功能正常工作 - 客户端和服务端都显示正确的版本信息 ### 失败情况 - 版本不匹配时,登录和注册被拒绝 - 显示清晰的错误消息,指出版本不匹配的具体信息 - 服务端记录相应的警告日志 ## 日志示例 ### 服务端日志(版本匹配) ``` [INFO] [SERVER] TCP游戏服务器初始化 - 版本: 1.0.1 [INFO] [SERVER] 用户 12345 登录成功 ``` ### 服务端日志(版本不匹配) ``` [WARNING] [SERVER] 用户 12345 登录失败: 版本不匹配 (客户端: 0.9.0, 服务端: 1.0.1) ``` ## 注意事项 1. **版本号格式**:建议使用语义化版本号格式(如 1.0.0) 2. **向后兼容性**:如果需要支持多个版本,可以修改验证逻辑 3. **版本更新策略**: - 主版本号变更:不兼容的重大更新 - 次版本号变更:向后兼容的功能更新 - 修订版本号变更:向后兼容的问题修复 ## 扩展功能建议 1. **版本兼容性矩阵**:支持多个兼容版本 2. **自动更新提示**:客户端检测到版本不匹配时提供更新链接 3. **最低版本要求**:设置服务端支持的最低客户端版本 4. **版本信息API**:提供接口查询当前服务端版本和兼容的客户端版本列表