游戏服务器开发技术选型

开发语言的选择



业界主要的是c/c++ + Python/lua模式做游戏服务器。c/c++做网络通讯数据传输,python/lua做业务逻辑。这样既保持了网络传输的效率(c++),又提升开发效率(Python/lua),同时也支持热更新。

当然,也有其他服务器开发语言,erlang(页游公司用的多),node.js(少量游戏用的,还有一个node.js写的引擎叫pemolo)

开源服务器引擎



1.firefly(9秒社团开发的一款python游戏服务器框架)

2.kbengine(作者说他按bigworld的架构来设计的,c++ + python的)

3.pomelo - 网易出品的Node.js游戏服务器框架

4.skynet - 云风出品Lua游戏服务器框架

数据库



现在比较流行的两种数据库,关系型数据库mysql,sql server和非关系型数据库redis。

服务端架构



点这里

协议



客户端与服务器之间协议通信,可以用tcp或者http。主要看游戏模型,如果是那种弱联网单机玩法,用http足够了。

不过tcp用的比较还是比较多的。现在的网络游戏大多数都是tcp,像MMORPG类游戏。

udp:其实游戏是有udp的,在一些高效率的场景下比如pvp即时战斗,tcp的拥塞控制和超时重传并不适合,有些就用的udp,然后自己做丢包重发,拿网络公平性换游戏局部的效率。

在游戏服是单机玩法用http协议,战斗服需要长连接保存协议状态,用的tcp。

序列化



1.protobuf - 大家都知道的protobuf

2.Json - 这个算凑数吗?

3.MessagePack - It‘s like JSON. but fast and small.

网络



libevent,boost.asio等网络库,网上有很多开源网络库,与其自己造轮子,不如就用开源网络库作为自己服务器的通讯库。最出名的就属libevent和boost.asio了。

Boost的ASIO是一个异步IO库,封装了对Socket的常用操作,简化了基于socket程序的开发。支持跨平台。

libevent是一个C语言写的事件驱动的开源网络库

zeromq:消息队列,一个稳健,简洁的多进程通讯方案的基础。ZeroMQ 并不是一个对socket的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。

其他



games github上的一个游戏列表

原文地址:https://www.cnblogs.com/losophy/p/9267711.html

时间: 2024-08-06 06:14:15

游戏服务器开发技术选型的相关文章

游戏服务器开发需要学习的技术

一,游戏服务器编程语言的选择 所谓的游戏服务器编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言.这需要根据自己游戏的类型和要求加以选择.比如C++,Java ,Erlang,go等等.目前我用过的只有C++和Java.但是以Java为主.所以接下来就以自己的经验,谈谈以Java为核心的游戏服务器开发技术体系. Java目前作为游戏服务器开发语言已经很是普遍.但是大多数是作为页游或手游的服务器,而端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些.两种语言各有利弊.

手游服务器开发技术详解

从事游戏服务器开发差不多两年时间,两年间参与了不少项目,学到了很多游戏服务器开发技术,参与过几个不同架构的服务器开发,就随便聊聊游戏服务器开发需要的技术.(以下所指游戏服务器更偏向于手游,因为我对端游和页游开发接触并不多) 一.聊聊服务器开发有哪些东西要考虑. 1.开发语言的选择: 工欲善其事,必先利其器,选择一门适合的开发语法对后期开发有着事半功倍的作用. 业界主要的是c/c++ + Python/lua模式做游戏服务器.c/c++做网络通讯数据传输,python/lua做业务逻辑.这样既保持

erlang 游戏服务器开发

http://blog.csdn.net/slmeng2002/article/details/5532771 最近关注erlang游戏服务器开发  erlang大牛写的游戏服务器值得参考 介绍本文以我的OpenPoker项目为例子,讲述了一个构建超强伸缩性的在线多游戏玩家系统.OpenPoker是一个超强多玩家纸牌服务器,具有容错.负载均衡和无限伸缩性等特性.源代码位于我的个人站点上,大概10,000行代码,其中1/3是测试代码. 在OpenPoker最终版本敲定之前我做了大量调研,我尝试了D

