デザインパターンに精通した達人に、Webゲームの基本パターンについて質問したいと思います。
デザインパターンに精通した専門家にWebゲームの基本パターンについてお聞きしたいと思います。
簡単な Web ゲームを開発します。すべてのプログラムおよび機能要件は当社によって満たされるものとみなします。現在の問題は、デザインパターンの選択と処理です。
以下は私の初期設定です:
基本分析:
仮想プレーヤー。 私のシステムは UI と操作ボタンを提供できる必要があります。プレーヤーの属性とメソッドを提供します。
仮想世界。 私のシステムは、比較的完全な仮想世界を構築できる必要があります。マップ、都市、建物、店舗、住居、アイテム、価値観(資金、経験値、名声ポイント、スキルポイント)
、バックパック、装備品等があります。これらはすべて php+mysql+javascript に基づいて実装されています。
プレイヤーのインタラクション。 私のシステムには、プレイヤーが相互に対話するための機能が必要です。さまざまな対話操作が可能です。短いメッセージ、バトルの招待、コントロールバトル、マルチプレイヤーバトル、そして一緒にタスクを完了します。等
プレイヤーは仮想世界と対話します。 私のシステムにはプレイヤーが操作できる機能が必要です。さまざまな機能操作を実行できます。
誕生、学習、移動、仕事、ビジネス (売買、交換 (アイテム、資金、アイテムを含む)、カスタムタスク)、コミュニケーション、戦闘 (一連の機能)、
タスクの実行 (一連の機能)機能と時間と報酬の収集)。アイテム取り扱い。資金処理。
定義:
私は上記の内容を個人的に次のように定義します:
ユーザー (プレイヤーが操作する部分) トリガー (最初にイベントをトリガーする必要があります、仮想クラス) アクション (など)移動、仕事などはすべてイベント、仮想クラスです) AbstractItem (地図、都市、小道具などはすべて仮想アイテム、仮想クラスです)
メソッド:
ユーザー: display() doAction ()
ユーザーは実際のユーザー操作のみです。
Trigger:display()doAction()needTime()beginTime()endTime()
Trigger の派生クラスには、即時実行、カウントダウン実行、プレイヤー インタラクション実行があります。
Action: display()doAction()begin()Process()end()
Action は、移動、作業、戦闘、イベントを含む Action の派生クラスであるイベントの開始、処理、終了を提供します。等
AbstractItem: display()get()lose()use()
AbstractItem は、ゲーム全体のすべての仮想アイテムを構築します。 AbstractItem の派生クラス (マップ、都市など) (文字自体を含む)。
モード:
私の個人的な考えは、ユーザーは単なるドライバーであるということです。トリガーはユーザー主導のイベントを提供し、アクションの実行時間を制御します。 AbstractItem は、すべての Action 関連の対応するオブジェクトを提供します。
この時点では、User と Trigger はブリッジ モードになっているようで、Action と AbstractItem もブリッジ モードになっているようです。トリガーとアクションは Abstractfactory モードに似ています。
さらに、タスク関数が必要です。個人的には、タスクとは一連のトリガーの組み合わせであると考えています。前奏、後奏などを含みます。個人的にはTaskクラスは必要だと思うのですが、Actionに入れるのが良いのか、Triggerに入れるのが良いのか、それとも独立させた方が良いのかわかりません。
同時に、これは Web ゲームであるため、インスタントまたは半リアルタイムのインタラクションが ajax を通じてシミュレートされます。専用のタイマー機能がすでにあります(プログラムの実行環境にこの機能があると考えてください)。
表示部分はWebページまたはUIパッケージです。言語パックとタスク ダイアログ パックが必要な場合があります。もちろん、そこで使用される画像も画像パッケージにしたいと考えられます。画像パッケージは UI パッケージに属する場合もあります。
質問:
1. 最上位のモードは何ですか、またはどのモードを選択するのがより合理的ですか?
2. 現在のモデルはより合理的だと思いますか、それともより良い最適化方法はありますか?
3. タスクに参加するには?
4. Ajax とトリガーおよびタイマーをより適切に組み合わせる方法は? (ajax は純粋な関数ですが、Trigger が再度使用されるためです。最も重要なことは、1 つは js で、もう 1 つは php であるということです...)
5. UI パッケージ (UI のセットが複数ある場合があります)、言語パッケージ (おそらく多言語)、ダイアログ パックなど、それらをゲームに合理的に追加するにはどうすればよいですか? (データベース?フォームに入力?ini?)
専門家からのアドバイスをお願いします!コードは必要ありません。アイデアだけで十分です。もちろん、サンプルとコードの方が優れています。
-----解決策---------------------------- -
やったことがない、Ajax はおそらく無理
Ajax は単一の通信であり、http の長い接続を使用しているのを見たことがありますが、連続リクエストの数は非常に多くなります
その他については、オブジェクト指向の考え方に従って設計する必要があります
オブジェクトイベント属性メソッド
------解決策------------------
正直、内容が理解できませんでした
私のWEBGAMEの考えと違います
あと、なぜデザインパターンを使わないといけないのですか?
引用しますが、ハンマーを手に持つと、すべてが釘のように見えます。
------解決策----------------------
パターンの役割を否定しません
ただ、モードにこだわるのではなく、モードを理解した上で使うべきだと思います。 。
------解決策------------------
個人的には、atcion の属性またはメソッドとして、ダイアログ パッケージをアクションとして使用する方が良いと思います
アクションは、トリガーされると、関連するダイアログ情報を提供または出力します。これは、システム レベル
ユーザー レベルの直接の出力です。
------解決策-----
フォロー...
------解決策---------
学んで注意を払う
------解決策----------------------
サーバーはさまざまなオブジェクトのステータスを保存するだけで済みます. ただし、
残りは JS アーキテクチャの問題です。
Web ゲームで最も重要なのは、開発効率ではなく実行効率です。
------解決策------------------
MVC は私が挙げた一例にすぎません。
Web ゲームの場合
JS はメモリとして扱われます。
PHP はハードディスクとして扱われます。
AJAX はデータ ストレージ操作として扱われます。デザインパターン

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











