MMORPG游戏服务器技术选型参考

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MMORPG游戏服务器技术选型参考http://www.bieryun.com/1583.html 游戏服务器一般追求稳定和效率,所以偏向于保守,使用的技术手段也是以已经过验证、开发人员最熟悉、能HOLD为主要前提。

MMORPG游戏服务器技术选型参考

游戏服务器一般追求稳定和效率,所以偏向于保守,使用的技术手段也是以已经过验证、开发人员最熟悉、能HOLD为主要前提。

1、典型按场景分服设计

开发语言: c++

数据库:mysql

架构:

多个网关:维持与玩家间的SOCKET连接,可处理广播、断线重连等逻辑。

一个或多个账号登陆验证服务器:处理登陆、排队等逻辑。

多个场景服务器:处理在本地图上能解决的逻辑,如:打怪、玩家间战斗、接任务、完成任务等各种不需要跨地图的逻辑。一个场景服内可放置多张地图,一般是单线程处理逻辑,也有多线程(如:《天龙八步》《武侠世界》是一个线程处理一个地图组,一个场景服可以有多个线程)。

一个全局服务器:处理不能在一张地图上处理的逻辑,如跨地图聊天、跨地图交易。

可选:

一个专门与数据库打交道的DB代理服务器

日志服务器:

跨服逻辑处理服务器:支持跨服PK

共享内存服务器:将游戏内实体数据放置在另一个进程内,场景服务器出现宕机时能及时存储数据,并恢复。

示例如下:

2、云风写的开源架构《skynet》

使用开发语言:  C语言、LUA

使用数据库:内置redis、mysql访问接口,lua的table能方便地转化为字符串进行存储

结构: 单进程、多线程

执行结构:             skynet主执行程序,支持库动态链接库、服务动态链接库、LUA脚本文件或已编译的lua的脚本文件

特点:ACTOR模式、游戏逻辑以多个服务存在,服务间以消息进行通讯(可以是同步,也可以是异步), LUA服务对每个请求生成一个协程进行处理

个有感受:skynet主要以lua作为逻辑的实现,C与LUA的结合特别深。如果对LUA本身了解程序不够,不容易上手。进行同步消息处理时,没有超时机制。

3、开源服务器引擎《kbengine》

《kbengine》在结构上和《bigworld》完全一致,没有动态负载功能。

开发语言:c++、python

数据库:mysql

特点:远程调用机制rpc使用开发过程中的消息传递特别方便。baseserver网关与部分功能合为一个服务器的设计极大减小了消息在服务器间的传输,方便了玩家自己的逻辑处理。

相似架构: 《暗黑战神》服务器使用的是相似的架构,只是脚本语言选择的是lua

结构:

		      |----------|
		      |  client  | x N
		      |----------|

------------------------|-----|-------------------------------

|----------|	     |----------|         |----------|
| loginsrv | x N     |  basesrv | x N     |basesrvmgr| x 1
|----------|         |----------|         |----------|

------------------------|-----|-------------------------------

	|----------|            |----------|
	|  cellsrv | x N	|cellsrvmgr| x 1
	|----------|            |----------|

------------------------|-----|-------------------------------

	|----------|            |----------|
	|  dbmgr   | x 1	|interfaces| x 1
	|----------|            |----------|

------------------------|-----|-------------------------------

		      |----------|
		      |  mysql   | x 1
		      |----------|

服务端组件描述

· loginapp:
登录验证、注册、接入口。
可在多台机器部署多个loginapp进程来负载。 

· dbmgr:
高性能多线程的数据存取。
默认使用Mysql作为数据库。

· baseappmgr:
协调所有baseapp的工作,包括baseapp负载均衡处理等。

· baseapp:
客户端与服务端的交互只能通过loginapp分配的baseapp来完成。
定时写entity的数据到数据库、baseapp数据相互备份、灾难恢复。
可在多台机器部署多个baseapp进程来均衡负载。
脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅、等等逻辑系统。

· cellappmgr:
负责协调所有cellapp的工作,包括负载均衡处理等。

· cellapp:
处理游戏与空间和位置有关的逻辑,如:AOI、Navigate、AI、战斗等等。
可在多台机器部署多个cellapp进程来动态均衡负载。 

