# TcpServer **Repository Path**: lazuli/TcpServer ## Basic Information - **Project Name**: TcpServer - **Description**: 这是用C#写的socket tcp后端程序,为【solo】提供联网服务,具备心跳检测、兼容大小端。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2020-07-15 - **Last Updated**: 2026-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Solo TCP Server Solo TCP Server 是 Solo Combat Lab 的配套 C# 1v1 游戏服务端,负责账号、登录、房间、聊天和战斗消息转发,并包含基础移动与攻击合法性校验。项目面向游戏开发实习作品集展示,提供无需数据库的内存运行模式,下载后即可配合两个 Unity 客户端完成本机联机对战。 配套 Unity 客户端仓库: https://gitee.com/lazuli/unity_online_solo ## 下载运行 Windows 10/11 免安装版,完整解压后双击 `SoloTcpServer.exe`(或 `Start-Server.cmd`),即可使用内存账号模式启动本机服务器,不需要安装 MySQL。 服务端最新发行版: https://gitee.com/lazuli/TcpServer/releases/latest 服务端 Windows v1.0.0 直接下载: https://gitee.com/lazuli/TcpServer/releases/download/v1.0.0/SoloTcpServer-v1.0.0-Windows-x64.zip 配套 Unity 客户端发行版: https://gitee.com/lazuli/unity_online_solo/releases/latest ## 运行配置 ### 本机双开测试(推荐) 使用发行版测试时,先双击 `SoloTcpServer.exe`,再把客户端 ZIP 分别解压成 `Client-A`、`Client-B` 两个目录,并分别启动两个 `SoloCombatLab.exe`。两个客户端使用不同账号登录:一端创建房间,另一端刷新并加入,最后由房主开始游戏。 本地演示不需要安装 MySQL。PowerShell 进入仓库后运行: ```powershell .\Run-DevServer.ps1 ``` 脚本会借用已安装 Unity 编辑器附带的 C# 编译器,启动 `127.0.0.1:3913` 的内存服务器。默认 Unity 路径为 `D:\UnityEditors\Editor\Unity.exe`;如果编辑器不在这里,可这样指定: ```powershell .\Run-DevServer.ps1 -UnityEditorPath "D:\你的路径\Editor\Unity.exe" ``` 也可以在 Visual Studio 中编译后直接运行 `TCPServer.exe`。内存模式支持注册、登录、取名、房间和战斗;服务器退出后测试账号会清空。`--dev` 参数仍可用于显式指定内存模式。 ### MySQL 持久化模式 启动前通过环境变量提供数据库配置,仓库不保存真实凭据: - `SOLO_DB_NAME`:数据库名,必填 - `SOLO_DB_HOST`:数据库地址,必填 - `SOLO_DB_USER`:数据库用户,必填 - `SOLO_DB_PASSWORD`:数据库密码,必填 - `SOLO_DB_PORT`:数据库端口,默认 `3306` - `SOLO_LISTEN_IP`:监听地址,默认 `0.0.0.0` - `SOLO_LISTEN_PORT`:监听端口,默认 `3913` PowerShell 启动示例(请替换为本机配置,不要把真实密码提交到 Git): ```powershell $env:SOLO_DB_NAME = "solo_game" $env:SOLO_DB_HOST = "127.0.0.1" $env:SOLO_DB_USER = "solo_user" $env:SOLO_DB_PASSWORD = "your-local-password" $env:SOLO_LISTEN_IP = "127.0.0.1" $env:SOLO_LISTEN_PORT = "3913" ``` 设置完成后使用 MySQL 模式启动: ```powershell .\SoloTcpServer.exe --mysql ``` 也可以设置 `SOLO_DB_MODE=mysql` 后直接运行程序。默认不带参数启动时始终使用内存模式,避免作品集试玩包因为没有本机数据库而直接退出。 ## P3 基础权威校验 服务端会拒绝以下明显异常请求: - NaN/Infinity 坐标、超过速度容差的位移和过大的垂直跳变; - 非战斗房间、跨房间、攻击自己或同阵营目标; - 死亡角色攻击、攻击死亡目标、过快攻击和超出攻击距离; - 伤害后生命值会限制在零以上。 这些校验用于展示“服务端不完全信任客户端”的基本意识;完整商业反作弊、帧同步和回滚不在这个实习作品的范围内。