gpt4 book ai didi

android - 用于 Android/iOS 回合制棋盘游戏的游戏服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:16 25 4
gpt4 key购买 nike

我目前正在编写一个 iPhone 游戏,我想创建一个在线多人游戏模式。以后这个应用会移植到Android设备上,所以我想知道如何创建游戏服务器?

首先,我应该选择哪种语言?如何使服务器能够与用 objective-c 和 Java 编写的程序进行通信?

那么,如何有效地做到呢?如果我由客户端打开一个套接字(会有 2 个)好吗?我应该向服务器发送什么样的信息?给客户?

感谢您的宝贵时间。

最佳答案

编辑 您的游戏有多大规模多人游戏?

嗨,西里尔,

如您所见,两个人主要考虑两件事:

  1. 发送到服务器的信息

  2. 发送给客户的信息

只有一种类型的信息要发送到服务器:用户输入。如果您不这样做,当流氓客户端尝试向您的服务器发送虚假数据(比如说“我的坦克现在有 100 000 000 装甲”)时,您将遇到令人头疼的问题。

然后您发送给客户端的内容由您决定,但完全有可能只将其他玩家的输入发送给客户端。这是获得绝对最小和微小带宽使用的方法。暴雪的魔兽争霸 3 等游戏就是这样做的。作为奖励,这会产生很小的重播文件(因为要重播游戏,您需要做的只是每个玩家输入发生的时间(和输入))。

仅将其他玩家的输入发送到客户端的一个缺点是,这意味着所有游戏逻辑都存在于每个客户端上。对于某些游戏,这可能是个问题,因为人们可能会通过对您的游戏进行逆向工程并寻找缺陷来作弊。这个问题可以通过谨慎的、受控的、随机化来缓解(除了输入+时间你发送输入+时间+随机性,其中随机性不能被客户端提前猜到.

另一种方法是在服务器端进行一些逻辑计算。然后,显然,您需要将服务器计算的结果发送给客户端。如果做得好,这样做的好处是可以防止作弊使盗版成为不可能(例如,没有人能够在实体经济中玩魔兽世界——也就是说,在真实的暴雪服务器——使用伪造的许可证 key )。

关于手机回合制游戏服务器:看看一款畅销的回合制游戏就知道了。以 Uniwar 为例:适用于 iPhone 和 Android。游戏服务器“当然”是用 Java 编写的。

要意识到的一件事是,像您计划编写的游戏这样的游戏是完全确定性的:如果您不能轻松地编写重放器代码,或者如果您不能轻松地重现任何导致逻辑错误的场景,你做错了。

请注意,确定性并不意味着您不能为玩家添加看起来像随机性的东西:只是随机性也应该是确定性的(例如,简单地为每个游戏使用不同的种子 + 时间玩家输入是伪造的随机源)。

关于android - 用于 Android/iOS 回合制棋盘游戏的游戏服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com