web-dev-qa-db-fra.com

Puis-je utiliser le HLAPI de mise en réseau Unity sans payer pour le service Unity Multiplayer?

J'ai vu la page du service multijoueur de Unity , et je suis complètement confus:

Puis-je utiliser l'API de mise en réseau de haut niveau d'Unity (NetworkManager/NetworkManagerHUD) dans un jeu publié sans payer pour Unity Matchmaker et les serveurs de relais (quels qu'ils soient) ?

J'ai mon propre cloud VM sur lequel je veux exécuter un serveur dédié. Mon projet n'est qu'un petit jeu auquel je jouerais avec mes amis (rien de commercial ou de grande échelle). Je je veux exécuter une copie publiée de ce jeu en mode serveur dédié sur ma machine virtuelle, et demander à mes amis d'exécuter leur copie client publiée et de se connecter au serveur via le NetworkManager.

Puis-je le faire gratuitement? Cela ne me dérange pas si mes amis doivent entrer manuellement l'adresse IP et le port du serveur dans leur copie de jeu à l'aide de NetworkManagerHUD. Est-ce que cela constituerait un "CCU" (limite de 20 pour Unity Personal)? Cela utiliserait-il la bande passante d'Unity Matchmaker (0,49 $/Go, même pas disponible pour Unity Personal)?

Toute clarification serait appréciée! :)

12
jenkins

Vous pouvez utiliser Unity HLAPI sans payer. N'utilisez simplement pas l'API Unity Match Making, vous n'aurez rien à payer.

Vous pouvez demander à un autre lecteur de se connecter directement à un autre lecteur qui n'est pas sur le même réseau local, mais vous devez effectuer la redirection de port sur chaque ordinateur. Les joueurs peuvent effectuer une redirection de port via les paramètres de leur routeur, mais vous ne voulez pas que votre lecteur passe par là. Vous pouvez faire la redirection de port à partir du script C # mais c'est compliqué si vous ne savez rien sur la mise en réseau. Il existe de nombreuses bibliothèques C # qui peuvent le faire de sorte que vous devez réinventer une roue.

Une fois que la redirection de port fonctionne, vous pouvez ensuite utiliser l'API standard Unity pour vous connecter directement à un autre joueur dans un autre réseau.

Si vous voulez aller plus loin, vous pouvez avoir un script qui envoie l'adresse IP et le numéro de port des joueurs à votre serveur afin que les joueurs puissent se connecter automatiquement sans avoir à taper manuellement l'adresse IP et le numéro de port de chaque ordinateur.

[~ # ~] éditez [~ # ~] :

API de création de correspondance Unity = Toutes les classes dans UnityEngine.Networking.Match, comme NetworkMatch

API standard Unity = NetworkServer et NetworkClient

Vous ne devez PAS utiliser NetworkManager car la plupart de sa fonction dépend de API de création de correspondance Unity .

Pour créer un jeu en réseau exempt d'API Unity Match Making, vous avez juste besoin des classes NetworkServer et NetworkClient.

Pour créer un serveur :

NetworkServer.Listen

Il a surchargé des méthodes telles que

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

Pour créer un client (connexion au serveur) :

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

Vous perdrez des fonctions telles que créer et rejoindre des jeux si vous ne souhaitez pas utiliser l'API Unity Match Making. Vous pouvez utiliser le NetworkServer et le NetworkClient que j'ai mentionné ci-dessus pour créer un jeu réseau complet. Créez simplement un serveur, connectez-vous à lui et commencez à envoyer et recevoir des informations. Cela en vaut la peine car lorsque le serveur d'Unity tombe en panne ou commence à ralentir, votre jeu fonctionnerait toujours contrairement aux autres.

[~ # ~] note [~ # ~] : Unity travaille sur une application qui vous permet d'héberger votre propre jeu. Ce n'est pas encore sorti, mais quand ils le sortiront, vous pourrez héberger votre propre jeu sans le serveur Unity en exécutant cette application sur votre serveur. À l'heure actuelle, ils veulent que vous payiez pour utiliser certains de leurs codes réseau, mais les vrais codeurs n'auront pas à le faire.

54
Programmer