首頁 web前端 js教程 node.js適合遊戲後台開發嗎? _node.js

node.js適合遊戲後台開發嗎? _node.js

May 16, 2016 pm 04:37 PM
node.js 遊戲後台開發

網站伺服器和遊戲伺服器是怎麼樣聯繫在一起的?

1. 遊戲分成多種,咱們先來看看MMORPG。

再怎麼簡單的RPG伺服器都免不了處理多人互動的情形,上百人在同一個場景裡面,每個客戶端都需要收到其他所有人的操作訊息。

其次,使用者的操作是非常頻繁的,一般的伺服器傾向於持有長連線。而且這些連結的是頻繁互動的,沒有明顯的持久的分區策略,所以限制了伺服器的橫向擴展,同一個場景往往只能放在一個實體機上面運行。

再一次,端遊通常是不敢把邏輯運算放客戶端的,用戶分分鐘給你破解掉,改改金幣,刷兩件裝備再常見不過了。所以這一台地圖伺服器得驗證地圖內所有玩家的操作,並計算怪物AI、掉率等一系列商業邏輯。

我們可以看到,傳統遊戲伺服器與網頁伺服器有明顯的區別,具有長連線、多廣播、有複雜的商業邏輯、分區策略受限等獨特的業務需求。

2. 咱們在來看看並髮帶給遊戲伺服器的好處是什麼。

並發其實是一種程序邏輯流程,他是不需要多核心物理支援的。大致上意思就是讓多個獨立的邏輯流看起來像是在同時跑一樣。作業系統層級的並發就是多進程多執行緒模型。讓OS處理時鐘中斷,io阻塞等等問題。

對於 伺服器 而言,如果任務大部分的時間耗在io上,有了並發機制可以避免整個地圖服務被io訪問阻塞。一個任務阻塞的時候,把空餘運算資源分配到其他任務上去。在這種情況下,並發是有益於伺服器運作效率還有回應時間的。

對程式設計師而言,獨立的邏輯流意味著可以在一個可靠、簡單、鬆散耦合的上下文環境裡面,完成自己的任務。

因為讓OS處理程序邏輯切換得反覆陷入內核,有的人覺得這樣太慢,做了一些處於user space的線程,進程內自己控制多個邏輯流。因為語言描述能力的限制,在C/C 上面寫還有用這種東西都太麻煩。於是產生了erlang, go, lua裡面的coroutine語法糖。

node.js本質上也是自己控制多個邏輯流,但是這個邏輯流是根據io狀態還有優先權分發的。在實際的實作中,它盡量採用非阻塞非同步io,單一任務呼叫io的時候,我就停掉它,等io完成的訊號發上來了,我再重啟它。

注意這一點,每次我會執行一個任務,直到它完成或是發生io呼叫都不會主動切換至其他的程式流。那如果這一個任務裡面涉及過於大量的計算,那麼整個地圖程序都會被block在這裡。

而正因為node.js是非同步的,所以需要不斷的寫回呼監聽io完成的訊號。單一任務的邏輯流會多次的被打斷。當任務變得相當複雜的時候,也就是有所謂的callbak hell,會帶給調試開發非常大的麻煩。

3. 因為上面的原因,所以我不建議在非原型的MMORPG伺服器開發中使用node.js。

4.最近興起的手遊伺服器倒是挺適合node.js,因為手遊這玩意局限於網路問題,伺服器只能做關鍵資料驗證,也沒辦法處理特別多人交互的情形。伺服器端已經簡化得跟網頁伺服器沒啥區別了,業務邏輯也簡單,處理處理數據,然後持久化就成。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

一文聊聊Node中的記憶體控制 一文聊聊Node中的記憶體控制 Apr 26, 2023 pm 05:37 PM

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

圖文詳解Node V8引擎的記憶體和GC 圖文詳解Node V8引擎的記憶體和GC Mar 29, 2023 pm 06:02 PM

這篇文章帶大家深入了解NodeJS V8引擎的記憶體和垃圾回收器(GC),希望對大家有幫助!

深入聊聊Node中的File模組 深入聊聊Node中的File模組 Apr 24, 2023 pm 05:49 PM

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

聊聊如何選擇一個最好的Node.js Docker映像? 聊聊如何選擇一個最好的Node.js Docker映像? Dec 13, 2022 pm 08:00 PM

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

Node.js 19正式發布,聊聊它的 6 大功能! Node.js 19正式發布,聊聊它的 6 大功能! Nov 16, 2022 pm 08:34 PM

Node 19已正式發布,以下這篇文章就來帶大家詳解了解Node.js 19的 6 大特性,希望對大家有幫助!

聊聊Node.js中的 GC (垃圾回收)機制 聊聊Node.js中的 GC (垃圾回收)機制 Nov 29, 2022 pm 08:44 PM

Node.js 是如何做 GC (垃圾回收)的?下面這篇文章就來帶大家了解一下。

一起聊聊Node中的事件循環 一起聊聊Node中的事件循環 Apr 11, 2023 pm 07:08 PM

事件循環是 Node.js 的基本組成部分,透過確保主執行緒不被阻塞來實現非同步編程,了解事件循環對建立高效應用程式至關重要。以下這篇文章就來帶大家深入了解Node中的事件循環 ,希望對大家有幫助!

node無法用npm指令怎麼辦 node無法用npm指令怎麼辦 Feb 08, 2023 am 10:09 AM

node無法用npm指令是因為沒有正確配置環境變量,其解決方法是:1、開啟“系統屬性”;2、找到“環境變數”->“系統變數”,然後編輯環境變數;3、找到nodejs所在的資料夾;4、點選「確定」即可。

See all articles