Unityの マルチプレイヤーサービスページ を見ましたが、完全に混乱しています:
Unity MatchmakerとRelayサーバー(これらが何であれ)に費用を支払うことなく、公開されたゲームで nityの高レベルネットワークAPI (NetworkManager/NetworkManagerHUD)を使用できますか?
専用のサーバーを実行したいクラウドベースの独自のVM。私のプロジェクトは、友人と一緒にプレイする小さなゲームです(商用でも大規模でもありません)。私のVMでそのゲームの公開されたコピーを専用サーバーモードで実行し、友人に公開されたクライアントコピーを実行させ、NetworkManagerを介してサーバーに接続したい。
無料でできますか? NetworkManagerHUDを使用して、友人がサーバーのIPとポートをゲームコピーに手動で入力する必要があるかどうかは気にしません。そうすることは「CCU」(Unity Personalで20の制限)としてカウントされますか? Unity Matchmakerの帯域幅(0.49ドル/ GB、Unity Personalでは使用できません)を使用しますか?
明確化をいただければ幸いです! :)
Unity HLAPI
を無料で使用できます。 UnityのマッチメイキングAPIを使用しないでください。そうすれば、何も支払う必要はありません。
同じローカルネットワーク上にない別のプレーヤーに別のプレーヤーを直接接続することはできますが、各コンピューターでport forwardingを実行する必要があります。プレーヤーはルーター設定を使用してポート転送を実行できますが、プレーヤーがこれを実行することは望ましくありません。 C#スクリプトからポート転送を行うことができますが、ネットワークについて何も知らない場合は複雑です。これを行うことができる多くのC#ライブラリがあるため、ホイールを再発明する必要があります。
ポートフォワーディングが機能するようになったら、Unity標準APIを使用して、別のネットワークの別のプレーヤーに直接接続できます。
さらに詳しく知りたい場合は、プレーヤーのIPアドレスとポート番号をサーバーに送信するスクリプトを作成して、プレーヤーがIPアドレスとポート番号を手動で入力しなくても自動的に相互に接続できるようにすることができます。各コンピューターの。
[〜#〜] edit [〜#〜]:
統一一致API= UnityEngine.Networking.Match
内のすべてのクラス、たとえば NetworkMatch
Unity標準API= NetworkServer
および NetworkClient
NetworkManager
を使用しないでください。その機能の大部分はUnityマッチングAPIに依存しているためです。
UnityマッチメイキングAPIから無料のネットワークゲームを作成するには、NetworkServer
クラスとNetworkClient
クラスが必要です。
サーバーを作成するには:
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を使用したくない場合、ゲームの作成や参加などの機能を失います。上記のNetworkServer
とNetworkClient
を使用して、完全なネットワークゲームを作成できます。サーバーを作成して接続し、情報の送受信を開始するだけです。 Unityのサーバーがダウンしたり、速度が低下し始めた場合でも、他のゲームとは異なり、ゲームはまだ動作しているので、価値があります。
[〜#〜] note [〜#〜]:Unityは、独自のゲームをホストできるアプリケーションに取り組んでいます。これはまだリリースされていませんが、リリースされると、サーバー上でそのアプリケーションを実行することにより、Unityのサーバーなしで独自のゲームをホストできます。今、彼らはあなたに彼らのネットワークコードのいくつかを使うためにあなたにお金を払って欲しいが、本当のコーダーはこれをする必要はないだろう。