我想为我的坦克游戏2D(Unity)建立一个在线游戏服务器。在我的比赛中,将有2-4名球员控制他们的坦克并相互对抗。建立一个简单的Unity游戏服务器
我试图用统一的网络,它是不是真的适合我的比赛,因为我们要选择在房间内的玩家1成为“服务器”,这是不是我真的灵活未来的发展(例如,当“服务器”退出时,我必须做很多工作才能保持其他玩家之间的联系)。
然后我试着用Nodejslàsocket.io构建我自己的服务器来进行服务器 - 客户端通信。非常简单:从一个接收数据并将它们广播给其他人。在物理部分进入之前,它似乎仍然正常工作:服务器在他们说有某些事件正在被击中或爆炸时必须相信客户端,然后将其广播给其他客户端。更不用说被欺骗的客户端,在网络延迟的情况下,客户端的物理模拟会有所不同。例如,这个客户可能会碰到一个坦克,但它应该被覆盖在另一个坦克的后面,并且保持活着,但由于延迟,他身后的坦克会抓住子弹并爆炸。在这些情况下,服务器不知道应该听哪一个。
更新
- 作为@Catwood下文提到的,光子潘对我来说是另一种选择。我之前使用过他们的一个教程,我之前使用过 。 Photon不需要一个玩家就像Unity网络一样成为“服务器”。但是,我如何在服务器上实现我的游戏逻辑? (用于权威服务器的目的)
- 显然Smartfoxserver是另一个好的(和昂贵的)选项。我没有深入了解他们的API文档。我不知道我是否可以实现我的游戏逻辑和规则(为了简单起见,他们的教程略过这一部分)。
最后,我需要一个建议,我的游戏服务器:
- 是一个权威服务器
- 可以处理游戏规则,并决定会发生什么(也许应该有自己的物理引擎)
- 适用于Unity2D
- Javascript,C#,Java是首选!
我是否正确的方向,因为看起来像一些游戏服务器服务(如Photon,Unity网络)只是不关心如何在服务器上实现游戏逻辑。它是否使他们不是一个权威的服务器?
我对这个领域很新,任何事情都将不胜感激!
谢谢你的信息。我相信你在谈论客户端预测,内插和服务器对账。我一直在为此工作一两天。在你的回答中,我认为“服务器应该模拟游戏”部分是我现在的问题,因为我的服务器只是一个“愚蠢的服务器”,我不知道如何在模拟上实现一些逻辑=) – FlySoFast
@FlySoFast好吧,这并不难,但主要取决于你的游戏在做什么。我会编辑我的答案,添加一些presicion –
是的,这很简单。但是,当一名球员被射门撞到他后面的岩石,然后以不同的旋转方向弹回到另一个方向时,那么他怎么样?这是他被第二颗子弹击中并爆炸的地方?男人,这里真的很复杂,我认为服务器必须有一些物理引擎,而不是一些简单的代码。我在想错误的方向吗? – FlySoFast