unity联机socket房间逻辑
unity3d吧
全部回复
仅看楼主
level 3
百魔bm 楼主
在做一个联机空战游戏,直接用socket写的,现在做多人房间的有个问题想不明白求教各位大佬
客户端连接好之后,要从房间场景跳转到游戏场景,但是跳转的游戏场景都是同一个场景(因为现在做的游戏也只有一个地图),这个逻辑应该是怎么样的
房间不同,但是场景是相同的,各个房间也不会因为场景相同而把不同房间的玩家全部放在同一个场景里
2024年11月11日 13点11分 1
level 11
等待 全部玩家地图场景全部预加载 完成再跳转
2024年11月11日 16点11分 2
比如说我开了房间1和2,2个房间地图一样,但是我希望两个房间的人不在同一个场景里应该咋搞?因为我现在都是直接loadscene过去,那会导向到同一个场景里
2024年11月12日 00点11分
@百魔bm 没看懂 你的问题 你的问题是 不同的房间的人都会挤入到一个场景里 导致 不同房间的人也能相互看到 所以你希望 每加一个房间就创建一个新的场景
2024年11月12日 01点11分
差不多是这样,我的意思是比如说我有地图A和地图B,房间1和房间2都选择地图A,呢我怎么区分房间1的地图A和房间B的地图A,因为我现在是直接loadscene(地图A)
2024年11月12日 02点11分
@Alonelyss 我希望房间1的玩家和房间2的玩家玩的地图可以是一样的,但不会全部进入到一起去,因为他们的房间不一样,只是地图一样,我这样说有什么不清楚的地方吗
2024年11月12日 02点11分
level 7
这是服务器要写的逻辑啊 很正常的需求
2024年11月11日 23点11分 3
level 3
百魔bm 楼主
举一个例子补充说明,比如说我开了房间1和2,2个房间地图一样,但是我希望两个房间的人不在同一个场景里应该咋搞?因为我现在都是直接loadscene过去,那会导向到同一个场景里
2024年11月12日 00点11分 4
level 3
百魔bm 楼主
比如说我有地图A和地图B,房间1和房间2都选择地图A,呢我怎么区分房间1的地图A和房间B的地图A,因为我现在是直接loadscene(地图A)
2024年11月12日 02点11分 5
level 8
我是通过增加一个ID来区分的
比如你只有一个战斗场景A,每次两个玩家在这个A场景中对打。
在服务器中,A场景可以被“复制”出无数份,“复制”出来的A场景都有一个唯一的ID。
每个玩家也都记下这个ID,那么,只同步相同ID的玩家、技能、伤害就可以了。
而我是在“复制”出来的A场景中添加了两个列表(因为我做的是MMORPG),两个列表中放入敌对双方。逻辑是:通过“玩家”找到“场景”,通过“场景”找到自己的队友和敌人,再进行同步就行了。
原理和MMORPG中的“副本”一样。
水平有限,都是自己慢慢琢磨出来的。以前也研究过其它的插件,竟然需要独立出一个“程序实例”,哎~~~~~~~~~~~~
2024年11月12日 03点11分 6
补充:这只是服务器端,至于客户端直接加载A场景就行了。因为不在同一战斗场景中的玩家、怪物、伤害是不会被同步过来的
2024年11月12日 03点11分
@稻香9527 你的意思只要房间id不同,虽然我每个客户端执行的都是loadscene(地图A),但是在服务端接收到loadscene(地图A)之后,因为房间id不同,所以不同房间的人虽然都执行了loadscene(地图A),但是他们进入的是相同地图的不同副本?这样理解对吗
2024年11月12日 05点11分
@百魔bm 是的 因为 网络游戏和单机游戏的根本区别就是 需要和其它的玩家进行同步 只同步同一个房间ID的 就和其它房间的区分开了 你想想是不是这么回事儿
2024年11月12日 06点11分
@稻香9527 谢谢大佬,我去试一下怎么实现[真棒],谢谢大佬
2024年11月12日 06点11分
level 1
靠服务器的数据 客户端看不到其他人就行了
2024年11月24日 08点11分 7
1