最近作成された多くのゲームには、特定のタスクを達成したことに対してプレーヤー/ユーザーに報酬を与える独自のアチーブメントシステムが付属しています。ここでのstackoverflowのバッジシステムはまったく同じです。
しかし、私が良い解決策を見つけることができなかったいくつかの問題があります。
アチーブメントシステムは常に特定のイベントに注意する必要があります。たとえば、戦闘で20〜30のアチーブメントを提供するゲームを考えてみてください。サーバーは、これらのイベントを常にチェックする必要があります(たとえば、プレイヤーがこの戦闘で対戦相手のx攻撃を回避したか、プレイヤーがxマイル歩いた)。
- サーバーは、速度を落としたり、クラッシュしたりすることなく、この大量の操作をどのように処理できますか?
アチーブメントシステムは通常、ゲームのコアエンジンでのみ使用されるデータを必要とし、それらの厄介なアチーブメントがなければ、とにかくそこからは必要ありません(たとえば、各戦闘中にプレーヤーがジャンプする頻度を考えてみてください。このすべての情報をデータベースに保存したくない。)つまり、アチーブメントを追加する唯一の方法は、現在の状態をチェックするコードをゲームコアに追加することであり、これは通常、非常に悪い考えです。
アチーブメントシステムは、後で不要な情報を保持するゲームのコアとどのように相互作用しますか?(上記の例を参照)
それらはゲームのコアからどのように分離されていますか?
私の例は「無害」に見えるかもしれませんが、たとえば、World of Warcraftで現在利用可能な1000以上の実績と、同時にオンラインになっている多くのプレーヤーについて考えてみてください。