自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (4)
  • 收藏
  • 关注

转载 初识iBeacons,一见钟情。

什么是iBeaconsiBeacons是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | BLE | Bluetooth Smart)的精准微定位技术,当你的手持设备靠近一个Beacon基站时,设备就能够感应到Beacon信号,范围可以从几毫米到50米。iBeacons相比较于原来的蓝牙技术有几个特点:首先它不需要配对,所以你不用担心一个名为『一头母猪

2015-06-05 09:41:00 440

转载 Apple Swift编程语言入门教程

一只偷懒用的跨平台开发,现在基于硬件底层的开发,必须把IOS翻个遍,恰逢SWIFT,所以决定用一周左右拿下这个S小情人。先从入门开始。http://gashero.iteye.com/blog/2075324目录1   简介2   Swift入门3   简单值4   控制流5   函数与闭包6   对象与类7   枚举与结构1   简介今天凌晨App

2015-05-21 09:57:11 320

原创 NGUI 的callWhenFinished必须激活eventReceiver才能起效果。

NGUI 的callWhenFinished必须激活eventReceiver才能起效果。折腾了我3个小时,遇到同样问题的记得先激活eventReceiver Gameobject。callWhenFinished=“”,这中间是个方法名字的字符串类型。

2013-04-20 23:48:20 1848

原创 sfsx2 jar为什么没有找到服务器端扩展,折腾了三天终于找到原因了!

自己写了个服务端的JAVA扩展 ,放在extensions文件夹下,死活在管理员工具台找不到,重装了SDK,重装了JAR,死活都不行,最后还在在官方文档里找到了答案,IMPORTANT NOTEThe name of the main Extension jar file must end with the word Extension, for exampleMyExtension.jar.

2013-04-17 14:14:46 730

原创 sfsX2自带例子Unity中启动报错的Security Exception. Policy file load failed!

折磨了好几天 终于找到原因了,切换一下switch platform 到WEB PALYER,就OK了!

2013-04-15 23:11:09 1184

原创 pomelo在win7下跑不起来的几个原因

总结:win7下跑不起来的几个原因。1、搭建环境版本:python 要用2.7,不要用3.3。node要用0.8X系列,不要用1.0x系列。2、pomelo-admin-web 不支持WIN7,没有回调模型V8.装的时候就报错。3、依赖版本问题 要一致,不然lordofpomelo跑不起来。

2013-04-09 17:21:51 1067

转载 新版本Pomelo安装报错的原因

新版本的pomelo为移动端优化,新增了基于字典的route压缩和基于protobuf的传输数据压缩。其中涉及到3个定义文件/game-server/config中的dictionary.json clientProtos.json serverprotos.json这3个文件创建工程的时候是空的,这导致了上面错误。解决方法:在这3个文件中都加入{}然后是网页服务器,点击测

2013-04-05 20:41:46 1136

转载 Mangos源码分析(15):游戏对象的实现

狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。  在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、游戏对象(GameOb

2013-04-01 19:05:58 766

转载 Mangos源码分析(14):Mangos预编译头文件及模块划分随想

其中game工程生成的库文件game.lib居然有近四百兆之巨,mangosd和realmd在连接这个库的时候也要花上好长一段时间。当然,mangos现在的代码量也确实不少了,这也就要考虑到大的工程项目的源代码管理及模块工程划分,至少,像mangos现在这样,代码全部放入game目录中,并且就做为一个大的工程的方式,其弊端是已经显现了。另外还有功能模块划分的问题,需要找一个功能的实现时,不知道该到

2013-04-01 19:05:17 552

转载 Mangos源码分析(13):再谈登录服的实现

关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。        GateWay/WorldServer   GateWay/WodlServer  LoginServer LoginServer DNSServer WorldServerMgr                               |                     |

2013-04-01 19:03:40 651

转载 Mangos源码分析(12):服务器公共组件实现之事件与信号

有些类似于QT中的event与signal,我将一些动作请求消息定义为事件,而将状态改变消息定义为信号。比如在QT应用程序中,用户的一次鼠标点击会产生一个鼠标点击事件加入到事件队列中,当处理此事件时可能会导致某个按钮控件产生一个clicked()信号。对应到我们的服务器上的一个例子,玩家登录时会发给服务器一个请求登录的数据包,服务器可将其当作一个用户登录事件,该事件处理完后可能会产生一个用

2013-04-01 19:02:48 559

转载 Mangos源码分析(11):服务器公共组件实现之状态机

有关State模式的设计意图及实现就不从设计模式中摘抄了,我们只来看看游戏服务器编程中如何使用State设计模式。  首先还是从mangos的代码开始看起,我们注意到登录服在处理客户端发来的消息时用到了这样一个结构体:  struct AuthHandler  {    eAuthCmd cmd;    uint32 status;    bool (AuthSoc

2013-04-01 19:02:15 661

转载 Mangos源码分析(10):服务器公共组件实现之发包的方式

前面一直都在说接收数据时的处理方法,我们应该用专门的IO线程,接收到完整的消息包后加入到主线程的消息队列,但是主线程如何发送数据还没有探讨过。  一般来说最直接的方法就是逻辑线程什么时候想发数据了就直接调用相关的socket API发送,这要求服务器的玩家对象中保存其连接的socket句柄。但是直接send调用有时候有会存在一些问题,比如遇到系统的发送缓冲区满而阻塞住的情况,或者只发送了一

2013-04-01 19:01:44 854

转载 Mangos源码分析(9):服务器公共组件实现之环形缓冲区

消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mango

2013-04-01 19:01:15 574

转载 Mangos源码分析(8):服务器公共组件实现之消息队列

既然说到了消息队列,那我们继续来稍微多聊一点吧。  我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个message返回,同时在getMessage和putMessage之前都要求先获取锁资源。  实现虽然简单,但功能是绝对满足需求的

2013-04-01 19:00:46 693

转载 Mangos源码分析(7):服务器公共组件实现之游戏主循环

当阅读一项工程的源码时,我们大概会选择从main函数开始,而当开始一项新的工程时,第一个写下的函数大多也是main。那我们就先来看看,游戏服务器代码实现中,main函数都做了些什么。  由于我在读技术文章时最不喜看到的就是大段大段的代码,特别是那些直接Ctrl+C再Ctrl+V后未做任何修改的代码,用句时髦的话说,一点技术含量都没有!所以在我们今后所要讨论的内容中,尽量会避免出现直接的代码

2013-04-01 19:00:10 1018

转载 Mangos源码分析(6):登录服的设计之功能需求

正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。  想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服务器,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。  这个方法存在的安全隐患实在太大,明文的

2013-04-01 18:59:22 494

转载 Mangos源码分析(5):服务器结构探讨之最终的结构

如果我们就此打住,可能马上就会有人要嗤之以鼻了,就这点古董级的技术也敢出来现。好吧,我们还是把之前留下的问题拿出来解决掉吧。   一般来说,当某一部分能力达不到我们的要求时,最简单的解决方法就是在此多投入一点资源。既然想要更多的连接数,那就再加一台网关服务器吧。新增加了网 关服后需要在大区服上做相应的支持,或者再简单点,有一台主要的网关服,当其负载较高时,主动将新到达的连接重定向到其他网关

2013-04-01 18:58:44 600

转载 Mangos源码分析(4):服务器结构探讨之继续世界服

都已经看出来了,这种每切换一次地图就要重新连接服务器的方式实在是不够优雅,而且在实际游戏运营中也发现,地图切换导致的卡号,复制装备等问题非常多,这里完全就是一个事故多发地段,如何避免这种频繁的连接操作呢?  最直接的方法就是把那个图倒转过来就行了。客户端只需要连接到中心服上,所有到地图服务器的数据都由中心服来转发。很完美的解决方案,不是吗?  这种结构在实际的部署中也遇到了一些挑战

2013-04-01 18:58:05 598

转载 Mangos源码分析(3):服务器结构探讨之简单的世界服实现

讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。  对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场和副本等,这些都是通过基本逻辑功能组合或扩展而成。  在所有这些基础逻辑中,与我们要讨论的服务器结构关系最紧密的当属地图

2013-04-01 18:56:52 439

转载 Mangos源码分析(2):服务器结构探讨之登录服的负载均衡

回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏...  可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。  我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所

2013-04-01 18:55:34 657

转载 Mangos源码分析(2):服务器结构探讨之登录服的负载均衡

回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏...  可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。  我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所

2013-04-01 18:53:02 471

转载 Mangos源码分析(1):服务器结构探讨之最简单的结构

好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。  对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:

2013-04-01 18:51:59 605

转载 mangos源码分析

mangos 的执行模型一、线程分布: 1、主线程 main---- Master::Run() ,主要功能:初始化world、创建子线程、回收资源 2、WorldRunnable -------GS主线程 3、CliRunnable -----后台调试线程 4、RARunnable -------事件处理和分发线程 5、MaNGOSsoapRunnable---协议

2013-04-01 18:50:34 807

原创 当优美的C#与Unity3D结合时开发游戏变的超Esey(一)必须掌握的C#100个基本点。

Unity3D提供支持三种脚本语言,但是Jscript并非一我们所熟知的那个Jscript,有着很大的不同,所以建议使用优美的C#语言来写脚本,下面是必须掌握的100个C#基本点。1.C#中使用//(双斜杠)来表明本行的剩余部分代表注释。2.C#中语句是按顺序执行的,每条语句以分号结尾。3.C#中的函数执行一系列语句的行为,称为语句块---一对大括号中包含0条或多条语句。4.一个函

2013-03-25 11:32:12 2416

原创 CGBOSS学习C#之路的开篇之作

      所谓开遍之作,其实也就是给自己一个开始,结识csdn很久了,大约在2004年,之前只是个看客,现在决定开始灌水了。CGBOSS是我的英文签名,前两个字母是名字缩写,后四个字母只代表终极的追求,不是老板。      仔细想想自己的职业生涯也算颇为丰富,当过系统维护员,ERP实施顾问,后来进入百度,开始了asp,php等的开发。乱七八杂的学习了不少技术。但是自己总是感觉太乱,基

2009-10-20 13:11:00 468

smartfoxserver X2 与Unity3D的连接例子Connector(中文版)

smartfoxserver X2 与Unity3D的连接例子Connector(中文版),能够连接起来并测试!

2013-04-13

C#简单代码生成器(含源码注释和项目文件)

C#简单代码生成器(含源码注释和项目文件)。

2013-03-19

C#打印合格证2.0打印机套打票据程序(含完整源代码和项目文件)

打印机套打,自定义纸张尺寸,打印机设置,C#Winform开发,可以自由设定各种票据背景,调整字段显示位置!真正的套打。

2013-03-14

Head FirstC# 通信录

Head FirstC# 通信录 cgboss学习C#之路的第一个练习

2009-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除