検索
ホームページウェブフロントエンドjsチュートリアル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 サーバーと変わらないほど単純化されており、ビジネス ロジックもデータを処理して保持するだけで済みます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン