# Unity多人游戏帧同步服务器_Unity+JavaServer+MongoDB
**Repository Path**: imsetal121/frame-synchronization-server
## Basic Information
- **Project Name**: Unity多人游戏帧同步服务器_Unity+JavaServer+MongoDB
- **Description**: Unity多人游戏帧同步服务器
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2024-06-18
- **Last Updated**: 2025-06-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 一个简单的Unity多人游戏帧同步服务器(Unity客户端+Java服务端+MongoDB持久化数据)
#### 介绍
本项目是Unity多人游戏的一个简单实现方式。基于TCP,UDP实现Unity端与Java服务端的数据传输,以及MongoDB持久化数据,以实现用户登录注册,多客户端间帧同步的功能。
#### 软件架构
|||
|---|---|
|客户端|Unity 2022.3.17f1c1|
|服务端|Java (Maven构建)|
|数据库|MongoDB|
#### 安装教程
1. 配置MongoDB环境(参考[MongoDB官方网站](https://www.mongodb.com/try/download/community))。
2. 使用IDEA或任何你熟悉的Java IDE运行TouHouGameServer项目。
3. 使用Unity运行TouHouGame项目。
#### 项目实现
##### 帧同步实现
· 玩家角色
通过核对自身ID与游戏客户端主人ID是否一致判断自身是主人玩家角色或是傀儡玩家角色,两种玩家角色的每帧逻辑有所不同。
· 主人玩家角色
每帧逻辑如下:
**获取并存储玩家输入** -> **使用玩家输入执行角色逻辑** -> **打包玩家输入和角色状态并发送给服务端**
· 傀儡玩家角色
每帧逻辑如下:
**接收服务端发送的对应玩家的玩家输入和角色状态** -> **使用接收的玩家输入执行角色逻辑** -> **使用接收的角色状态同步角色状态**
· 服务端
当有玩家连接时,实例化一个世界类,该类会存储所有进该世界的玩家的TCP连接,世界类会接受所有该世界玩家客户端的主人玩家角色发送的帧信息(上述的玩家输入和角色状态),存入世界类的实时帧信息,并将该帧信息以与游戏客户端逻辑帧相同的时间步长向客户端。
· 客户端
接收服务端发送的帧信息,将帧内每个玩家的玩家输入和角色状态发送给对应的各各傀儡玩家角色(如无对应的傀儡玩家角色,则新建傀儡玩家角色;如玩家信息对应的玩家是该客户端主任。则忽略)。
#### 项目截图