DJIはまだ新しいアクションカメラを導入する計画を確認していません。その代わりに、GoPro は今年、9 月 4 日に 2 台の新しいアクション カメラを発表すると予告し、ライバルに先んじることになるようです。

Docker では、マウント ディレクトリの権限の問題は通常、-v パラメータを使用してマウント ディレクトリを指定するときに権限関連のオプションを追加することで解決できます。マウントされたディレクトリのアクセス許可を指定するには、マウントされたディレクトリの後に ro または :rw を追加します。それぞれ、読み取り専用と読み取り/書き込みアクセス許可を示します。例: dockerrun-v/host/path:/container/path:roimage_name Dockerfile で USER ディレクティブを定義してコンテナ内で実行するユーザーを指定し、コンテナ内での操作が権限要件に準拠していることを確認します。例: FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

DJI が Osmo Action 4 (Amazon で現在 299 ドル) をリリースしてからほぼ 1 年が経過しました。それ以来、同社は新しい RS カメラ ジンバルを含む他の部門に注力してきました。それに加えて、Avata だけでなく、さまざまなドローンも導入しています。

Insta 360 は、Insta 360 X4 (Amazon で現在 499.99 ドル) に続いて 2 番目の新しいアクション カメラをリリースしました。予想どおり、同社は Go3 をアップグレードし、4K ビデオ録画機能を追加しました。

場合によっては、非同期である必要があるネットワーク リクエストなど、Vuex で非同期操作を実行したいことがあります。この状況にどう対処するか?Vuex 状態管理のアクション非同期操作を紹介します。困っている友達に役立ちます。

GoPro は毎年恒例のアクション カメラの刷新を導入しました。近年とは異なり、同社は2モデルのリリースを決定した。しかし、昨年の今頃、Max wi を置き換えるとほのめかしていたにもかかわらず、360 度カメラには戻っていません。

1. 基本概念 トリガーは特殊なストアドプロシージャです イベントを契機に実行されます jsのイベントに似ています 1. データを書き込む前に強制的にチェックや変換を行う機能ですデータ テーブル (データ セキュリティを確保するため) トリガー エラーが発生すると、変更の結果は取り消されます (トランザクションの安全性)。一部のデータベース管理システムでは、DDL トリガーと呼ばれるデータ定義言語 DDL のトリガーを使用できます。 2. トリガーの長所と短所 2.1. 利点 トリガーは、データベース内の関連テーブルを通じてカスケード変更を実現できます (1 つのテーブルのデータが変更された場合、トリガーを使用して操作を実装できます)ユーザーが知らないうちに他のテーブルに)保証されています

ウィンドウ (ウィンドウ アロケーターによって形成される) がウィンドウ関数によって処理される準備が整ったことを決定するトリガーを定義します。各 WindowAssigner にはデフォルト値の Trigger が付属しています。デフォルトのトリガーがニーズに合わない場合は、trigger(…) を使用できます。トリガーのソース コード publicabstractclassTriggerimplementsSerializable{/**要素が現在のウィンドウ内にある限り、このメソッドが呼び出されます*@paramelement受信した要素*@paramtimestamp要素の到着時刻。*@paramwindow要素が属する
