摘要: 很久之前,在博客园写了一篇文章,《分布式网游server的一些想法语言和平台的选择》,当时就有了用C 做网游服务端的想法。写了个Unity3d客户端分布式服务端框架,最近发布了1.0版本,取名ET框架。ET框架的目标就是简化客户端开发,简化分布式服务端开发,但是功能非常强大,完全可以作为一个大型分布 阅读全文
posted @ 2017-09-08 10:55 唐诗 阅读(17187) 评论(10) 推荐(17) 编辑
摘要: 前几天写了 "《开源分享 Unity3d客户端与C 分布式服务端游戏框架》" ,受到很多人关注,QQ群几天就加了80多个人。开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列的文章,介绍下自己的思路跟设计,每篇一个主题,这次介绍的是组件设计。 在代码复用和组织数据方面,面向对象 阅读全文
posted @ 2017-09-13 09:56 唐诗 阅读(23298) 评论(3) 推荐(4) 编辑
摘要: 国内网游已经发展了很多年了,开发语言的选择也逐步发生了变化,C 到 C++ 到 C++ + PYTHON 或者C++ + LUA 到现在 很多公司开始使用erlang,java,c#。目前是一个百花齐放的局面。 但是如果是要你重新做一个网游server,不考虑对公司或者已有的东西兼容性,你会怎么选择?我仔细想了一下这个问题,大概有这个几个方面需要考虑: 1. 语言类库是否齐全。 如果用C++ 或者C来搞,我想很多东西得自己重新编写,写出来的东西还未必正确。费时费力费钱。另外一些游戏server不可缺少的功能例如ORM,用C基本上没法去做 2. 语言的开发效率 一个好的IDE... 阅读全文
posted @ 2012-11-15 17:07 唐诗 阅读(4744) 评论(26) 推荐(2) 编辑
摘要: 最近公司游戏准备内测,但是原来的网络层写得很是混乱,搞的已经无法维护,结果不得不重写一遍。这坨烂摊子交到了我的手上,花了两个星期重写了公司的网络层,登录验证以及网关服务器。内测目前表现十分稳定。 我是及其反对重复造轮子的,所以一开始主张使用boost asio来做我们的网络层(asio写得非常优美,我自认为自己再怎么写也是无法达到这种水准的)。结果却遭到了一些人的反对,其观点无非是boost太庞大之类。既然如此,还是服从上级吧,不过心中仍然在想,大?难道服务器硬盘不够吗? 编写一个网络库,很多地方需要考虑和选择,我列举几个点: 1. proactor还是reactor设计? as... 阅读全文
posted @ 2012-07-30 19:47 唐诗 阅读(6760) 评论(6) 推荐(5) 编辑
摘要: 我在上篇博客C++不是C/C++ 提到C++的std::function给C++带来了闭包。有人留言说:“没有闭包真的很痛苦吗?不见得吧!”。我的回答是:“是的,真的很痛苦。” 首先来看闭包的两个作用:1.打包上下文 2.延迟调用。我们来设计一个linux 线程池来说明闭包的价值。 linux上线程创建的接口是: int pthread_create(pthread_t*, const pthread_attr_t*, void *(*)(void *), void *params);后面两个参数分别是一个函数指针,以及传给该函数的参数打包结构体的指针。上下文只能通过para... 阅读全文
posted @ 2012-04-23 17:31 唐诗 阅读(7386) 评论(5) 推荐(3) 编辑
摘要: 现在很多公司招程序员都是C/C++程序员。问:C/C++是一门什么语言呢?答:C中有C++, C++中有C。比如下面一段代码: 1: int b[256]; 2: memset(b, 0, sizeof(b)); 3: for (int i = 0; i < 1000000; ++i) 4: { 5: for (size_t j = 0; j < 256U; ++j) 6: { 7: b[j] = 10 * j; 8: ... 阅读全文
posted @ 2012-04-16 17:15 唐诗 阅读(4440) 评论(33) 推荐(5) 编辑
摘要: C++中protobuf是个常用的序列化库,网络消息发送,消息解析都十分方便,xml可以干的,它都能干。但是它绝不仅仅是序列化库。 简单的说,protobuf给C++增加了C# attribute的功能。C++从此就有了元数据了!会c#的同学肯定明白了这句话的意义了。 一. protobuf用作配置文件: protobuf提供了一种textformat的序列化格式,类似json格式,清晰易读。比如一棵行为树节点描述文件: 数据定义为: message BehaviorNodeConf{ required int32 type = 1; // 条件需要的参数 repeated int... 阅读全文
posted @ 2012-04-12 10:31 唐诗 阅读(9723) 评论(3) 推荐(4) 编辑
摘要: 前一段时间,自己想做一个行为树编辑器,给策划用来编辑ai 和 事件。由于本人是做linux C++的,很久没碰过图形界面编程了,实在是为难了一阵子,最后一狠心,重新用起大学学的那一些C#知识,自己一点点摸索,做了一个初级的东西出来,自我感觉良好,奉献出源代码 所用的技术是C# + WPF + PRISM 采用MVVM开发,其中的难点可能就是增删节点,自动生成一棵最美的树了。什么是最美树呢?它有个学术上的名字叫reingold-tilford,具体我也说不上来,看下图: 图一 图二 图二第4行比图一增加了一个节点,整棵树会自动调整布局,节点与节点之间间隙均匀,我认为这... 阅读全文
posted @ 2012-03-28 18:02 唐诗 阅读(2305) 评论(5) 推荐(1) 编辑
摘要: 狭义来讲,技能就是几个人作战时,可以对他人使用产生一定效果的操作。魔兽世界对技能定义进行了扩展,即在魔兽世界中,产生一定效果的任何操作都是技能。例如 吃面包,使用物品,采矿,训练商业技能 等等。 魔兽世界中技能可以产生一个立即的效果(例如 扣血,扣篮,挖到一个矿),或者是一个持续的状态(buff),或者两者兼而有之。立即效果处理起来比较简单这里就不细说了,这里主要说说程序中buff怎样处理。 魔兽世界中buff简直是千变万化,估计没有人能完全的了解所有的buff的效果。这其中有很多种分类,例如 类型 ... 阅读全文
posted @ 2012-03-28 16:09 唐诗 阅读(5269) 评论(14) 推荐(3) 编辑