Photon Serverの公式フォーラムで質問しましたが、このウェブサイトほど活発ではないので、私が話していることを理解している人もいるかもしれませんので、時間と知識があれば共有してください。ありがとうございました!
ここに来る...
だから、私はPhoton上のサーバーの非常にうまく機能するプロトタイプと、サーバーと通信する基本的なUnity3Dクライアントを持っています。これは、cjrgamingの例から作成されました。
クライアントは次のことができます:接続、リクエストの送信、暗号化されたリクエストの確立と送信サーバーは次のことができます:ピアの作成、操作リクエストの受信、クライアントへの操作応答またはイベントの送信、私の小さな追加は次のとおりです:ゲームに多くの操作がある場合、巨大なswitch caseステートメントを使用する必要はありませんが、操作をカテゴリ(クラス)に分割し、デリゲートとディクショナリを使用してそれらを呼び出します。
投稿の準備ができたら、その実例を投稿しますが、実際の質問に答えます。(長い投稿で申し訳ありませんが、私が知っていることとこれまでに持っていることを説明する必要がありました):
クライアントからサーバーに送信される実際の操作は何ですか?または、サーバーからクライアントに発生したイベント(すべてのクライアントを一度に?)?
最初は、それぞれの操作がゲーム内の特定のユーザーフローだと思っていました。たとえば、操作コード「1」は、プレーヤーXがプレーヤーYを撃ち、何かをしたいことを意味します。しかし、その後、バイト制限に従って、short intなどに拡張せずに、すべてのゲームロジックを255回の操作だけに入れることはできないことに気付きました。
次に、同じ操作コード要求で異なる可能性があるchannelIDもあることがわかりました...つまり、操作コードはユーザーフローではなく、クライアント間の同じ/類似のアクションのデータストリームですおよびserverであり、channelIDを使用して、サーバーで計算される要求された操作を区別できます。
それで...!私は(ダミーの私)、クライアントからサーバーに、またはその逆に送信されるパラメーターが辞書にあることに気付きました。これにより、可能なユーザーフローの別のレイヤーが追加されます。
だから..今、私は物事を理解していると思いますが、彼らは私をさらに混乱させました。
誰かが操作/イベント/channelIDの目的を簡単に説明できますか?たとえば、小さなマルチプレーヤーゲームを行う場合、ユーザー(ゲーム)フローを作成するために使用するものは、次のようになります。->プレーヤーがターゲットに当たる、プレーヤーが世界のアイテムを拾う、プレーヤーがメッセージを送信する。このフローごとに一意のオペコードを使用しますか、それとも操作を意味ごとにグループ化し、チャネルを使用してリクエストを区別しますか、それともここでも、多くのユーザーフローに同じchannelIDを使用し、パラメーター内のIDでそれらを異なりますか?
私が意味をなしたことを願っています。
少なくとも時間はありますが、助けてくれてありがとう!