開發語言的選擇
業界主要的是c/c++ + Python/lua模式做游戲服務器。c/c++做網絡通訊數據傳輸,python/lua做業務邏輯。這樣既保持了網絡傳輸的效率(c++),又提升開發效率(Python/lua),同時也支持熱更新。
當然,也有其他服務器開發語言,erlang(頁游公司用的多),node.js(少量游戲用的,還有一個node.js寫的引擎叫pemolo)
常見 MMORPG 服務器在技術層面的特性需求:
網絡IO密集。高頻率的視野同步消息(一般在 10-60Hz 之間),與玩家數量的關系是 O(n^2) 的復雜度,對於一些側重國戰等玩法的 MMORPG 尤其壓力山大。通常都需要配合相關視野管理算法來減少消息發包數量,甚至需要配合架構做廣播的負載分流。
CPU密集。MMORPG 的玩法規則都需要服務器做權威性的計算,簡單些的也需要大量怪物的 AI 和尋路計算,以及實時戰斗的邏輯和技能運算等等;一些先進的 3D MMORPG 服務器甚至整合了物理引擎,來做碰撞檢測和校驗。
實時性。此類游戲側重實時戰斗和交互體驗,能容忍的響應延遲通常在 200ms 以內,即使可以通過客戶端預演算進行緩和。考慮到網絡延遲這個不能通過語言和架構來解決的要素,兩次游戲邏輯更新發包的間隔最好控制在幾十毫秒這一量級。(所以一些 GC 不太注重實時性的語言,可能會有潛在的負面體驗影響)。
穩定性和容災。常 Crash 的服務器,輕則影響玩家體驗,重則導致公司倒閉。
開發效率。這個方面除了受語言特性本身影響,還需要考量其它要素,比如生態圈豐富程度(需要的功能可以容易找到穩定好用的庫)、周邊工具鏈完善程度、人員補充難易程度(是否是學校培訓的主力語言、是否是領域比較主流的語言,或者是否足夠簡單好培訓)、現有遺留人力和技術資源的價值等等。