Node.js はゲームのバックエンド開発に適していますか? _node.js
ウェブサイトサーバーとゲームサーバーはどのように接続されていますか?
1. まず、MMORPG について見てみましょう。
RPG サーバーがどれほど単純であっても、同じシーンに数百人がいる場合、各クライアントは他の全員の操作情報を受信する必要があります。
第二に、ユーザーの操作が非常に頻繁であり、一般的なサーバーは長時間の接続を保持する傾向があります。さらに、これらのリンクは頻繁に対話し、明確な永続的なパーティション分割戦略がないため、多くの場合、同じシナリオを 1 台の物理マシンでしか実行できません。
第三に、クライアント ゲームは通常、クライアントに論理演算を実装することを敢えてしません。ユーザーが数分でゲームを解読し、金貨を交換し、装備を 2 つ購入することがよくあります。そのため、このマップサーバーはマップ内の全プレイヤーの動作を検証し、モンスターAIやドロップ率などの一連のビジネスロジックを計算する必要があります。
従来のゲーム サーバーと Web サーバーの間には明らかな違いがあり、長い接続、マルチブロードキャスト、複雑なビジネス ロジック、制限されたパーティショニング戦略などの独自のビジネス要件があることがわかります。
2. ゲームサーバーに対する同時実行の利点を見てみましょう。
同時実行性は実際にはプログラム ロジック プロセスであり、マルチコアの物理サポートを必要としません。一般的な意味は、複数の独立したロジック フローを同時に実行しているように見せることです。オペレーティング システム レベルの同時実行性は、マルチプロセス マルチスレッド モデルです。 OS にクロック割り込み、IO ブロッキング、その他の問題を処理させます。
サーバーの場合、タスクがほとんどの時間を IO に費やす場合、同時実行メカニズムにより、マップ サービス全体が IO アクセスによってブロックされるのを防ぐことができます。タスクがブロックされている場合は、予備のコンピューティング リソースを他のタスクに割り当てます。この場合、同時実行性はサーバーの効率と応答時間に有益です。
プログラマーにとって、独立したロジック フローは、信頼性が高く、シンプルで、疎結合されたコンテキストでタスクを完了できることを意味します。
OS ハンドラーのロジックの切り替えはカーネル内で繰り返し実行される必要があるため、これでは遅すぎると考える人もいます。そのため、ユーザー空間にいくつかのスレッドを作成し、プロセス内の複数のロジック フローを制御します。言語の記述能力には限界があるので、C/Cでそんなものを書いて使うのは面倒です。その結果、Erlang、Go、Lua のコルーチン構文シュガーが誕生しました。
Node.js は基本的に複数の論理フローを単独で制御しますが、この論理フローは io のステータスと優先度に基づいて分散されます。実際の実装では、単一タスクが io を呼び出すと、それを停止し、io 完了シグナルが送信されたときに、それを再起動する、ノンブロッキングの非同期 io を使用しようとします。
タスクを実行するたびに、タスクが完了するか IO 呼び出しが発生するまで、他のプログラム フローに積極的に切り替えることはありません。したがって、このタスクに多くの計算が含まれる場合、マップ プロセス全体がここでブロックされます。
node.js は非同期であるため、IO 完了信号を監視するためにコールバックを常に記述する必要があります。単一タスクの論理フローは複数回中断されます。タスクが非常に複雑になると、いわゆるコールバック地獄が発生し、デバッグや開発に大きな支障をきたします。
3. 上記の理由により、プロトタイプ以外の MMORPG サーバー開発では node.js を使用することはお勧めしません。
4. モバイル ゲームはネットワークの問題に限定されているため、最近登場したモバイル ゲーム サーバーは、node.js に非常に適しています。 。サーバー側は Web サーバーと変わらないほど単純化されており、ビジネス ロジックもデータを処理して保持するだけで済みます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
