2014-01-20 79 views
0

我正在编写MMO塔防游戏(客户端服务器架构)。由于作弊保护,服务器需要有逻辑。但我有真正的设计问题。当我们说10个人对抗死亡竞赛时,每一个塔的射击都需要被调整并发送给玩家。当许多塔建造。 (像10个玩家* 10塔= 100塔)交通非常高。 (一个玩家每秒产生很多消息)我该如何解决这个问题?网络流量,MMO塔防

服务器是用Java编写(Smartfox 2X) 客户端用C#编写(团结3D)

在此先感谢。

+0

你目前如何做服务器和客户端之间的通信?你使用什么语言? – PeeHaa

+0

我使用unity3d(c#,客户端)和smartfox(java,服务器) – Mileseven

+0

有一个叫做Demigod的游戏。当它是发行版时,需要花费几个月的时间将其修补到可玩的状态,其中最常见的问题是在网络区域。发生这种情况的原因是,当他们进行了大量测试时,更多玩家开始使用它,所有事情都出错了。祝你好运,我*知道*你会有这么多的乐趣! –

回答

0

在服务器上使用强化简化的单位和作战规则。只要有人踏入塔周围的“损伤区域”,就可以通过影响随着时间的推移造成的持续伤害来编程您的伤害算法。你可以在服务器上使用二维战场,其中所有的单位和塔和损伤区域只是圆圈或卵形和圆圈。 U也可以使用几个伤害环,每秒伤害在外围圈较低,在防御塔周围内圈较高。你可以使用队列管理单个目标的伤害/多目标伤害和区域伤害。只有队列中的第一名受到伤害区域的影响,如果单发,只是第一,第二和第三次受到多次射击等影响。

如果塔每5秒发射一颗子弹并且每发子弹伤害40只需在服务器上计算每个目标站立在“伤害区域”或“伤害圈”上的伤害为每秒8点。

在客户端,你可以像飞行子弹,击球,飞溅和飞溅和烟花等所有东西。

但是在服务器上通过输入伤害区域来完成所有的东西,然后每秒造成伤害。 (对不起英语不好)

0

由于作弊保护,服务器需要有逻辑。

这是一个错误的假设。服务器需要足够的逻辑来运行游戏逻辑,并确保所有玩家的行为都有意义,但不需要返回结果。客户可以同时运行相同的逻辑并自行计算结果。

+0

感谢您的回答,但服务器和客户端之间的延迟又如何?就像服务器认为所有单位已经死亡一样,但客户端没有。其他客户也应该知道单位何时被击中。我怎样才能解决这个特殊问题? – Mileseven

+0

通过客户端和服务器端模拟之间的适当同步,这不应该发生。 – duskwuff

+0

感谢这就是我需要知道的:) – Mileseven