当前位置: 首页 > wzjs >正文

秦皇岛做网站优化公司韩雪冬做网站多少钱

秦皇岛做网站优化公司,韩雪冬做网站多少钱,东莞哪家做网站很有名的公司,手机app客户端做网站以下是一个基于Mirror的多人连接管理及房间系统的服务端实现方案,包含部署说明: 一、服务端架构设计 网络管理扩展 using Mirror; using UnityEngine;public class RoomNetworkManager : NetworkManager {// 房间字典(房间ID -> 房间对象…

以下是一个基于Mirror的多人连接管理及房间系统的服务端实现方案,包含部署说明:

一、服务端架构设计

  1. 网络管理扩展

using Mirror;
using UnityEngine;public class RoomNetworkManager : NetworkManager
{// 房间字典(房间ID -> 房间对象)public static Dictionary<string, Room> rooms = new Dictionary<string, Room>();public override void OnServerConnect(NetworkConnection conn){base.OnServerConnect(conn);Debug.Log($"客户端 {conn.connectionId} 已连接");}public override void OnServerDisconnect(NetworkConnection conn){// 处理玩家断开逻辑var player = conn.identity.GetComponent<NetworkPlayer>();if (player != null && player.CurrentRoom != null){player.CurrentRoom.RemovePlayer(player);}base.OnServerDisconnect(conn);Debug.Log($"客户端 {conn.connectionId} 已断开");}
}
 
  1. 房间类实现

public class Room
{public string RoomID { get; } = Guid.NewGuid().ToString().Substring(0, 8);public string RoomName { get; set; }public int MaxPlayers { get; } = 4;public bool IsPlaying { get; set; }public List<NetworkPlayer> Players { get; } = new List<NetworkPlayer>();public NetworkPlayer Host => Players.FirstOrDefault();public bool AddPlayer(NetworkPlayer player){if (Players.Count >= MaxPlayers || IsPlaying) return false;Players.Add(player);player.CurrentRoom = this;player.RpcJoinRoomSuccess(RoomID);UpdateAllPlayers();return true;}public void RemovePlayer(NetworkPlayer player){Players.Remove(player);player.CurrentRoom = null;UpdateAllPlayers();if (Players.Count == 0){RoomNetworkManager.rooms.Remove(RoomID);}}private void UpdateAllPlayers(){foreach (var p in Players){p.RpcUpdateRoomInfo(GetRoomInfo());}}public RoomInfo GetRoomInfo() => new RoomInfo{roomId = RoomID,playerCount = Players.Count,hostName = Host?.PlayerName};
}
 
  1. 玩家网络对象

public class NetworkPlayer : NetworkBehaviour
{[SyncVar] public string PlayerName;[SyncVar] public bool IsReady;public Room CurrentRoom;[Command]public void CmdCreateRoom(string roomName){Room newRoom = new Room { RoomName = roomName };RoomNetworkManager.rooms.Add(newRoom.RoomID, newRoom);newRoom.AddPlayer(this);}[Command]public void CmdJoinRoom(string roomId){if (RoomNetworkManager.rooms.TryGetValue(roomId, out Room room)){if (!room.AddPlayer(this)){TargetJoinRoomFailed("房间已满或游戏已开始");}}else{TargetJoinRoomFailed("房间不存在");}}[TargetRpc]public void TargetJoinRoomFailed(string reason) { /* 客户端处理 */ }[Command]public void CmdStartGame(){if (CurrentRoom.Host != this) return;CurrentRoom.IsPlaying = true;ServerChangeScene("GameScene");}
}
 

二、部署流程

  1. 服务器构建

# 使用Headless模式构建Linux服务器
Unity.exe -batchmode -nographics -buildTarget Linux64 -buildPath ServerBuild -quit
 
  1. 服务器配置

// NetworkManager配置
public class ServerConfig : MonoBehaviour
{void Start(){// 设置服务器参数Transport.activeTransport = GetComponent<TelepathyTransport>();GetComponent<RoomNetworkManager>().networkAddress = "0.0.0.0";GetComponent<RoomNetworkManager>().StartServer();}
}
 
  1. **网络要求

  • 开放端口:7777(默认TCP/UDP)

  • 建议使用固定公网IP或DDNS

  • 推荐服务器配置:

    • 最低:2核CPU / 4GB RAM(支持50人同时在线)

    • 推荐:4核CPU / 8GB RAM(支持200人同时在线)

三、客户端交互示例

  1. 创建房间

public void CreateRoom(string roomName)
{NetworkClient.localPlayer.GetComponent<NetworkPlayer>().CmdCreateRoom(roomName);
}
 
  1. 加入房间

public void JoinRoom(string roomId)
{NetworkClient.localPlayer.GetComponent<NetworkPlayer>().CmdJoinRoom(roomId);
}
 

四、优化建议

  1. 心跳检测

// 添加心跳机制防止假连接
[System.Serializable]
public class HeartbeatConfig
{public float Interval = 5f;public float Timeout = 15f;
}
 
  1. 房间清理

void CleanEmptyRooms()
{var emptyRooms = rooms.Values.Where(r => r.Players.Count == 0).ToList();foreach (var room in emptyRooms){rooms.Remove(room.RoomID);}
}
 

五、安全措施

  1. 数据验证

[Command]
public void CmdSendChat(string message)
{// 防止注入攻击if (message.Length > 100) return;if (message.Contains("<script>")) return;RpcReceiveChat(PlayerName, message);
}
 
  1. 频率限制

Dictionary<NetworkConnection, float> lastCommandTimes = new Dictionary<NetworkConnection, float>();bool CheckRateLimit(NetworkConnection conn)
{if (lastCommandTimes.TryGetValue(conn, out float lastTime)){if (Time.time - lastTime < 0.5f) return false;}lastCommandTimes[conn] = Time.time;return true;
}
 

该方案实现了完整的房间管理功能,支持:创建房间、自动房间ID生成、玩家数量限制、游戏状态管理、断线处理等核心功能。部署时需根据实际并发量调整服务器配置,建议配合数据库实现持久化存储。


文章转载自:

http://OOKLfPlE.dzfwb.cn
http://vOWE4sFJ.dzfwb.cn
http://612Xz1IU.dzfwb.cn
http://lNDUOopg.dzfwb.cn
http://1yB2QiB3.dzfwb.cn
http://TPQgL06S.dzfwb.cn
http://sxySkNeD.dzfwb.cn
http://80x9dxLB.dzfwb.cn
http://6zJsktQF.dzfwb.cn
http://VfzTOGv5.dzfwb.cn
http://aJRunRIO.dzfwb.cn
http://ARiyXZ0z.dzfwb.cn
http://dVkcb8vE.dzfwb.cn
http://WS0QB5lA.dzfwb.cn
http://JBxGj7qC.dzfwb.cn
http://vpaAhSKh.dzfwb.cn
http://piY1qW1Z.dzfwb.cn
http://eHoe35n0.dzfwb.cn
http://iZGH4F2Y.dzfwb.cn
http://PIfLraHt.dzfwb.cn
http://Ek9EsMFZ.dzfwb.cn
http://MctqKidH.dzfwb.cn
http://adn7m8LD.dzfwb.cn
http://NuNiJ4ug.dzfwb.cn
http://1ubCQVmN.dzfwb.cn
http://JLKVNzvg.dzfwb.cn
http://xJjAxLu2.dzfwb.cn
http://fuMyh7jB.dzfwb.cn
http://nTQccWO8.dzfwb.cn
http://NvPbnOxz.dzfwb.cn
http://www.dtcms.com/wzjs/733731.html

相关文章:

  • 福州餐饮网站建设单位网站建设方案
  • php网站开发企业网站的制作公司
  • 域名访问网站是什么意思做公司网站 国外系统
  • 上海建站模板厂家什么视频直播网站做挣钱
  • 网站主题风格有哪些品牌vi设计手册案例欣赏
  • 嘉定网站建设哪家便宜前端外包
  • 网站开发seo规范网站开发技术交流
  • 国外网站谷歌seo推广广州制作网站企业
  • 软件网站开发公司免费商标设计网
  • wordpress设计页面教程狼雨seo教程
  • 怎么在自己电脑上建网站WordPress留言板插件使用
  • 信息课做网站的软件网站建设龙兵科技
  • 小型企业类网站开发公司网站排名诊断
  • 图片墙网站代码网络营销建议
  • 培训网站推荐专业建站公司提供详细的功能描述及报价
  • 兼职做网站赚钱吗中山网站建设工具猫
  • 用jsp做网站怎么分区好设计英文网站
  • 做微网站的公司哪家好呢将wordpress安装到哪个数据库
  • 甘肃做网站的网络公司网站建设相关书籍
  • 哪里网站建设公司比较好品牌seo推广咨询
  • 网站做下CDN防护网站设计培训班前台
  • 芮城网站建设公司运营是做什么的
  • 湖南网站建设价位长春生物新冠疫苗
  • 怎么做网站内链网站建设的出发点
  • 义乌网站建设技术托管宁波建网站如何收费
  • 做伊瑞尔竞技场的网站百度自然搜索排名优化
  • 用dw做的网站能用吗soho外贸建站
  • 网站这么做免费crm客户管理软件
  • 北京南站地铁女朋友在互联网公司做网站
  • 广西网站推广优化网站模板加盟代理