07 2018 档案

摘要:在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。 epoll通过在Linux内核中申请一个简易的文件系 阅读全文
posted @ 2018-07-31 15:45 _raindrop 编辑
摘要:先说个故事 鬼子进村 处理大量的连接的读写,select 是够低效的。因为 kernel 每次都要对 select 传入的一组 socket 号做轮询,这叫鬼子进村策略。一遍遍的询问“鬼子进村了吗?”,“鬼子进村了吗?”... 大量的 cpu 时间都耗了进去。(更过分的是在 windows 上,还有 阅读全文
posted @ 2018-07-24 14:00 _raindrop 编辑
摘要:5基础技术知识 10管理方面 技术 多看游戏系统代码,优化代码,多调试 知识+逻辑(深度思考) 架构(选型) 做的更多,做的比安排给你的任务更多。 除了做完这个功能,还将关联的功能全部掌握清楚 ,熟悉更多业务,不管是不是你负责的;熟悉更多代码,不管是不是你写的。 关于读源码 找资料(开发计划和版本历 阅读全文
posted @ 2018-07-07 14:59 _raindrop 编辑
摘要:KBEngine是一款开源的MMOG游戏服务端引擎,使用C++编写,用Python脚本即可简单高效的完成任何游戏逻辑(支持热更新)。 KBEngine底层架构被设计为多进程分布式动态负载均衡方案,理论上只需要不断扩展硬件就能够不断增加承载上限,单台机器的承载上限取决于游戏逻辑本身的复杂度。 基于实体 阅读全文
posted @ 2018-07-07 14:53 _raindrop 编辑
摘要:skynet中提供了一个简单的计时器实现,可以设置一个超时时间,时间到达后给对应的服务发送消息。 skynet中没有使用signal信号的方式来实现计时器,而是程序自身进行计时并处理计时器事件。另外,skynet中将时间由近及远划分为五个level,在时间复杂度和空间复杂度上达到了平衡。 初始化计时 阅读全文
posted @ 2018-07-05 14:45 _raindrop 编辑
摘要:skynet 的 C API 采用异步读写,你可以使用 C 调用,监听一个端口,或发起一个 TCP 连接。但具体的操作结果要等待 skynet 的事件回调。skynet 会把结果以 PTYPE_SOCKET 类型的消息发送给发起请求的服务。(参考skynet_socket.h) 在处理实际业务中,这 阅读全文
posted @ 2018-07-05 13:52 _raindrop 编辑
摘要:一些拓扑: https://blog.csdn.net/to_be_better/article/details/56954500 登录服务器 https://github.com/cloudwu/skynet/wiki/LoginServer https://github.com/cloudwu/ 阅读全文
posted @ 2018-07-05 12:48 _raindrop 编辑
摘要:服务器引擎 这里 数据库(缓存) 现在比较流行的两种数据库,关系型数据库mysql,sql server和非关系型数据库redis、mongodb。 memcached曾经的优势是可以集群,但是现在redis也可以了。 redis支持更多数据结构,支持数据持久化。所以redis可以看做memcach 阅读全文
posted @ 2018-07-05 12:44 _raindrop 编辑
摘要:单节点模式 执行命令:redis-server.exe redis6379.conf 该命令指定了配置文件,不指定的情况下默认读取的配置文件是redis.conf配置文件 主从模式(数据备份) 主节点和从节点使用完全相同的服务器实现, 它们的功能(functionally)也完全一样, 但从节点通常 阅读全文
posted @ 2018-07-03 17:51 _raindrop 编辑
摘要:文件根据实现功能的不同,可以分为四部分: 1虚拟机运转的核心功能 lapi.c C语言接口lctype.c C标准库中ctype相关实现ldebug.c Debug接口ldo.c 函数调用以及栈管理lfunc.c 函数原型及闭包管理lgc.c 垃圾回收lmem.c 内存管理接口lobject.c 对 阅读全文
posted @ 2018-07-03 15:09 _raindrop 编辑
摘要:当你发布lua时,你或许不想用户看到你的lua源码,更不想用户修改你的lua代码和系统内部的秘密,那就需要用别的方式来发布。 最终的文本文件可以通过lua作者提供的标准发布版本中的程序来执行。这个程序称做luac.exe,把lua文本文件“编译”成二进制的文件。这样就可以让别人更难知道你的游戏是如何 阅读全文
posted @ 2018-07-03 14:36 _raindrop 编辑
摘要:在之前lua学习:lua作配置文件里,我们学会了用lua作配置文件。 其实lua在游戏开发中可以作为一个强大的保存、载入游戏数据的工具。 1.载入游戏数据 比如说,现在我有一份表单: data.xls 用什么工具解析这个Excel文件并将数据载入游戏? 我们可以使用Lua来完成这个工作。不过要先将表 阅读全文
posted @ 2018-07-03 14:28 _raindrop 编辑
摘要:https://www.cnblogs.com/dimin/p/7838674.html https://blog.csdn.net/nekocode/article/details/7960371 lua与C/C++交互,主要靠lua API和向lua注册好的函数。如下图 注:LuaGlue就是让 阅读全文
posted @ 2018-07-03 11:41 _raindrop 编辑
摘要:lua作为一种脚本语言,可以快速地开发游戏的原型。提高游戏的开发效率。 最熟悉不过的就是作为魔兽世界、博德之门、愤怒的小鸟等游戏的脚本语言。 但是,具体来说,lua在游戏中可以做什么呢? 在游戏中,lua可以用来完成下面这些工作: ●编辑游戏的用户界面 ●定义、存储和管理基础游戏数据 ●管理实时游戏 阅读全文
posted @ 2018-07-03 11:01 _raindrop 编辑
摘要:lua的一项重要用途就是作为一种配置语言(configuration language)。 目前,我们常用的配置文件格式有XML和ini, XML层次分明,但其缺点就是写起来太繁杂,对一些关键字如<>之类的处理比较特殊。而ini呢,配置不够灵活,只有简单的段- 键-值模式,对于一些多层结构的配置,或 阅读全文
posted @ 2018-07-03 10:56 _raindrop 编辑
摘要:Lua除了是一门扩展的言语外,还是一门“胶水语言”。最著名的就是作为游戏的脚本开发。 这里主要说lua怎样与c交互。 Lua和c语言通信的主要方法是一个无所不在的虚拟栈。几乎所有的API调用都会操作这个栈上的值。所有的数据交换,无论是Lua到C语言或C语言到Lua都通过这个栈来完成。栈可以解决Lua 阅读全文
posted @ 2018-07-03 10:38 _raindrop 编辑