我正在做一个简单的小MOBA,只是为了好玩。我把所有东西都做成单人游戏,然后我意识到:“糟糕,我应该添加多人游戏,对吧。”
我以前从未进行过联网工作,因此学习如何将Lidgren集成到我的游戏中既有趣又很棒。问题是,据我所知,我几乎知道我做事的方式是错误的,因为据我所知,它不足以使主流游戏使用,但是这又有什么问题呢?
基本上,我正在做的是,只要玩家执行某项操作,它就会向服务器发送一条消息,说“嘿,我刚刚做了这件事”。服务器和客户端都运行相同的模拟。然后,服务器向所有其他客户端发送一条消息,告诉他们该家伙做了那个事情。
在大多数情况下,除了在少数情况下,当玩家做某事时,客户会认为它很酷,并自行进行。因此,当您右键单击某个位置以将其移动到该位置时,该玩家的客户便开始将他的家伙移至该位置,然后向服务器发送一条消息以告知其相关信息。
所以基本上:
- 玩家1发射一个咒语,使他的移动速度提高100%,持续6秒
- 玩家1的本地客户将该buff添加到他的Unit对象中
- 玩家1的客户端向服务器发送一条消息,说“嘿,我刚刚施放了此咒语”
- 服务器确保他确实有足够的魔法来施放该咒语,如果是,则将该buff添加到该Unit对象的服务器副本中
- 服务器向所有其他客户端发送一条消息,说“嘿,这个家伙刚刚施了这个咒语”
- 其他所有客户端都会收到此消息,并“很酷”,然后将该buff添加到该玩家的本地Unit对象中
我一直在浏览一些东西,以了解大型游戏是如何进行多人游戏的,这对于刚开始涉足此游戏的人来说有点令人困惑,但是看起来Source引擎发送了一个包含所有更改的数据包。世界每一刻?再说一遍,对于这些东西来说是全新的,但是您真的可以经常推送那么多数据吗?
抱歉,这有点不合理,但是基本上,我想知道为什么我的简单系统不是正确的方法,因为如果是这样,其他游戏会使用它,对吗?