recherche
Maisoninterface Webjs tutorielnode.js est-il adapté au développement backend de jeux ? _node.js

Comment le serveur du site Web et le serveur de jeu sont-ils connectés ?

1. Il existe de nombreux types de jeux. Jetons d’abord un coup d’œil aux MMORPG.

Aussi simple soit-il, un serveur RPG ne peut éviter de gérer des interactions entre plusieurs personnes dans la même scène, chaque client doit recevoir des informations sur les opérations de tous les autres.

Deuxièmement, les opérations des utilisateurs sont très fréquentes et les serveurs généraux ont tendance à maintenir de longues connexions. De plus, ces liens interagissent fréquemment et il n'existe pas de stratégie de partitionnement persistante évidente, ce qui limite l'expansion horizontale du serveur. Le même scénario ne peut souvent être exécuté que sur une seule machine physique.

Troisièmement, les jeux clients n'osent généralement pas effectuer d'opérations logiques sur le client. Il est très courant que les utilisateurs le déchiffrent pour vous en quelques minutes, changent des pièces d'or et achètent deux pièces d'équipement. Par conséquent, ce serveur de carte doit vérifier les opérations de tous les joueurs sur la carte et calculer une série de logiques métier telles que l'IA des monstres et le taux d'abandon.

Nous pouvons constater qu'il existe des différences évidentes entre les serveurs de jeux traditionnels et les serveurs Web, avec des exigences commerciales uniques telles que des connexions longues, la multidiffusion, une logique métier complexe et des stratégies de partitionnement limitées.

2. Jetons un coup d'œil aux avantages de la concurrence pour les serveurs de jeux.

La concurrence est en fait un processus logique de programme et elle ne nécessite pas de support physique multicœur. Le sens général est de donner l’impression que plusieurs flux logiques indépendants s’exécutent en même temps. La concurrence au niveau du système d’exploitation est le modèle multi-processus multi-thread. Laissez le système d'exploitation gérer les interruptions d'horloge, le blocage des E/S et d'autres problèmes.

Pour le serveur, si la tâche passe la plupart de son temps sur io, le mécanisme de concurrence peut empêcher l'intégralité du service de carte d'être bloqué par l'accès io. Lorsqu'une tâche est bloquée, allouez des ressources informatiques disponibles à d'autres tâches. Dans ce cas, la simultanéité est bénéfique pour l’efficacité du serveur et le temps de réponse.

Pour les programmeurs, un flux logique indépendant signifie qu'ils peuvent effectuer leurs tâches dans un contexte fiable, simple et faiblement couplé.

Étant donné que la commutation logique du gestionnaire du système d'exploitation doit tomber à plusieurs reprises dans le noyau, certaines personnes pensent que cela est trop lent, elles créent donc des threads dans l'espace utilisateur et contrôlent plusieurs flux logiques au sein du processus. En raison des limitations des capacités de description du langage, il est trop difficile d'écrire et d'utiliser de telles choses en C/C. En conséquence, le sucre syntaxique coroutine en Erlang, Go et Lua est né.

Node.js contrôle essentiellement plusieurs flux logiques par lui-même, mais ce flux logique est distribué en fonction du statut et de la priorité des io. Dans l'implémentation actuelle, il essaie d'utiliser des io asynchrones non bloquants. Lorsqu'une seule tâche appelle io, je l'arrête et lorsque le signal d'achèvement io est envoyé, je la redémarre.

Notez ceci : chaque fois que j'exécute une tâche, je ne basculerai pas activement vers d'autres flux de programme jusqu'à ce qu'elle soit terminée ou qu'un appel io se produise. Ainsi, si cette tâche implique trop de calculs, tout le processus de cartographie sera ici bloqué.

Étant donné que node.js est asynchrone, vous devez constamment écrire des rappels pour surveiller le signal d'achèvement io. Le flux logique d'une seule tâche sera interrompu plusieurs fois. Lorsque la tâche devient assez complexe, il y a ce qu'on appelle l'enfer callbak, qui posera de gros problèmes au débogage et au développement.

3. Pour les raisons ci-dessus, je ne recommande pas d'utiliser node.js dans le développement de serveurs MMORPG non prototypes.

4. Les serveurs de jeux mobiles récemment apparus sont tout à fait adaptés à node.js, car les jeux mobiles sont limités aux problèmes de réseau Le serveur ne peut vérifier que les données clés et ne peut pas gérer les interactions entre plusieurs personnes. . Le côté serveur a été simplifié au point qu'il n'est pas différent d'un serveur Web, et la logique métier est également simple, il suffit de traiter les données puis de les conserver.

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel