3

趣味のプロジェクトとして、私は現在、小さなブラウザー ベースのゲームを作成しようとしています。ゲームの「エンジン」をプレゼンテーションから分離して、MVC パターンを使用してコーディングするのが「正しいこと」だと思いました。これは単純な「RPG」ゲームで、プレイヤーのキャラクターが世界をさまよってモンスターと戦い、アイテムを収集します。

私の問題は、エンジンの構造に行き詰まったことです。現在の設計では、ほとんどのエンジンは「プレイヤーのキャラクター」オブジェクトによって支配されています。場所、モンスター、アイテムなどがありますが、移動、攻撃、アイテムの購入など、ほとんどのアクションを実行するのはキャラクターです。そのようなエンジンを設計するにはおそらく他の方法があることを知っていますが、どういうわけか私はそれを理解できないので、ここでいくつかのヒントやアドバイスを求めています.

ああ、サーバーのバックエンドは php+mysql になります。

4

3 に答える 3

4

「しかし、ほとんどのアクションを実行するのはキャラクターです:」

はい、でも...

まず、人間のユーザー (「プレイヤー」) をキャラクターから分離します。キャラクターはプレイヤーではありません。

多数のオブジェクトがあります。ロケーション、受動的なもの、能動的なもの (モンスター)、そしてキャラクター。それらはすべて互いに相互作用します。

責任を完全に分離する必要があります。キャラクターは支配するのではなく、ただ参加するだけです。

考えられる人間のプレイヤー アクションをそれぞれCommandとして定義すると、より快適になります。Commandの各サブクラスは、モデルの状態を変更できます。モノが動く、モンスターが動く、キャラクターが動く(プレイヤーではなくキャラクター)

何かを持ち上げたり、置いたりすることは、コマンドのサブクラスであり、物をキャラクターから場所へ、または場所からキャラクターへと移動させます。プレイヤーはコマンドを発行します。このコマンドは、場所、アイテム、およびキャラクターを更新します。

キャラクターは受動的です。物事はほとんど受動的です。場所はほとんど受動的です。Command オブジェクトには、モデル内のさまざまなものの間で状態と関連付けを更新するためのアルゴリズムがあります。

これをさらに進めたい場合は、各コマンドを元に戻す機能と実行機能を備えたメメントにすることができます。そして、ゲームの歴史はこれらのメメントの歴史です。

于 2008-11-03T00:13:38.107 に答える
0

キャラクターはモデルの一部ですが、そのキャラクターは抽象的です。サーバー上のオブジェクトまたはデータ構造にすぎません。私がMVCに対して正直に保つために使用する1つの手法は、グラフィカルなビューとコントローラーなしでモデルを駆動する方法を持っていることです。Webベースのアプリの場合、テキストのGETリクエスト、またはXMLRPCなどを介してアプリを駆動できます。

于 2008-11-03T01:36:10.733 に答える
0

私はあなたの質問について少し混乱しています。

MVCは、ゲームエンジンの設計とは別のパターンであり、基になるエンジン構造がどのように見えるかに関係なく、MVCパターンが必要です。ユーザーはビューを操作し、ビューを操作してコントロールに送信します。あなたの場合、「M」は現在のゲーム状態の非常に複雑なモデルである可能性があります。

まず、純粋にデータ主導の観点からこれについて考えることから始めます。発生するすべては、キャラクターモデルの操作になります。

于 2008-11-03T00:14:25.843 に答える