实时联网游戏后台服务技术选型和挑战(网络接入)

述:本文尝试从开发者角度梳理开发实时联网游戏后台服务过程中可能面临的挑战,并针对性地提供相应解决思路,期望帮助开发者依据自身游戏特点做出合理的技术选型. 维基百科关于网络游戏的定义:通过计算机网络,将专用服务器和用户的客户端设备(手机.PC.游戏主机等)相连,让多名玩家同时联机进行游戏的娱乐形式,由此可知网络游戏涉及三个角色:客户端.网络.服务器,从网络架构上来讲网络游戏可分为C/S 架构和P2P架构(特指客户端间直连通信),在实际开发中还有一种C/S和P2P架构混合:C/M架构. P2P架构不

企业开发技术选型

http://blog.csdn.net/jwdstef/article/details/23767033 企业级开发我们在开发前需要进行技术选型,选择合适的技术,会让我们事半功倍,这就是为什么站在巨人的肩膀我们会看的更远.下面是3年前写的,过了3年出现了很多新的技术和框架,我会尽快更新出最新的技术选型,希望对大家有所帮助. 2.1. 基础架构 IOC Container: Spring, Guice 我们需要IOC Container的依赖注入作为胶水,把其他工具包粘在一起.还需要它的AOP,

Meme游戏服务器开发日记(一)目标

到了新的环境,老大让我有空研究下一代服务器技术,作为一个长期任务. 新的服务器想达到的目标: 1.分布式系统,对象(Entity)之间的关系类似于Actor模型. 2.逻辑服务,是单进程.多线程的,对象之间发消息进行通信,但是简单读取属性尽可能做到直接. 3.必须使用Python语言.开发方式类似于BigWorld引擎. 这个目标还是很宏伟的,只能从底层一步一步攻克.在这里记录一下解决问题的过程,既是分享,也是督促自己不要半途而废. 我个人极度喜欢skynet框架,由于很多原因,skynet框架

关于即时通讯功能开发技术选型

最近研究即时通讯,发现自己使用XMPP,用openfire或者enjebber后台,会很复杂,要涉及到二次开发后台,要用java或者enjebber专用语言,实在无法开展. 后来找了下其他资料,发现现在国内的即时通讯云有好几家,功能都挺不错的,很强大,完爆自己后台,还省事,不花钱,挺好的,毫不犹疑的学习起来了他们的SDK. 我综合各方面最后选择了环信的产品.看了下文档,很快就基本流程,主要接口搞懂了,目测一两天就能搞出一个即使通讯功能,哈哈.

多线程游戏服务器开发(2)-编写网络库

网络库功能介绍 网络库具有的功能 1.具备多线程 2.监听某个端口 3.连接远程服务器 4.保存并管理所有链接,外部与网络库操作通过链接ID 5.向某个连接发送数据 6.强制关闭某个链接 7.网络事件回掉:connect, receive, close 8.错误处理 网络库主要接口(文件:tcp_frame.h) class tcp_frame { public: /** * tcp_frame 构造函数 * @handler 网络事件回掉(connect, recevie, close) *

Meme游戏服务器开发日记(四)scons编译工具、C和C++混合使用

今天在编译python so时出现点问题--把其他C库链接到同一个so里--尝试了一早上发现了方法,已经更新到本系列的第二节里了. 整理了一下工程目录,打算用scons管理. scons毕竟是一种新型的build工具,比makefile肯定有很大进步,至少更清晰好学,少了很多晕晕的trick.但是相比其他高级工具比如cmake之类的,就不清楚优劣了. 这个例子写的过于简单了,正常使用时多用env,可以统一参数,简化编写. 例子: obj = Object( "test.c", CPPP