ゲームでのStrixのライフサイクル¶
ここではゲームでStrixを使用する際に、いつ何をすればいいのかを要約します。
初期化¶
Strixに対応してゲームで最初に行うことは、Strixネットワークの初期化です。これは、BlueprintからInitializeStrixNetwork
を呼ぶことで行います。(詳しくは接続を参照。)
ゲーム中でいつ行っても構いませんが、他のStrixの関数を使用したりStrixのコンポーネントをアタッチしたアクターをスポーンしたりする前に行っておく必要があります。大抵のゲームはこの関数を、GameInstanceクラスか、GameModeクラスか、最初のレベルBlueprintのBeginPlayイベントで呼び出します。
接続への接続とマッチメイキング¶
Strixの基本のサーバーシステムはマスターサーバー1台とルームサーバー1台以上から構成されています(小規模なゲームでは、1台のサーバーインスタンスがマスターサーバーとルームサーバーを兼ねることもできます)。1つのルームサーバーには複数のルームがあります。(詳しくはStrixアーキテクチャの概要をご覧ください。)
特定の1つのルームを(おそらく)多数のルームの中から選ぶための(つまり、マッチメイキングの)ロジックと選択基準はゲームデザインによって異なりますが、それがどのようなものであれ、複数のクライアント間でゲームワールドを共有する(つまり、アクターを複製して同期する)ためには、どこかのルームに参加する必要があります。それには、まずマスターサーバーに接続し、その後(いくつかあるかもしれない中から)適切なルームサーバーに接続する必要があります。
接続を行う方法はいくつかあります。ゲームに最適な方法を選んでください。最も一般的な構成では、ゲームクライアントが次の手順をこの順に実行することになるでしょう。
マスターサーバーに接続します。
問い合わせを行って、可能性のあるルームの一覧を見つけます。
一覧から参加するルームを一つ選びます(適したものがなければ作成します)。
そのルームがあるルームサーバーに接続しルームに参加します。
(詳しくはマスターサーバー接続、ルームサーバー接続、ルームとマッチメイキング)を参照してください。)
複製と同期¶
ルームに参加したなら、同じ部屋にいる他のクライアントとの間で、Strixのコンポーネントがアクターを複製し同期し、それらのプレイヤーたちに同じゲームプレイを共有させます。
そのためには、ゲーム内の各アクターに適切なコンポーネントたちをアタッチする必要があります。(詳しくはゲームプレイの同期を参照してください。)Strixのコンポーネントが提供する以上の何かを行いたいのであれば、RPCを利用して、それ以上にアクターをコントロールすることもできます。
複製されているオブジェクトの破壊¶
使用しなくなったアクターは破壊されます。Strix Replicatorコンポーネントを持つアクターが破壊されたときに起きることは、そのアクターがローカルにスポーンされたオリジナルなのか、他のクライアントからのレプリカなのかによって異なります。オリジナルのアクターが破壊されると、全てのクライアントで全てのレプリカが削除されます。しかしレプリカが破壊されたときには、他のクライアントにある他のレプリカやオリジナルはそのままです。つまり、ゲームロジックでは、オリジナルのアクターのみを破壊するようにし、それに他の全てのレプリカを破壊させるようにするべきです。(具体的な方法は所有権を参照してください。)
ときには、Unreal Engineが自動的にアクターを削除する際、例えば新しいレベルに切り替える際に、レプリカを保護したい場合もあるかもしれません。必要であれば、Strixの破壊伝達を一時停止することができます。(一時停止 を参照してください。)
終了¶
ルームの使用を終えたなら(例えば、対戦に勝利したり、途中でやられてしまったり、他のどんな状況であっても)、ルームから退出するかルームサーバーとの接続を切断します。使用されなくなったルームは削除されます。(詳しくはルームからの退出と削除を参照してください。)
ゲームのオンライン機能を終了する(そして、多分オフラインの一人プレイに戻るか、ゲームクライアントそのものを終了する)場合には、Strixネットワークを停止できます。(詳しくはStrixネットワークの停止を参照してください。)