网络游戏服务器
QQ51931373
这个作者很懒,什么都没留下…
展开
-
游戏服务器中的契约式编程与防御式编程
背景事情的来由还要从几十几亿年前的一次星球大爆炸说起,sorry,背错台词了,是从几天前讨论接口返回数据和几个月前讨论课件本地数据结构说起,简单的说,就是碰到约定好的内容出现异常,是我们在程序中内部作兼容处理,还是抛出去。打个比方,我们要解析一段json,约定这个json的格式,只能是正常格式,或者是空,那么一旦返回json的方法返回了一个『既不是正常格式,又不是空的异常值』,程序原创 2016-11-23 15:33:42 · 415 阅读 · 0 评论 -
服务器AOI
这两天优化了一下一个Java页游服务器的AOI。其实这个优化纯属迫不得已,因为项目已经很久了,当时很多怪物还都是暗雷!!玩家在杀任务怪的时候,需要去地图里面乱转以碰见怪物。 根据策划的要求,将怪物刷成明怪。就是要玩家看到,当然怪物不一定要动。,只是作为一个影像。既然是优化,那我就彻底优化一下喽;之前的广播是这样子做的,一个玩家的状态更新(比如说坐标更新,头衔更新,转载 2015-03-05 11:29:38 · 819 阅读 · 0 评论 -
把 AOI 的部分独立出来
转载自:http://blog.codingnow.com/2008/07/aoi.html应该是在 blog 上第 2 次讨论 AOI 的问题了,另外还要算上一篇写完没有公开的。昨天刚出差回来,晚上跟前大唐的服务器主程聊了一下。扯到了 AOI 的问题,我提了个分离这个模块的方案,在此记录一下。AOI 主要有两个作用,一个是在服务器上的角色(玩家或 NPC )做出动转载 2015-03-05 11:26:24 · 601 阅读 · 0 评论 -
多线程无锁算法之无锁队列的实现
codeproject上的lock free queuehttp://www.codeproject.com/Articles/43510/Lock-Free-Single-Producer-Single-Consumer-Circular多线程无锁算法之无锁队列的实现今天花了近两个小时的时间好好的理解了一下多线程无锁队列的实现,查看了很多资料和文献。在我看转载 2014-07-11 11:06:59 · 1006 阅读 · 0 评论 -
一个生产者一个消费者的无锁队列,多个生产者多个消费者的无锁队列
一个生产者一个消费者的无锁队列:http://www.codeproject.com/Articles/43510/Lock-Free-Single-Producer-Single-Consumer-Circular原创 2014-07-11 11:53:46 · 2715 阅读 · 0 评论 -
C++无锁编程资料,无锁队列等
1. Lamport's Lock-Free Ring Buffer [Lamport, Comm. of ACM, 1977] 也就常说的单生产者-单消费者 的ringbuffer, 限制就是只能一个读线程(消费者),一个写进程(生产者)。 好像有人改进了一下设计, 参加文章 “Cache优化的并发无锁队列” http://www.doci转载 2014-07-11 11:07:54 · 845 阅读 · 0 评论 -
无锁队列的实现
关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是转载 2014-07-11 11:54:34 · 724 阅读 · 0 评论 -
C++ 并发编程
愈发紧迫的挑战现今,单台机器拥有多个独立的计算单元已经太常见了,这点在服务器的处理器上表现尤为明显,据 AMD 的一张 2012-2013 服务器路线图显示,服务器处理器的核心数将在 2013 年达到 20 颗之多。合理的利用 CPU 资源已是一个不得不考虑的问题。不少 C++ 程序员依然使用着多线程模型,但是对多线程的掌控并不是一件容易的事情,开发中容易出错、难以调试。有些开发者为了原创 2014-05-29 16:47:57 · 944 阅读 · 0 评论 -
利用共享内存来恢复玩家数据
听上去共享内存和游戏不太沾边,但在游戏服务器上利用共享内存这个技术已经不是一个新鲜的事了,畅游和像素早在天龙八部和寻仙就实现了这一应用(但不一定都像下面提到的这么用)。较早之前和同事讨论过如何在现有框架里利用共享内存这种进程间访问统一数据的特点,最理想的应用方案是切合目前以场景为单位的逻辑进程分割方式,能访问同一个内存数据就意味着场景间的物体进出进程间完全可以不用传递数据就能完成,怪物转载 2014-06-10 21:29:05 · 839 阅读 · 0 评论 -
Dragon之BillingServer
从字面上看,Billing是计费的,应该处理玩家在线时间或者包月之类。但是天龙八部是免费游戏,不需要算时间来计费。从代码中看,BillingServer也比较简单,它有一个连接到Web服务器,并监听一个端口,接受一些客户端的连接。从该服务器处理的协议包上看,BillingServer接受LoginServer和WorldServer的连接。原创 2014-06-10 16:40:34 · 848 阅读 · 0 评论 -
Dragon之LoginServer
在分析dragon的登录服务器结构时,本人喜欢从组成这个LoginServer功能的众多对象入手,研究这些对象的功能和对象之间如何组织关系来达到数据处理和数据存储的井然有序,就能很好的看清楚他的思维,从别人的代码中领悟出为自己所用的经验出来.而dragon的代码很好的做到了这一点,让程序结构非常清晰,这点带来的好处就是不容易出错,服务器很稳定,而且他的结构就是我们服务器编程中常原创 2014-06-10 11:22:11 · 1481 阅读 · 0 评论 -
天龙
http://blog.csdn.net/qdslp/article/category/2035263原创 2014-04-25 18:26:42 · 995 阅读 · 0 评论 -
select ---IO 模型
Select模型原理利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数据。目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫进入阻塞状态。 select参数和返回值意义如下:int select ( IN int nfds,原创 2014-04-25 16:38:42 · 738 阅读 · 0 评论 -
游戏的AOI算法
游戏的AOI算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。我在实践中所熟知的游戏AOI算法大致有两种,在此做一些总结,顺便梳理一下,打算设计出一套统一的接口封装不同的算法实现(网络上还有些其他算法,因为不熟悉不作记录了)。我所记录的这两种算法也转载 2015-03-05 11:34:13 · 881 阅读 · 0 评论 -
游戏服务器场景管理AOI方案
--------------------------------------------------------------------- AOI(Area Of Interest)在MMOPRG游戏服务器上是不可或缺的技术,广义上,AOI系统支持任何游戏世界中的物体个体对一定半径范围内发生的事件进行处理;但MMOPRG上绝大多数需求只是对半径范围内发生的物体离开/进入事件进转载 2015-03-05 11:34:50 · 1416 阅读 · 0 评论 -
服务器crash处理
这个方案需要自己动手往工程里添加代码了。要实现上面的想法,需要做两件事情:1、需要在crash时有机会对程序堆栈进行处理;2、对堆栈信息进行收集。 1、SetUnhandleExceptionFilter函数 Windows平台下的C++程序异常通常可分为两种:结构化异常(Structured Exception,可以理解为与操作系统相关的异常)和C++异常。对于结构化转载 2015-04-27 19:47:33 · 1448 阅读 · 0 评论 -
游戏中的定时器
转载自:http://www.cnblogs.com/fingerpass/p/linux-kernel-timer-in-game.html写在前面游戏中处处都有定时器,基本上每个逻辑部分我们都能看到定时器的影子。如果翻看一下以前网上流传的一些MMO的代码,比如mangos的,比如大唐的,比如天龙的,我们都可以看到形形色色的定时器实现。在以前,很多程序员用起来转载 2016-07-15 17:41:05 · 667 阅读 · 0 评论 -
浅谈消息队列
1.写在前面 本来一年前的时候还打算以那篇面经为契机,开始自己写博客的习惯,结果后来一拖再拖,虽然evernote里面积攒了不少东西,但是发现想整理成博客真的是太累了,毕设的时候觉得累没整理,刚到公司做mini项目觉得累没整理,后来刚进工作室熟悉环境觉得累没整理,不知不觉就一年没写博客了,囧。 为什么想起来写这样一篇文章呢?其实主要还是两周前有一个知乎问题突然火起来了,转载 2016-07-15 17:40:21 · 737 阅读 · 0 评论 -
游戏服务端究竟解决了什么问题?
fingerpass游戏服务端究竟解决了什么问题? 1.写在前面 既然是游戏服务端程序员,那博客里至少还是得有一篇跟游戏服务端有关的文章,今天文章主题就关于游戏服务端。 写这篇博客之前也挺纠结的,一方面是因为游戏服务端其实不论架构上还是具体一些逻辑模块的构建,都属于非常成熟的技术,举个简单的例子,像端游的多zone/scene/game进程转载 2016-07-15 17:38:40 · 1285 阅读 · 0 评论 -
端游、手游服务端常用的架构是什么样的?
作者:韦易笑链接:http://www.zhihu.com/question/29779732/answer/45791817来源:知乎著作权归作者所有,转载请联系作者获得授权。谢邀,手游页游和端游的服务端本质上没区别,区别的是游戏类型。类型1:卡牌、跑酷等弱交互服务端卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,转载 2016-07-15 17:12:16 · 792 阅读 · 0 评论 -
互联网服务端技术——如何学(下A)
时间一周周的真是过的好快,又到老王扯技术淡的时间了,快回来听老王扯淡吧~ 当年老王刚刚走出学校踏进社会的时候,一个百度的老同事(人称瀚哥,虽然不是我的直接导师,也可以算半个了,后来对我帮助挺大的~)就问我,觉得在学校的时间过的快嘛?我说快啊,你看这本科+研究生七年,一晃眼就过了。他说,你来工作了就会发现,工作以后,时间更快。现在回想一下,我工作都8年了,当年进公司的那一刻还历历在目……转载 2016-05-15 21:48:21 · 474 阅读 · 0 评论 -
开源分布式有瑕疵服务器框架NF
相关介绍文章:http://blog.noahframe.com/?p=50github: https://github.com/ketoo/NoahGameFrame原创 2016-05-15 21:45:38 · 2288 阅读 · 0 评论 -
互联网服务端技术——如何学(中)
本文转载自:http://blog.csdn.net/zgwangbo/article/details/51298539boys & girls,我们的中场休息结束了哈,赶紧搬板凳继续听老王扯技术的淡~(悄悄的广播一下:如果没有看过上一篇的同学,请关注老王的微信simplemain,或者拉到本文末尾扫描/识别二维码) 上一篇,我们谈到了互联网服务端技转载 2016-05-03 10:06:21 · 620 阅读 · 0 评论 -
互联网服务端技术——如何学(上)
本文转载自:http://blog.csdn.net/zgwangbo/article/details/51245963老王正式工作快10年了,前一段时间有幸去给母校的学弟学妹们聊了聊人生和理想。回来以后,有学弟学妹问我该如何学习。老王于是很认真的思索了这个问题。后来做了这样一个假设:如果让我讲讲所熟悉的互联网技术体系架构如何学,我该怎样讲? 老王顿时觉得有些紧张,虽然转载 2016-04-26 13:48:29 · 435 阅读 · 0 评论 -
魔兽世界私服Trinity-core分析
http://blog.csdn.net/romandion/article/category/594929/1原创 2016-02-02 17:54:41 · 2014 阅读 · 0 评论 -
高性能服务器架构
英文原文:High-Performance Server Architecture引言 本文档的目的是为了同大家分享多年来我在开发一种特定类型的应用时形成的一些观点,而“服务器”只是对这类应用程序的一个不是那么恰如其分的称谓。更准确的说,我将描述的是一大类的程序,这类程序的设计使得它们能够在每秒钟内处理数量十分巨大的离散消息或请求。网络服务器是最为常见翻译 2016-01-28 14:33:34 · 597 阅读 · 0 评论 -
负载均衡的几种常用方案
负载均衡的几种常用方案总结下负载均衡的常用方案及适用场景;Round Robin 轮询调度以轮询的方式依次请求调度不同的服务器;实现时,一般为服务器带上权重;这样有两个好处:针对服务器的性能差异可分配不同的负载;当需要将某个结点剔除时,只需要将其权重设置为0即可;优点:实现简单、高效;易水平扩展;缺点:请求到目的结点的不确定,造成其无法适用于有写原创 2016-01-25 16:18:14 · 1483 阅读 · 0 评论 -
[置顶] 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
转载自:http://blog.csdn.net/cywosp/article/details/23397179/转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,转载 2016-01-25 16:17:33 · 364 阅读 · 0 评论 -
环形缓冲区 -- circular buffer
环形缓冲区有的地方也称之为环形队列。其实很多人都搞不懂环形缓冲区的本质,从而也就不知道在什么场景下应该使用环形缓冲区。当你了解了它的本质你就知道这玩意儿一点都不高级,而且由于它的本质在某些场景下还不能使用。我看了很多网络游戏服务器的源代码,有些源代码中大量使用这玩意儿。比如我打个比方:在游戏服务器端只要接收到一个来自客户端的连接就生成一个ClientSocket对象来管理和客户端的数据通信。然原创 2015-06-26 18:03:19 · 5362 阅读 · 0 评论 -
开源跨平台程序崩溃抓取工具---breakpad
google的breakpad很强大,因为他是开源和跨平台的。第一步:从http://google-breakpad.googlecode.com/svn/trunk 这个地址用SVN下载最新的breakpad源代码第二步: 下载python-2.7.9.amd64.msi(我是64位操作系统),我当初用的python2.6都不行,所以我建议用这个版本,至少这个版本对应于我在201原创 2015-04-30 16:55:56 · 1335 阅读 · 0 评论 -
网络游戏服务器构架设计(一):前言
贴上原文地址:http://www.cnblogs.com/ychellboy/archive/2012/08/14/2638847.html这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小。选择写这样一个系列的文章,主要是想给工作了两年的自己一个交代,或者说是一个阶段性的总结。两年时间里,房价依然再涨,工资依然跑不赢CPI,某人依然在仰望星空。期间很多梦碎了转载 2013-12-20 15:15:48 · 373 阅读 · 0 评论 -
网络游戏服务器构架设计(一):前言
贴上原文地址:http://www.cnblogs.com/ychellboy/archive/2012/08/14/2638847.html这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小。选择写这样一个系列的文章,主要是想给工作了两年的自己一个交代,或者说是一个阶段性的总结。两年时间里,房价依然再涨,工资依然跑不赢CPI,某人依然在仰望星空。期间很多梦碎了转载 2013-12-20 15:14:59 · 390 阅读 · 0 评论 -
网络游戏服务器构架设计(一):前言
贴上原文地址:http://www.cnblogs.com/ychellboy/archive/2012/08/14/2638847.html这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小。选择写这样一个系列的文章,主要是想给工作了两年的自己一个交代,或者说是一个阶段性的总结。两年时间里,房价依然再涨,工资依然跑不赢CPI,某人依然在仰望星空。期间很多梦碎了转载 2013-12-20 15:14:43 · 1185 阅读 · 0 评论 -
探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(4)
贴上原文地址:http://blog.csdn.net/gz80/article/details/7411564最后探讨一下服务器优化的工作方法。程序优化可以说是一个全新的工作方式,它即不像写新模块似的,一切从零开始;也不像修复bug那样有明确的错误现象。它就像一个人对医生说,我觉得不舒服,但不知道到底哪里不舒服。对于程序也是一样,我就感觉玩起来很卡,但不知道到底卡转载 2013-12-16 17:36:18 · 1027 阅读 · 0 评论 -
探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(2)
贴上原文地址:http://blog.csdn.net/gz80/article/details/7410695然后探讨一下网络端的压力。服务器是玩家数据的交通枢纽,客户端所有数据包都在这里汇集,并由这里分发出去。特别对于网游服务器来说,其最主要的压力就是来自于网络流量,情况严重时会导致服务器相应缓慢,甚至卡死。网络流量就是像风一般的男子,残酷地摧毁了服务器的优雅。转载 2013-12-16 17:34:52 · 1258 阅读 · 0 评论 -
游戏服务器端开发要点
贴上原文地址: http://blog.csdn.net/gelu1231/article/details/6980262摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.转载 2013-12-16 18:00:04 · 1654 阅读 · 0 评论 -
探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(3)
贴上原文地址:http://blog.csdn.net/gz80/article/details/7411141最后说下系统资源,包括CPU、内存、硬盘等。由于现在采用了一机多服的部署,原来还算宽裕的系统资源一下子紧缺起来。(1)垂死病中惊坐起,暗风吹雨入寒窗——利用看门狗检测死循环或死锁先探讨一下CPU压力。由于游戏不是计算密集型项目,所以平时cpu上的压力并转载 2013-12-16 17:35:36 · 1137 阅读 · 0 评论 -
探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(1)
贴上原文地址:http://blog.csdn.net/gz80/article/details/7408658游戏上线三个多月,途中经历了宕机、卡死、回档、断线、间歇性抽风、断续登陆失败等无数劫难,在团队内各位专业精英的努力,现在终于到达了一个较稳定的阶段。现总结一下服务器压力的原因和解决方案。对于游戏服务器来说,压力无非来源于三座大山:数据库、网络以及系统资源(包括转载 2013-12-16 17:34:00 · 1732 阅读 · 0 评论 -
网关服务器
原文地址:http://blog.csdn.net/apengjiang/article/details/7349930 之前想着要把什么什么给写一下,每次都太懒了,都是想起了才来写一下。今天只讨论游戏服务器的网关服务器。 1.转发 转发客户端和服务器间的消息,网关将场景、会话、数据、名字、平台等服务器的数据转发给客户端,接收客户端的转载 2013-12-10 21:57:42 · 811 阅读 · 0 评论 -
游戏服务器框架
http://blog.csdn.net/herm_lib/article/category/785367/1转载 2013-11-28 16:55:22 · 1018 阅读 · 0 评论