zoukankan      html  css  js  c++  java
  • 游戏服务器语言之争

    开发语言的选择


    业界主要的是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 的服务器,轻则影响玩家体验,重则导致公司倒闭。

    开发效率。这个方面除了受语言特性本身影响,还需要考量其它要素,比如生态圈丰富程度(需要的功能可以容易找到稳定好用的库)、周边工具链完善程度、人员补充难易程度(是否是学校培训的主力语言、是否是领域比较主流的语言,或者是否足够简单好培训)、现有遗留人力和技术资源的价值等等。

    为何游戏服务端用 C++ 来写,是历史原因还是性能方面的考虑?

    从C++到GO

    使用 Go 语言开发大型 MMORPG

  • 相关阅读:
    golang 的几个入门资料
    docker 容器网络基础
    nginx 容器反向代理网址的设置
    【知乎Live】狼叔:如何正确的学习Node.js
    nginx资料汇总
    web 框架
    work behind corp proxy
    [转载] 历史上前端领域的重要技术革命
    前后端要不要分离以及如何做
    微电子工艺基础知识讲解(集成电路历史/厂商/产业链)
  • 原文地址:https://www.cnblogs.com/losophy/p/10592884.html
Copyright © 2011-2022 走看看