2

要するに、私は2D mmorpgを作成していて、前回の「mmo」とは異なり、開発を開始しました。新しいゲーム内機能を追加したり、既存の機能を変更したりするときに、これが適切に拡張され、適切に機能することを確認したいと思います。

コードの最初の数千行以内でアバターチャットを最後に試み、基本的な機能をゲームに追加しただけで、コードの品質が低下し、新しい機能を追加したり古い機能を変更したりする能力も、さらに追加するにつれて低下しました。機能があります。それは、なんらかの方法で実行された1つの大きな混乱になりました(笑)。

今回は本当に腰を落ち着けて、機能の追加と削除が簡単なゲームフレームワークを作成できるデザインを見つける必要があります(私の世界でミニゲームをプレイしたり、メールシステムやバディリストなど)インタラクティブなアイテムを備えた新しいパブリックエリア)。

おそらくコンポーネントベースのアプローチが私が探しているものかもしれないと思っていますが、私は本当にわかりません。mmorpgデザインと2Dゲームエンジンアーキテクチャに関するドキュメントを読みましたが、基本的にメインゲームに新機能を「プラグイン」できるゲームフレームワークをデザインする方法を実際に説明したものはありません。

誰かが私の意味を理解してくれることを願っています、どんな助けでもありがたいです。

4

3 に答える 3

6

ゲーム内でコンポーネントベースのシステムを検索すると、実際に求めているものとはまったく異なるものが見つかります。そして、これを行うための最善の方法は、とにかく、まだ合意されているとはほど遠いです。だから私はそれをすることをお勧めしません。あなたが本当に話しているのは、実際にはゲームに固有のものではなく、MMOを気にしないでください。これは、拡張と改善を可能にする保守可能なコードを作成する機能にすぎません。これは、サービスとしてのゲームが非常に人気があり重要になるずっと前から、ビジネスソフトウェアの問題でした。

この問題への対処は、主に2つのことから来ていると思います。まず、将来の要件を理解しようとする優れた仕様と結果の設計が必要です。そうすることで、現在作成しているシステムをより簡単に拡張できます。プラグインアーキテクチャは、プラグインしたいものを正確に把握していなければうまく機能しません。100ページの設計ドキュメントを作成する必要があると言っているわけではありませんが、少なくともアイデアをブレインストーミングする必要があります。計画を立て、そこで共通点を探します。これにより、機能Aをコーディングするときに、将来の機能Bを念頭に置いて記述します。

次に、コードの操作と使用が簡単であることを意味する、優れたソフトウェアエンジニアリングの原則が必要です。例えば。SOLIDの原則を読み、これら5つのアイデアが役立つ理由を理解するために時間をかけてください。これらのルールに従うコードは、将来のニーズに合わせて調整するのがはるかに簡単です。

コードを改善するための3番目の方法がありますが、それはまだ役に立ちません。経験です。書くほど、そしてコーディングについて学ぶほど、コードは良くなります。MMOを使用すると、噛むことができるよりもはるかに多くのことを噛んでいる可能性があります(おそらく)。資格のある専門家のチームでさえ、その規模のプロジェクトを試みると、保守不可能なコードの混乱に終わるので、あなたもそうするのは当然です。しかし、彼らは何とか完了まで見ることができたコードの混乱を持っており、多くの場合、それはそれが何であるかであり、困難な状況になったときに停止して再設計することではありません。

于 2010-05-04T15:13:48.603 に答える
3

はい、私はあなたが欲しいものを手に入れました...

基本的に、ビジネスソフトウェアコーダーが使用するのと同じ古典的なOOP設計を使用する必要があります...

最初に基本エンジンをレイアウトする必要があります。そのエンジンには「モジュールローダー」または一般的なOOPスタイルのインターフェイスが必要です。次に、ロードするモジュールをコーディングするか(.dllなど)、ソース内で直接コーディングします。前述のOOPスタイルのインターフェイスを使用するコードであり、モジュールが相互に依存することを決して許可しないでください...

コード内であっても、通信は常にインターフェイスを使用する必要があります。モジュールに「パブリック」変数を配置して別の場所で使用しないでください。そうしないと、ひどく乱雑なコードで終了します。

しかし、それを適切に行うと、開発の途中で、私のゲームのゲームライブラリ全体(たとえば、ビデオ、マウス、キーボード、オーディオにアクセスするAPI)を変更することができます。 。ロジックとゲームライブラリ間のインターフェイスを作成したファイルを1つ再コーディングする必要がありました...)

于 2010-05-04T01:51:25.363 に答える
1

あなたが考えているのは、まさにこの記事が説明していることです。私がブログで書いたように、これはゲームを構築するための素敵な方法であり、この記事はあなたが始めるための優れたリソースです。

于 2010-05-07T19:28:43.703 に答える