· client:
客户端我们将提供基础框架,这个框架不包括渲染部分和输入输出部分的具体实现, 
我们将提供一个lib文件和一套API接口,开发者可以选择使用自己比较适合的图形渲染引擎与输入输出控制部分。
Unity3D, HTML5, Cocos2d等技术我们提供了相关插件,能够快速的和服务端对接。

· machine:
抽象出一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。主要用途是接收远程指令处理本机上的组件启动与关闭, 
提供本机上运行组件的接入口以及收集当前机器上的一些信息, 
如:CPU、内存等。 这些信息会提供给一些对此比较感兴趣的组件。 

· interfaces: 支持快速接入第三方计费、第三方账号、第三方数据, 快速与运营系统耦合。 · guiconsole: 这是一个可视化的图形界面控制台工具,可以实时的观察服务端运行状态,实时观测不同Space中Entity的动态, 并支持动态调试服务端Python逻辑层以及查看各个组件的日志,启动服务端与关闭等。 · logger: 收集和备份各个组件的运行日志。

4、开源架构《firefly》

《firefly》是九秒社区开发一个开源的框架,代码量比较少。

开发语言:python

使用数据库:mysql

官方介绍:

Firefly是免费、开源、稳定、快速扩展、能 “热更新”的分布式游戏服务器端框架,采用Python编写,基于Twisted框架开发。它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务,节省大量游戏开发的工作时间,真正做到让使用者把精力放在游戏玩法逻辑上。用它可以搭建自定义的分布式架构,只需要修改相应的配置文件即可。

优势特性

  • 采用单线程多进程架构,支持自定义的分布式架构;
  • 方便的服务器扩展机制,可快速扩展服务器类型和数量;
  • 与客户端采用TCP长连接,无需考虑粘包等问题;
  • 封装数据缓存服务;
  • 可实现实时热更新数据以及游戏逻辑,客户端玩家无感觉;
  • 有几十个基础游戏玩法系统模块提供组装使用(v1.3.0提供);

5、开源服务器构架pomelo

开发语言: javescript

Pomelo 是基于 Node.js 的高性能、分布式游戏服务器框架。它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发。Pomelo 不但适用于游戏服务器开发, 也可用于开发高实时 Web 应用,它的分布式架构可以使 Pomelo 比普通的实时 Web 框架扩展性更好。

  • 快速、易上手的游戏开发模型和api
  • 高可伸缩的多进程架构, 支持MMO的场景分区和其它各类分区策略
  • 方便的服务器扩展机制,可快速扩展服务器类型和数量
  • 方便的请求、响应、广播、服务器通讯机制, 无需任何配置
  • 注重性能,在性能、可伸缩性上做了大量的测试、优化
  • 提供了较多扩展组件,包括游戏开发常用的库和工具包
  • 提供了完整的MMO demo代码(客户端html5),可以作为很好的开发参考
  • 基于socket.io开发,支持socket.io支持的多种语言客户端

6、页游erlang构架

erlang基于消息处理的Actor模式,与传统的C++、JAVA、C#等有着非常大的不同。

erlang语言开生是为分步式服务器开发,其中rpc、集群、热更新、分步式数据库天然集成。

开发语言:erlang

数据库:mysql、mnesia

使用erlang的游戏:页游《画皮》、页游《英雄远征》、页游《远古封神》。。。。。。

7、基于go语言的架构

GO天然支持的用户进程模型,吸收了很多语言的特点。

使用ERLANG开发游戏服务器的一批人使用GO来进行游戏服务器的开发。

