【问题标题】:Online Multipler Games in JavaJava 在线多人游戏
【发布时间】:2019-11-15 03:19:45
【问题描述】:

在 Java 中,有没有一种方法可以为游戏制作客户端/服务器系统,而无需输入 ips(就像在 Minecraft 中一样)。 但是,当用户请求加入游戏时,它会自动将用户连接到游戏(例如在 Fortnite 或 surviv.io)。

我目前知道的客户端/服务器的唯一方法是必须给每个用户一个服务器 ip 来连接(就像在 Minecraft 中一样),所以我想知道我是否可以这样做。

提前致谢。

【问题讨论】:

  • 好吧,即使是 Fortnite,当您登录/启动游戏时,用户也会连接到 Fortnite 游戏服务器。它只是碰巧对我们用户隐藏了。
  • 是的,但我该怎么做呢?如何让它自动连接,而无需用户自己输入 IP 地址?
  • 通常情况下,1. 您编写服务器代码 2. 将其部署到 AWS 等云提供商。 3. 注册域 4. 将服务器IP与域映射。 5. 创建一个客户端应用程序,该应用程序在内部访问您注册的域以获取所需的所有数据。 6. 仅此而已。这样,客户端应用程序的用户不必输入任何 IP 或显式连接到任何 IP。您的客户端应用将为用户执行此操作。
  • 把它想象成 twitter 应用程序如何能够将您的所有提要发送到您的移动应用程序,而无需您输入 twitter url
  • 您能否找到或发送有关如何完成此操作的教程?云提供商通常要花钱吗?如果有,有什么好的免费的吗?

标签: java server client client-server


【解决方案1】:

恕我直言,我认为在所有“.io”游戏中,它们只是隐藏了注册处理。就我而言,我之前制作的游戏有一个名为“快速播放”的功能。 当玩家使用该游戏方法并第一次加入游戏时,我会获取他的设备 ID(例如在 Android 中),然后将其用作该玩家在游戏中的唯一 ID(我不确定 iOS,但您可以获得Android 中的独特价值)。 你可以看下面的例子:

_on(TEvent.CONNECTION_SUCCESS, args -> {
            var connection = Connection.convert(args[0]);
            var message = TObject.convert(args[1]);

            info("CONNECTION", connection.getAddress());

            // Allow the connection login into server (become a player)
            String username = message.getString("u");
            // Should confirm that credentials by data from database or other services, here
            // is only for testing
            _playerApi.login(new PlayerLogin(username), connection);

            return null;
});

现在当新用户登录时,他会发送他的设备 ID,我可以将他视为新玩家并将该 ID 作为他的名字(或为他随机命名)

您可以在下面的链接中查看更多详细信息: Login Example

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多