【千里之行,始于足下】游戏服务端开发--开发语言篇

相信刚入行的同学,或者渴望学习的同学一定加入过几个技术讨论相关的qq群或者经常去逛逛论坛,那么在讨论中你一定参与过哪门语言才是最牛B的之类的这种话题,或者写c的鄙视写面向对象语言的,写c++的鄙视写java的,写java的鄙视写c#的,写c#鄙视写python的,写python的鄙视写php的等等。没错,在做一个项目的时候,对项目中技术选型来说,语言是一个很重要的因素,选择使用哪门语言要跟具体的业务需求、产品开发周期、人员配置、公司技术沉淀等方面来综合考虑,那么在做游戏开发中,应该如何选择开发语言呢,下面我就谈一下我的思路。

目前做游戏服务端开发的同行们大多数使用的是C++、JAVA,最近几年也有使用node.js和python的,甚至一些卡牌游戏使用了php作为服务端开发语言,我这篇文章不是要喷哪个语言的好坏,而是客观的分析不同语言所能适应的不同开发需求。

游戏类型的不同对于服务器的压力是有很大差别的,比如最早的棋牌游戏,虽然大多数都是c++写的,但是现在看来并没有使用c++开发的必要了,因为早期的硬件很受限,所以就需要使用运行时高效一些的语言来完成游戏的开发,但是现在的硬件已经今非昔比,而棋牌游戏其实在游戏逻辑上是比较简单的,复杂一点的是棋牌游戏大多数提供的是一个大世界的概念,就是是说很少有棋牌是分区分服的,这个大世界属于开房间方式的,比如qq游戏的斗地主,就是很典型的开房间模式,这样可以在一个游戏线程或者进程里跑若干个房间,然后游戏服务器在通过内部的一些分布式解决方案来处理游戏逻辑之外的逻辑,由于重点是如何做负载均衡而不是压榨单机的性能,所以选择一门开发效率高、运行时较安全的语言是比较适合棋牌类的,所以,对于逻辑不复杂的游戏我们可以考虑使用一些脚本语言来实现,在这里我比较推荐使用python。

如果游戏是一个对实时性要求较高的,那么就不太适合使用脚本语言了,我们可以抛开网络的因素不谈,现在的网络情况和服务器硬件条件都比较理想了,在网络上的开销显得不是十分重要了,重要的是如何能让游戏的玩法逻辑消耗尽量少的时间,现在大部分游戏都是单线程来处理游戏逻辑,所以服务器的每个tick的操作时间便成为了一个性能的瓶颈,单线程的处理能力大小就跟编程语言有关了,编译型的语言在这个场景上就是有天生的优势的。

游戏服务器的侧重点我认为是:稳定性>安全性>性能,无论选择哪种语言,团队中都应该有一个可以hold住这门语言的人员存在,这样无论是制定开发的代码风格标准还是遇到了比较深的坑,都可以有人能搞的定它,所以说在选择哪门语言的时候也要根据团队中的实际情况,酌情选择,不能为了追求逼格而铤而走险。

我整理了一下几种语言的对比,如下表格:

 

 语言安全性开发效率运行效率代码维护总结
C++对开发人员的技术水平要求比较高,否则代码质量低劣,会造成项目上线频繁宕机,开发过程中可以使用的框架也比较少,很多东西需要自己开发,所以也会拉长开发周期,但是执行效率很高,适合开发对实时性要求苛刻逻辑复杂的游戏。
javajava人才众多,语言的使用也比较简单,并且语言自身的安全性也较高,不容易写出经常宕机的程序,框架众多,开发效率较高,但是执行效率上不如c++,适合对实时性要求不苛刻逻辑复杂的游戏类型。
python语言极其简单易学,自身也带有较强大的异常处理,开发效率我认为是最高的,但是python的调试也确实不太给力,并且作为游戏服务器来说,运行效率还是要低一些,所以它适合对实时性要求不高,逻辑中等的游戏类型。
node.jsjs是做web开发的最爱,此门语言的群众也较多,开发效率较高,由于匿名函数的存在,使得node的开发人员在开发过程中产生较多的匿名函数,这对项目的后期维护来说简直是灾难,所以它适合对实时性要求中等,逻辑较少的游戏类型

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值