成果システムは開発の後半で実装できますか?


12

現時点でこの機能をゲームに実装するかどうかは未定です。私はプロジェクトが制御不能になることを望まないので、私は最初にコアメカニクスに焦点を合わせています。

これは、私がすべてをデータ駆動し、すべてを保存すると仮定して、後で実装するのが簡単な機能ですか?


3
数年前に特定の有名なDOSゲームをWindowsに移植しました。ゲームプレイに変更を加える場合、追加したいと思っていたものの1つは成果でした。そのため、明らかに設計されていない10年以上前のゲームに実績を追加できれば、どこにでも追加できると言えるでしょう。ヘック、この非常にサイトが実績を持っている...
ヤリKomppa

回答:


19

実装の技術的観点または設計の影響の観点から質問していますか?いずれにせよ、あなたの質問に対する答えは「はい」です。

技術的な側面から言えば、一般的に言えば、達成イベントに応答するコード内のフックを見つけて、そこに統計追跡コードを入れるだけです。ゲームで既に発生している正確に個別のイベントではないものを追跡する場合は、いくつかの新しいものを追加する必要があります(たとえば、X時間のプレイ時間)。

物事のデザインの側面から言えば、成果は外的な動機付けであり、それらを追加することは、コアゲームプレイループに実際にはあまり含まれていません。関係なく、彼らはかなり安全です。


はい、今これをやっています。shotsFired++新しい弾丸がインスタンス化shotsHit++される部分、および弾丸が別のプレイヤーに影響を与える部分にリンクするのはかなり簡単でした。誰がどの弾丸を撃ったかを追跡するのに役立ちました(情報を使用して誰が何を殺したかなどを追跡するため)
-bobobobo

5

ゲームエンジンが適切に設計され、何らかの観察可能なイベントシステム(イベントが生成され、関係者がリッスンする)を使用している場合、後から(追加することで)達成システムを「プラグイン」するのは非常に簡単です。適切なリスナー)。この種の設計は非常に柔軟です。


2

すでに既存の人々が良い答えを追加しているので、明らかにされていない状況に答えさせてください。

ゲームのコーディングを完了し、アチーブメントのコーディングを開始し、特定のイベントなどで多くの変数とカウントを維持し、それらをクリアするのが非常に複雑であることに気付いた場合。

すべてのイベントを受け取るために、常に1つのクラス(できればシングルトン)を作成できます。すべての成果を一覧表示します。次に、追跡する必要があるすべてのゲームイベントをリストします。たとえば、現在のリストは次のようになります

KILL ENEMY-ウォーキング、弾丸PLAYER DEATH-falling_off、health ENTER_ROOM、EXIT_ROOMなど

歩行、弾丸などの追加の詳細は、パラメータにすることができます。その達成追跡クラスにfireEventという1つの関数があります。イベント内でfireEventsを呼び出す必要があるコード内のすべての場所を検索し、その関数を呼び出します。ここで、Achievementsクラスで残りの汚い作業を行います。これは、既存のコードとコードの成果を妨げない最も安全な方法です。それは私にとってはかなり早く解決しました。


これは、開発後の実装にとって本当に優れたソリューションです。私はそれを実装したいかどうかまだわからないので、これを覚えておきます。プロジェクトの範囲を制御不能にしたくないので、後のフェーズでそれを行うかもしれません。
ブライアンハリントン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.