gpt4 book ai didi

用于横向卷轴太空射击游戏的 Java 游戏服务器

转载 作者:行者123 更新时间:2023-11-30 04:47:15 25 4
gpt4 key购买 nike

我的 friend 用java开发了这个游戏,他们让我为它做多层。这是一款像小行星一样的横向卷轴射击游戏。我知道它必须处理套接字,并且 id 更喜欢使用 tcp 而不是 udp 来建立持续的连接,而不需要来回的数据集群。我有一个原型(prototype),可以从客户端到服务器来回发送字符串,反之亦然。但我该如何将其应用到游戏中呢?我是否可以将船舶的 x 和 y 坐标发送到托管该游戏的游戏,然后发回其他游戏坐标?任何帮助将不胜感激,提前谢谢您。

最佳答案

我建议您的游戏采用这种结构:

  • 创建一个托管游戏并进行计算的服务器。
  • 让服务器创建并处理在屏幕中移动的对象(敌人)。这样你只需发送数据服务器 -> 客户端即可更新用户界面。
  • 对于 spaceship ,服务器必须同时更新所有客户端,因此在客户端,每次有移动时都将 x,y 坐标发送到服务器,然后将新位置广播给每个玩家。拍摄或客户端生成的任何其他事件也是如此。
  • 当两个物体发生碰撞时(例如激光和敌人),这应该由服务器处理,同时具有物体和船只的位置。

客户端只需读取对象坐标、绘制它们并将船舶/激光位置发送到服务器。
服务器将生成对象并将其位置发送给所有客户端。同时读取船舶位置并更新用户界面。

发送/读取数据可能很困难。有多种方法可以做到这一点,具体取决于您目前更容易理解的方法。以后可以改进。

  • 在整个游戏过程中,服务器不断发送对象位置。
    如果屏幕上的对象数量并不总是相同,请发送一个包含当前对象数量+它们的坐标的字符串。客户端使用您之前指定的数字循环遍历这些坐标。
  • 船舶也是如此。我猜这些将是一个固定数字,因此您只需发送它们的坐标即可。
  • 在字符串内,坐标应该用某些东西分隔,以便您在收到时能够读取它们。
    一种方法是用特定字符
    "x1,y1;x2,y2;x3,y3;x4,y4; ..." 
    ("," between x-y and ";" between sets of coordinates)
    分隔它们。或者,由于您要发送 String,因此请始终使用相同数量的字符(例如 4)
    "0012054201620104"  (x1: 12 , y1: 542 ; x2: 162 , y2: 104)
  • 最后,我建议为您发送的每个数据包添加一个 header ,以了解它是对象坐标列表还是船舶坐标列表。

关于用于横向卷轴太空射击游戏的 Java 游戏服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699300/

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