在看了一些使用GO语言写的MMORPG以后,个有感觉是把C++的思路用GO语言翻译了一扁。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
存储 分布式计算 网络协议
阿里云服务器内存型r7、r8a、r8y实例区别参考
在阿里云目前的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y这几个实例规格,相比于活动内的经济型e、通用算力型u1实例来说,这些实例规格等性能更强,与计算型和通用型相比,它的内存更大,因此这些内存型实例规格主要适用于数据库、中间件和数据分析与挖掘,Hadoop、Spark集群等场景,本文为大家介绍内存型r7、r8a、r8y实例区别及最新活动价格,以供参考。
阿里云服务器内存型r7、r8a、r8y实例区别参考
|
1月前
|
存储 弹性计算 关系型数据库
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
在我们选择阿里云服务器系统盘和数据盘时,如果是选择ESSD云盘,还需要选择云盘的云盘性能级别PL,PL性能级别有PL3、PL2、PL1、PL0四个性能级别的云盘规格,如果是通过阿里云的活动来购买云服务器的话,由于系统盘默认一般为20G或40G容量,可选的PL性能级别通常只有PL0(单盘IOPS性能上限1万)和PL1(单盘IOPS性能上限5万)可选择,有的用户肯能并不清楚ESSD云盘的性能等级之间有何区别,单盘IOPS性能指的是什么,本文为大家介绍一下ESSD云盘的云盘性能级别PL3、PL2、PL1、PL0相关知识点。
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
|
29天前
|
弹性计算
阿里云3M带宽云服务器并发多大?阿里云3M带宽云服务器测评参考
在探讨云服务器3M带宽能支持多大并发这一问题时,我们首先要明白一个关键点:并发量并非仅由带宽决定,还与网站本身的大小密切相关。一般来说,一个优化良好的普通网站页面大小可能只有几K,为便于计算,我们可以暂且假定每个页面大小为50K。
796 1
|
1月前
|
存储 弹性计算 缓存
阿里云服务器价格表参考,不同实例规格云服务器月付及年付活动价格(2024更新)
阿里云租服务器一年多少钱?不同时期阿里云服务器的租用价格不同,进入2024年,阿里云继续推出各种云服务器优惠政策,轻量应用服务器2核2G 61元1年,2核4G 165元1年;云服务器2核2G3M只要99元1年,2核4G5M只要199元1年;4核16G月付只要26.52元1个月。本文为大家整理汇总了目前阿里云的活动中,所有云服务器的月付及年付价格情况,以表格形式展示给大家,以供参考。
阿里云服务器价格表参考,不同实例规格云服务器月付及年付活动价格(2024更新)
|
21小时前
|
人工智能 安全 云计算
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
申请发票是很多用户尤其是企业级用户在购买完阿里云服务器之后非常关注的问题,对于初次购买阿里云服务器的用户来说,往往并不清楚如何找阿里云申请发票,本文以图文形式为大家介绍阿里云服务器购买完成之后申请发票的详细流程以及常见问题。
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
|
3天前
|
存储 弹性计算 安全
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
2核2G、2核4G配置是很多个人和企业建站以及部署中小型的web应用等场景时首选的云服务器配置,这些配置的租用价格也是用户非常关心的问题,本文为大家整理汇总了2024年阿里云服务器2核2G、2核4G配置不同实例规格及地域之间的收费标准,同时整理了这些配置最新活动价格,以供大家参考和选择。
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
|
17天前
|
存储 缓存 PHP
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
对于使用阿里云服务器的用户来说,云服务器的选择和使用非常重要,如果实例、内存、CPU、带宽等配置选择错误,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文为大家介绍一下阿里云服务器实例、CPU内存、带宽、操作系统的选择注意事项,以供参考。
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
|
24天前
|
缓存 编解码 前端开发
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
目前阿里云的活动中提供了多种云服务器实例规格,包括经济型e、通用算力型u1、计算型c7/a系列和通用型g7/a系列等,适用于不同场景。实例规格定义了CPU、内存等配置,影响计算和存储能力。本文主要为大家介绍了阿里云服务器的实例规格是什么,并汇总了阿里云轻量应用服务器和阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例规格适用场景,以供参考。
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
|
29天前
|
存储 缓存 编解码
阿里云服务器通用型g7、g7a、g8a、g8ae、g8i、g8y实例区别参考
在阿里云目前的活动中,属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8ae、通用型g8y这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,适用于中小型数据库系统、缓存、搜索集群、大数据服务和集群计算等场景。本文为大家介绍通用型g7、g7a、g8a、g8ae、g8y实例区别及最新活动价格,以供参考。
阿里云服务器通用型g7、g7a、g8a、g8ae、g8i、g8y实例区别参考
|
29天前
|
弹性计算 关系型数据库 MySQL
阿里云服务器经济型e实例2核2G3M带宽99元搭建网站图文教程参考
经济型e实例2核2G,3M固定带宽,40G ESSD Entry云盘,价格只要99元,这是阿里云精心为开发者和普通企业用户推出的一款上云首选必备产品,可用于中小型的web应用以及企业应用。本文为大家展示使用这款云服务器搭建网站的相关教程,以供参考。
阿里云服务器经济型e实例2核2G3M带宽99元搭建网站图文教程参考