网页游戏服和玩家id的规划
基于页游项目遇到问题后的预想,可能不具普遍性,仅供参考。主要考虑接入不同运营商,合服滚服需求,数据分析后台。
基于页游项目遇到问题后的预想,可能不具普遍性,仅供参考。主要考虑接入不同运营商,合服滚服需求,数据分析后台。
你们用哪一种协议?
1、包长度->版本号->协议号->内容
2、包头标志(比如“|”)->版本号->协议号->内容长度->内容
还有消息包格式的定义,这个曾在云风的blog上展开过激烈的争论。消息包格式定义包括三段,包长、消息码和包体,争论的焦点在于应该是消息码在前还是包长在前,我们也把这个当作是信仰问题吧,有兴趣的去云风的blog上看看,论论。
另外早期有些游戏的包格式定义是以特殊字符作分隔的,这样一个好处是其中某个包出现错误后我们的游戏还能继续。但实际上,我觉得这是完全没有必要的,真要出现这样的错误,直接断开这个客户端的连接可能更安全。而且,以特殊字符做分隔的消息包定义还加大了一点点网络数据量。
引用百万用户级游戏服务器架构设计
今天,我给我的测试软件框架添加了一个 C 模块,里面封装了一个 sleep 的系统调用。我的目的是在用 Lua 时,要延时的话,不用执行 os.execute("sleep 5") 之类的蹩脚语句,而替之以 mt.sleep(5) 之类的就行了。
linux平台安装以及启动配置
skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。
skynet默认开启_timer线程、socket线程、_monitor线程以及可配置个数的多个_worker线程,启动skynet服务就是向skynet注册由c编写的so模块实例也就是服务。
skynet主要工作是通过模块注册管理服务,并协调服务之间的调用和通讯。
skynet自带的模块中有一个重要的模块是snlua.so模块,通过snlua.so和指定lua脚本文件可以启动多个lua编写的服务,不用每个服务都是用c来编写,而且大部分逻辑都是在 lua 脚本下开发,只有需要考虑性能的模块才用 C 语言开发成库,直接提供给 lua 调用。 现在 Skynet提供给 lua 使用的库还不多,期望以后这些库多了,可以方便、简单的完成一个网络游戏服务端的开发。
Skynet是服务端的最底层框架,和游戏有关的各种服务都是基于架构之上开发的。服务启动后skynet一般由socket接受外部msg传入内部服务做处理。
PPT简介:http://pan.baidu.com/s/1i3qp7b3
buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。
这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。
说明