おそらく、6か月前に、6か月間マルチプレイヤーゲームのプロトタイプを作成したことについて書いたことを覚えている人もいるかもしれません。
投票の結果によると、観客はゲームのアーキテクチャに関する続編を書く価値があると判断しました。 カットの下で、今ではふさわしくない生産ドラマのジャンルの第2シリーズ、多くの写真、現在のゲームプレイと新年の猫のビデオ。
前のエピソードの要約

そして、実際に何が行われますか?
これまでのところ、共同の努力により、最初のゲームレースでタワーディフェンスを行い、グラフィックを常に改善しています。

鎧のオーク

スチームドローン

自走砲塔

ゴブリンのメカニック

錬金術師
- Goのボットを備えた超高速でスケーラブルな独裁的なゲームサーバー、再接続のサポート、およびリプレイの記録。
- 口platformを持つクロスプラットフォームの顧客。
- ボットとマッチメイキングを備えたロビーサーバー
- クロスプラットフォームランチャー
しかし、約束のトピックに戻ります。 私は、その価値を証明した主要な設計ソリューションを提供しようとします。 彼らはおそらく多くの人に自明のように思われますが、結局のところ、これは完全に真実ではないことがわかりました。 Unityに参加するためのしきい値が低いと、最も幼稚な設計エラーでさえ可能になります。
最初の考え
この場合のように、ゲームの状態が複雑なシリアル化されたデータ構造で記述されている場合、興味のある情報にいつでも簡単にアクセスできるはずです。 私たちのプロジェクトはカジュアルなメインストリームよりもやや複雑であるため、既製のUnityレシピは私たちには向いていません。 独自のテクノロジースタックを使用したため、シリアル化と逆シリアル化は2つで行われません。 このプロジェクトでは、サーバーは8人のプレーヤーにゲームのデルタ状態を1秒あたり10回json形式で送信します。 解決策として、サーバーメッセージを解析し、クライアント上のゲームの状態を更新し、ゲームデータへの便利なインターフェイスを提供するシングルトンを作成しました。
このアプローチでは、ユニットマネージャーやミニマップの座標など、さまざまなクライアントコンポーネントに必要な情報を取得するのは難しくありません。
このようなクラスのすべての機能をハングアップする誘惑がどれほど素晴らしいとしても
、慎重に、神のオブジェクトを覚えています。 どうやら、これは、サンクトペテルブルクでのUnity User Groupの最後の会議で、Sergei SychevがUnityでのOOPのトピックに関するスピーチで念頭に置いていたものです(公開時にレポートにリンクを追加します)、彼はシングルトーンをまったく使用しないように促しました。 しかし、私には、やめる時が来たときに比例感覚と常識があなたに言うように思えます。StateHub.Instance.GetLastKilledWithBlackMagicDwarfUID()
再考
この場合、イベントモデルを使用するのが理にかなっています。 「レギオン」にはフェーズの概念があります。 アリーナには、建設段階、戦闘段階、戦闘段階があります。 前述のように、サーバーは状態更新を1秒あたり10回送信します。 新しいメッセージの到着とフェーズ変更のイベントを生成します。 これは、ユニットのインスタンス、死体のアセンブリ、音楽テーマの切り替え、その他の功利主義的な操作を簡単かつ論理的に整理するのに十分です。 ゲームクライアントはゲームロジックを計算せず、本質的には単に「リモコン付きテレビ」であるため、これらの少数のイベントで十分です。
第三の考え
ビューとしてのMonoBehaviourの分離と、ユニットのゲーム情報の直接表示。 些細なことですが、結局のところ、多くのUnityプログラマーはほとんどすべてのコードを1つのスクリプトで記述しています。 小さなプロジェクトでは怖くありませんが、flappiberdよりも深刻なことを考えている場合は、事前に考えておくとよいでしょう。
前後
半年前
今
もちろん、まだ多くの作業がありますが、進歩は明らかです。
次のシリーズで

Spiced Jackalチームは、開発を続け、投資を探し、KrownGuardsと呼ばれるゲームを宣伝し、競争に勝ち抜くことを計画しています。 これらは私たちの努力の結果です。 私たちは、私たちとともに働いてくれたすべての人に感謝し、すべての人に明けましておめでとうございます。 2016年にまた会いましょう!
PS質問があれば、喜んでお答えします。
