當前位置: 華文問答 > 遊戲

為什麽多數遊戲伺服端是用 C++ 來寫呢,是歷史原因還是效能方面的考慮?

2015-04-26遊戲

首先現在遊戲伺服端都是用得多語言組合開發的,不僅僅是C++,還有Java,Python,Golang, Erlang,C#以及各種手稿語言。

一個專案在做技術選型時把C++作為遊戲伺服端的主要開發語言大概有以下幾個原因:

1.就如題主所言,有一定的歷史原因,因為國內的遊戲行業是在最近10來年催生起來的,加之很多專案要的是快速上線,所以就沿用了以前的老程式碼老框架,自然而然的繼承了前輩的C++程式碼;

2.需要做即時戰鬥的遊戲至少會把戰鬥伺服器使用C++來做,盡管現在有非常多的語言適合開發遊戲伺服端,但是在即時性這一塊依然沒有多少語言能與C++相抗衡;

3.伺服端需要整合物理引擎和高強度AI邏輯的也需要C++來做,這兩者都依賴於非常高的CPU計算,那麽在CPU利用率這一塊,在上述語言中無疑也只能選擇C++;

4.專案中大部份人包括後端技術Leader都是C++大神,他們有非常完備的工具鏈,他們用C++開發比用指令碼開發更有效率,也更穩定。

至於其他如易開發、IO框架、高並行和穩定性(高穩定性是建立在團隊水平上的)這些C++跟其他語言已經沒什麽大的優勢。

最後夾一點私貨,僅供參考:

遊戲邏輯常常具有某些特定的模式,一旦模式固化下來之後,用合適的STL容器加上合適的操作,就能規範的寫出很好的C++程式碼,開發難度並不高。例如,在某個戰略遊戲復雜系統中,我們曾經開發了近萬行程式碼一次new都沒有用過,物件全都使用unordered_map或vector管理,邏輯看起來仍然是非常簡單清晰的,雖然是C++但維護難度並不高。

換句話說,當遊戲專案相對成熟、大家普遍熟悉了系統之後,C++的開發效率並沒有想象的那麽低。