
游戏开发与架构
文章平均质量分 94
ctreewang
这个作者很懒,什么都没留下…
展开
-
角色扮演类大型网络游戏C++后台和纯C语言后台的差异
因为一些原因,我从一个用c++做后台程序的工作室转到了用纯C语言作为游戏后台的工作室, 而这两套后台程序都可以号称目前中国在角色扮演类游戏中成熟的后台架构。。c++的架构我已经基本已经很清晰了,因为看了两个月代码。 而这套纯C语言的是某网络游戏公司几个比较有名的后台,中国几大国产游戏都在用。 然后切实感受到了面向对象和结构语言之间的差异。。。。 面向对象更注重原创 2012-11-11 01:25:52 · 11336 阅读 · 19 评论 -
游戏登陆流程
今天主要讲游戏的登陆流程,由于我们的后台架构是前端接入层+后端业务进程的架构模式,因此,任何网络连接请求的数据,都要经过前端接入。首先要说明,目前大多数游戏都是 账号+角色的模式。ok登陆两种模式1,已在该服创建过账号,创建过角色的玩家2.在该服没有创建过,账号数据库是没有数据我们首先说一下我们的进程模式连接层+业务层+认证层比如,当一个玩家要玩我们的游原创 2013-08-15 11:08:18 · 3836 阅读 · 1 评论 -
MMORPG服务器架构
一.摘要1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎5.参考书籍,博客二.关键词网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡 分布式 网关服转载 2013-08-30 00:42:56 · 3071 阅读 · 0 评论 -
游戏架构之前端接入层
在前边几篇文章已经给大家讲过,我们游戏通过进程间异步通信的方式来实现瓶颈的最大程度的减小。前端接入层主要的做什么呢?主要是数据包的有效性验证和维持与玩家的长连接。如何做有效性的验证,我们使用过和前端具体的协议定制。然后通过我们具体的协议包头+包体的来计算。如果我们的计算和我们协议不一致,直接就断开和客户端的连接,发送rst信号,客户端会被通知到,进程会hub状态,原创 2013-08-30 00:17:19 · 4366 阅读 · 2 评论 -
linux下安装protobuf教程+示例(详细)
1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。安装步骤如下所示: tar -xzf protobuf-2.1.0.tar.gz cd protobuf-2.1.0 ./configure --prefix=/usr/local/p转载 2013-09-10 00:10:20 · 8576 阅读 · 2 评论 -
网络游戏服务器设计
谈这个话题之前,首先要让大家知道,什么是服务器。在游戏中,服务器所扮演的角色是同步,广播和服务器主动的一些行为,比如说天气,NPC AI之类的,之所以现在的很多网络游戏服务器都需要负担一些游戏逻辑上的运算是因为为了防止客户端的作弊行为。了解到这一点,那么本系列的文章将分为两部分来谈谈网络游戏服务器的设计,一部分是讲如何做好服务器的网络连接,同步,广播以及NPC的设置,另一部分则将着重谈谈哪些逻辑放转载 2013-09-25 13:43:13 · 2936 阅读 · 0 评论 -
服务端架构中的“网关服务器”
这么一个场景:一个要承载高并发、具有高性能的后台服务,往往会有多个不同的应用服务。问题来了,你会怎样设计架构呢?如下图所示,为了共用一个稳定高效的网络处理功能,把所有服务写在一个进程里。接下来悲剧一幕幕就要上演了,如果各个模块是多人协作开发,网络库的作者得想办法设计个插件机制供各个应用挂载,开发时无论是人员或者代码都耦合非常严重,大大影响协作、开发效率,后期要增减一个应转载 2014-11-14 18:11:02 · 4705 阅读 · 1 评论 -
mmog游戏开发之业务篇
这周不是很忙,因为我们的游戏开发了近一年,由于公司的业务调整,在游戏开第二服的时候,老板果断的把项目停到了。感觉超级的不爽啊。因为这个游戏项目像我的孩子一样和我一样成长,里边的大概的业务逻辑都是偶实现的,比如基础系统里的,任务系统,背包系统,公会系统,相关副本系统,商城系统,人物属性相关,运镖,怪物AI,技能相关,地图等等,差不多游戏里的所有业务我都有所涉及那么对于一个业务是如原创 2013-08-29 23:41:02 · 3303 阅读 · 0 评论 -
基于共享内存的分布式消息学习笔记
作者:深圳自研业务组 jimwu编辑:上海业务组 alenai 目录:Tbus简介Tbus原理Tbus配置与工具Tbus简单应用Tbus运维应用-为python扩展总结Tbus简介 Tbus是tsf4g(Tencent ServiceFramework for Game,腾讯游戏服务框架)中的基础组件转载 2015-05-12 12:09:08 · 10731 阅读 · 5 评论 -
御龙在天掉线问题定位过程
1.前言掉线是令每个网络游戏开发人员头痛的问题,太频繁的掉线会影响玩家的体验从而影响到整个游戏的口碑。御龙在天是琳琅天上工作室自研的一款国战型的MMO网络游戏,在2012年公测初期,御龙服务器全体开发人员也被掉线这一问题困扰,通过大家长期坚持不懈的定位,掉线问题逐渐下降,给了玩家一个好的体验,获得了玩家的肯定与喜爱。2.定位工具御龙在天是基于互娱的tsf4g转载 2015-05-12 10:47:35 · 4030 阅读 · 0 评论 -
游戏公会工作总结
想写这篇文章已经脱了很久了。本文主要写一写我在游戏公会组所做事情和成长吧。 在这里,首先要感谢我的前老大,技术组leader,郭文瑞,具有十几年的技术经历。技术广度和深度都是公司首屈一指的。还有他对技术的敏感程度是非常值得敬佩的。项目成立之时,感谢他对我的信任和帮助,才让我能够基本独立的完成游戏公会后台的设计,架构,开发等工作。目前,郭文瑞已经离职,在一家深圳公司做CTO。 以下我们公司的YY后台的一个整体架构以及公会组内部的一些基本关系。我们项目属于YY频道内的一个服务,YY频道内的所原创 2015-05-13 20:01:01 · 4014 阅读 · 0 评论 -
巧夺天工的kfifo
Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。kfifo就是这样的一类优美代码,它十分简洁,绝无多余的一行代码,却非常高效。关于kfifo信息如下:本文分析的原代转载 2015-05-20 19:50:00 · 1089 阅读 · 0 评论 -
NoSQL数据库笔谈(转)
序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum NRWVector clockVirtual nodegossipGossip (State Transfer Model)转载 2015-05-24 18:11:37 · 5782 阅读 · 0 评论 -
Google Protocol Buffer 的使用和原理
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。转载 2015-10-13 15:23:00 · 1291 阅读 · 0 评论 -
高并发服务器架构--SEDA架构分析
纯粹转发,没有深入研究,转自:SEDA架构笔记一、传统并发模型的缺点基于线程的并发特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。基于事件的并发模型特点:单线程处理事件每个并发流实现为一个有限状态机转载 2015-12-28 11:50:02 · 11025 阅读 · 2 评论 -
游戏服务器架构探讨
有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。 另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关的中文网页,很少有讲游戏服务器相关技转载 2013-08-23 16:39:01 · 3320 阅读 · 1 评论 -
linux的信号实践
当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN转载 2013-08-19 16:57:08 · 1446 阅读 · 0 评论 -
游戏后台之内存管理篇
服务端程序对于内存的管理上是重中之中,如何管理好程序的内存是保证程序稳定的最重要因素。因此,我们是如何做的呢。1.我们知道,当有一个新玩家进入游戏,我们需要分配一段内存给这个玩家,当这个玩家下线了,不玩了,我们就要对这段内存进行清理。因此,如何有效的管理这段内存,如何能重新利用这段内存,是我们的问题,因此,使用内存池的方式,是比较理想的一种方式。通过内存池,我们原创 2013-07-27 01:29:35 · 3168 阅读 · 1 评论 -
lua和c语言互相调用的例子
之前都是看的lua脚本怎么写的,还有就是在之前的工作室仿照着写。没有真正懂LUA和C语言如何之间交互的。今天写了一个例子 首先我要实现的功能计算两个整数的和,就是x+y了。因为x和y是随时变化的,我又不想在C程序里修改,那么就把这两个参数放到lua脚本来传递。那么我是如何实现的呢? 第一步:搭建window环境,使用vs2005 这个东西在网上搜索一下吧,很多原创 2012-11-16 12:37:39 · 14309 阅读 · 4 评论 -
Linux 服务器后台系统架构的高性能设计
因为,目前在做游戏的的后台开发。尽管最近在忙于开发游戏业务逻辑的的相关代码,也在不停思考着游戏后台的一些架构问题。因为游戏后台处理着大部分的业务逻辑,因此。在性能上是必须的。那么如何尽最大的提高性能呢,下面根据我们后台架构提出的几点,因为我们后台架构业务逻辑是单进程将单线程处理首先,我们知道目前后台所效率上受到限制的就是 数据库IO>磁盘》网络IO>cpu>内存原创 2013-01-24 00:42:31 · 9857 阅读 · 1 评论 -
我的游戏开发记录----开篇
哈哈,很早就想将每天搞的东西记录下来了。因为目前在从新开发一款arpg游戏项目。所以对于我来说,从头跟着这个项目进行开发,会学到不少东西。把我能记录下来能学习到的东西都记录下来。建立自己的一个心路历程吧。 9-10月经历了一个游戏项目,主要语言是C++开发。配以LUA脚本工具,针对那些策划经常改动的配置表需求。该项目是星形的系统架构。性能上感觉不是非常完美,但是还有很多值得学习原创 2013-02-04 00:28:12 · 3052 阅读 · 1 评论 -
我们游戏后台架构学习
今天我们的游戏开始第一次的游客模式导入测试,出现了不少问题。这些问题主要还是基础的网络的连接这一块。但是网络连接这一块我还不是非常熟悉。有时间好好研究一下下面是使用游戏的主要架构图和主要几个关键点1 服务器采用“cluster”、“world”、“zone”三层架构,系统可灵活平行扩展 2 采用单线程,便于开发和运营; 3 采用异步消息机制,提高服务器处理性能;原创 2013-03-31 19:48:59 · 13802 阅读 · 8 评论 -
linux下C开发中几点技术小总结
最近一致致力于linux下的C开发,因为老大是某讯出来的。因此,使用的主要技术都是某讯的基本的后台架构思想。在这段时间,学习到了很多,然后佩服某讯的技术果然很厉害。因此,自我感觉,从头开发我们这个项目,到现在,跟着我这个大牛级的老大学到了不少东西。目前在游戏里的公会系统,任务系统,邮件系统,地图,商城,等等很多大大小小的系统,都是由我来负责了。下面是我最近总结的一点点东西而已,原创 2013-04-15 00:40:24 · 16325 阅读 · 25 评论 -
心血来潮----曝光一下我开发的游戏项目的日报周报
以下是我最近几个月开发的《美人三国》游戏的一个大概过程。记录每天做了什么,开发了什么代码,等等。就目前我所经历的这个项目,我学习到了很多东西。包括游戏的架构,游戏的业务开发。游戏的地图,副本,技能,任务,公会,等等的开发,当然这是具体到业务上。具体到技术上,我们使用的是linux下的C+lua开发。因为我们的系统架构是程序启动,,预分配内存,因此我们使用的技术是共享内存,内存池,多进程交互原创 2013-04-15 00:10:01 · 13064 阅读 · 13 评论 -
mmorpg游戏,如何具体搭载游戏
对于我们的游戏后台器系统,上一篇文章,我已经大概的描述了我们的游戏后台的整体架构。 具体参见这片文章:http://blog.youkuaiyun.com/wallwind/article/details/8743802当我们确定好了基本的框架,和游戏中通信机制后,我们就要开始一步步完善我们的游戏了。 首先,我们要知道,游戏里的所有东西,包括地图,玩家,道具,怪物,原创 2013-05-02 23:53:02 · 1844 阅读 · 0 评论 -
如何提高游戏后台数据查找效率
在游戏后台中,内存的数据查找是一个很重要,也是关系到我们游戏的后台效率的问题。在大量的数据中,我们如何让我们的的程序能够快速的查找到我们所想要的数据呢。那么我们就要使用相应的算法了。首先,我们所有使用的内存都是通过分配内存的方式,基本上都是共享内存。通过shmid来分配内存。那么游戏中有哪些数据呢。1.配置表数据,这个数据是程序启动的时候,就要加载到内存中,我们就使用了二分原创 2013-05-04 00:25:43 · 4267 阅读 · 6 评论 -
剖析共享内存
共享内存共享内存可以被描述成内存一个区域(段)的映射,这个区域可以被更多的进程所共享。这是IPC机制中最快的一种形式,因为它不需要中间环节,而是把信息直接从一个内存段映射到调用进程的地址空间。 一个段可以直接由一个进程创建,随后,可以有任意多的进程对其读和写。但是,一旦内存被共享之后,对共享内存的访问同步需要由其他 IPC 机制,例如信号量来实现。象所有的System V IPC 对象一样,L翻译 2013-05-08 00:48:50 · 1682 阅读 · 1 评论 -
服务器端开发的一些建议
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态TCP/IP协转载 2013-05-27 19:08:17 · 6979 阅读 · 0 评论 -
游戏后台开发九问--linux平台
在游戏中会遇到很多问题,下面大体总结:这九个选择分别是:第一,选择什么样的架构。第二,选择单线程还是多线程。第三,如何在游戏中使用脚本。第四,如何处理网络通讯。第五,如何处理游戏通信协议。第六,如何设计存储结构。第七,如何设计网络同步。第八,如何定义性能基准。第九,如何在不同项目间进行代码复用。先介绍一下在原创 2013-05-09 21:50:18 · 5066 阅读 · 4 评论 -
游戏地图掩码相关(msk)
在游戏的世界里,玩家在地图上的某点,是否能够走动,是否遇到障碍,是否是走到了阴影处,是否水层等等先关信息都要我们前后端知道。那么服务器是如何进行实现的呢。下面主要给大家讲讲。 首先,我们知道图片是以像素为主要为单位进行计量,但是我们后端又不能使用这个东西,在二维的世界观里,我们是以坐标(x,y)具体的表现出其某个东西,所在的位置。因此,我们就要通过这个像素来表达出地点。原创 2013-05-30 00:49:29 · 3963 阅读 · 1 评论 -
游戏系统开发设计分享
我所搭建的总体架构非常简单就是前端接入进程 +后端业务逻辑处理进程+数据库缓存进程+其他协作进程一、组件基本介绍1.通信组件 所有进程使用的是单线程,没有使用其他线程。进程间通信使用我们的一个自主开发的通信组件。2.数据协议组件 我们也是自主开发的一个以xml表现形式,通过工具生成.h头文件,二进制bin文件。数据加载文件等。也可以和数据库进行交互的数据文件,也可以进行网络传输等,原创 2013-06-09 00:59:23 · 3323 阅读 · 3 评论 -
gcc同时使用动态和静态链接
最近因为项目的makefile同时使用了静态动态的连接库,所以,就要同事的链接进去我们知道gcc的-static选项可以使链接器执行静态链接。但简单地使用-static显得有些’暴力’,因为他会把命令行中-static后面的所有-l指明的库都静态链接,更主要的是,有些库可能并没有提供静态库(.a),而只提供了动态库(.so)。这样的话,使用-static就会造成链接错误。之前的转载 2013-07-09 00:11:35 · 4068 阅读 · 0 评论 -
服务器端开发的一些建议
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态TCP/IP协原创 2016-06-24 09:44:23 · 10337 阅读 · 2 评论