gpt4 book ai didi

c# - 我可以在不支付 Unity Multiplayer 服务的情况下使用 Unity 网络 HLAPI 吗?

转载 作者:可可西里 更新时间:2023-11-01 08:14:00 25 4
gpt4 key购买 nike

我看到了 Unity 的 Multiplayer service page ,我完全糊涂了:

我可以使用Unity's high-level networking API吗? (NetworkManager/NetworkManagerHUD) 在已发布的游戏中,无需为 Unity Matchmaker 和中继服务器(无论它们是什么)付费?

我有自己的基于云的虚拟机,我想在上面运行专用服务器。我的项目只是一个我会和 friend 一起玩的小游戏(没有商业或大型)。我想在我的 VM 上以专用服务器模式运行该游戏的已发布副本,让我的 friend 运行他们已发布的客户端副本并通过 NetworkManager 连接到服务器。

我可以免费这样做吗?我不介意我的 friend 是否必须使用 NetworkManagerHUD 在他们的游戏副本中手动输入服务器的 IP 和端口。他们这样做会算作“CCU”(Unity Personal 的限制为 20 个)吗?这会使用 Unity Matchmaker 带宽(0.49 美元/GB,Unity Personal 甚至不可用)吗?

如有任何澄清,我们将不胜感激! :)

最佳答案

您可以免费使用 Unity HLAPI。只要不使用 Unity 配对 API,您就不需要支付任何费用。

您可以让另一个播放器直接连接到不在同一本地网络上的另一个播放器,但您需要在每台计算机上执行端口转发。玩家可以通过他们的路由器设置执行端口转发,但您不希望您的玩家经历这个。您可以从 C# 脚本进行端口转发,但如果您对网络一无所知,这会很复杂。有很多 C# 库可以做到这一点,所以你必须重新发明一个轮子。

一旦端口转发正常工作,您就可以使用 Unity 标准 API 直接连接到另一个网络中的另一个播放器。

如果您想更进一步,您可以编写一个脚本,将玩家的 IP 地址和端口号发送到您的服务器,这样玩家就可以自动相互连接,而无需手动输入 IP 地址和每台电脑的端口号。

编辑:

Unity match making API = UnityEngine.Networking.Match 中的所有类,例如NetworkMatch

Unity 标准 API = NetworkServerNetworkClient

您不应使用 NetworkManager,因为它的大部分功能都依赖于 Unity 匹配 API

要创建一个没有 Unity 配对 API 的网络游戏,您只需要 NetworkServerNetworkClient 类。

创建服务器:

NetworkServer.Listen

它有重载的方法,例如

public static bool Listen(string ipAddress, int serverPort);
public static bool Listen(int serverPort);

创建客户端(连接到服务器):

NetworkClient.Connect
public void Connect(string serverIp, int serverPort);

如果您不想使用Unity的婚介API,您将失去创建和加入游戏等功能。您可以使用我上面提到的NetworkServerNetworkClient 来创建一个完整的网络游戏。只需创建一个服务器,连接到它并开始发送和接收信息。这是值得的,因为当 Unity 的服务器出现故障或开始变慢时,您的游戏仍然可以正常运行,与其他游戏不同。

注意:Unity 正在开发可让您托管自己的游戏的应用程序。这还没有出来,但是当他们发布它时,您将能够通过在您的服务器上运行该应用程序来在没有 Unity 服务器的情况下托管您自己的游戏。现在,他们希望您付费使用他们的一些网络代码,但真正的编码人员不必这样做。

关于c# - 我可以在不支付 Unity Multiplayer 服务的情况下使用 Unity 网络 HLAPI 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091976/

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