Unity3d 为Unity构建一个简单的在线游戏服务器
我正在尝试为我的坦克游戏2D(Unity)构建一个在线游戏服务器。在我的游戏中,将有2-4名玩家控制他们的坦克并互相攻击Unity3d 为Unity构建一个简单的在线游戏服务器,unity3d,game-engine,multiplayer,Unity3d,Game Engine,Multiplayer,我正在尝试为我的坦克游戏2D(Unity)构建一个在线游戏服务器。在我的游戏中,将有2-4名玩家控制他们的坦克并互相攻击 我曾尝试使用Unity网络,但它并不适合我的游戏,因为我们必须选择房间中的一名玩家作为“服务器”,这对我未来的发展来说不是很灵活(例如,当“服务器”退出时,我必须做大量工作来保持其他玩家之间的连接) 然后,我尝试使用Nodejs lásocket.io构建自己的服务器,用于服务器-客户机通信。它非常简单:从一个接收数据并将其广播给其他人。在物理部分出现之前,它似乎工作正常
- 我曾尝试使用Unity网络,但它并不适合我的游戏,因为我们必须选择房间中的一名玩家作为“服务器”,这对我未来的发展来说不是很灵活(例如,当“服务器”退出时,我必须做大量工作来保持其他玩家之间的连接)
- 然后,我尝试使用Nodejs lásocket.io构建自己的服务器,用于服务器-客户机通信。它非常简单:从一个接收数据并将其广播给其他人。在物理部分出现之前,它似乎工作正常:当客户端说有东西被击中或爆炸时,服务器必须信任客户端,然后将其广播给其他客户端。更不用说被欺骗的客户端,随着网络延迟的增加,客户端的物理模拟也会有所不同。例如,一辆坦克可能撞到了这个客户身上,但另一辆坦克应该被挡在墙后并保持生命,但他身后的坦克被子弹击中并爆炸,这是因为潜伏期。在这些情况下,服务器不知道该听哪个
- 正如@Catwood在下面提到的,光子双关语是我的另一个选择。我 我以前听过他们的教程。光子不需要像Unity networking那样的“服务器”播放器。但是我如何在服务器上实现我的游戏逻辑呢?(用于权威服务器)
- 显然,Smartfoxserver是另一个不错(而且价格昂贵)的选择。我还没有深入查看他们的API文档。我不知道我是否可以在这方面实现我的游戏逻辑和规则(为了简单起见,他们的教程跳过了这一部分)
- 是一个权威服务器
- 能够处理游戏规则并决定会发生什么(也许应该有自己的物理引擎)
- 与Unity2D配合良好
- Javascript、C#、Java是首选李>
我对这个领域很陌生,任何事情都会很感激的 资产存储中有一个名为的资产,它是权威服务器。它对非移动设备也是免费的。这肯定会解决你问题的第一部分
这将很有帮助。我建议您为您的游戏创建自己的服务器,就像您使用NodeJS一样。我所知道的大多数解决方案都很难使用,并且不能做任何你想做的事情 例如,暴雪游戏的炉石是基于统一的客户端,并有一个定制的服务器端 下面是一些关于如何创建游戏服务器的建议 在物理部分出现之前,它似乎工作正常:当客户端说有东西被击中或爆炸时,服务器必须信任客户端,然后将其广播给其他客户端 创建服务器时,您必须在服务器端而不是客户端做出每个重要决策。 是服务器启动了参与方,因此服务器必须具有以下信息
- 地图的大小
- 玩家数量
- 每个玩家的数据(生命点、位置、大小、攻击速度…)
- 做出决策所需的任何其他信息
- 向左移动
- 入党
- 射门
- 右转
- 等等
- 检查是否允许该操作
- 如果允许,模拟动作。如果不是,请将其放入队列中
- 向用户发送正在发生的事情的信息(玩家一次命中,玩家二次死亡,玩家四次向左移动等等)
- 比姆
map_width = 512; map_height = 512; user_width = 2; user_height = 2; user_speed = 1; user_posx = 20; user_posy = 20;
{action: move; value: left};