Hybird3D

乔捷的技术博客

博客园 首页 新随笔 联系 订阅 管理

2014年1月3日 #

摘要: 我们开发的页游General War(http://gw.gamebox.com)上线运营也有半年多了,服务器的开发到运维基本都由我一手包办,在服务器上线之后我们又招了一个程序员接手后续功能的开发,而我则主要转到后台工具开发和服务器运维上。说到服务器的运维,我的全部经验就是维护过几台小型企业的域控,在linux上部署过几个web服务,以前做游戏的时候运维都是交给运营方去打点,而这次我是主动承担了这部分的工作。由于我们的游戏服务器框架(EasyGame)是基于.net技术开发的,所以选择windows服务器来部署是比较自然的事情,虽然借助mono也可以在linux上部署,但毕竟不如windows 阅读全文
posted @ 2014-01-03 01:42 qiaojie 阅读(14279) 评论(13) 推荐(6) 编辑

2013年9月30日 #

摘要: 异步RPC调用的接口设计 阅读全文
posted @ 2013-09-30 12:02 qiaojie 阅读(23294) 评论(3) 推荐(4) 编辑

2013年6月6日 #

摘要: 我们的网页游戏服务器上线2个月了,一直运行平稳,没出什么重大BUG。前两天刚更新了一个版本,结果今天早上GM报过来一个BUG,让我折腾了整整一天。事情是这样的,早上GM报告说某台服务器上有玩家抱怨在线时间奖励无法领取,客户端上显示在线时间已经到了,点击领取服务器却报错说在线时间不足。一开始怀疑是否客户端计时和服务器是否不同步,但很快排除了这个可能性。反复实验后发现是服务器上的玩家在线时间一直没有更新。查阅了一下服务器代码,玩家的在线时间变量是每隔60秒加1,这里判断时间间隔是用的系统的tick count,tick count是一个32位的int,单位是毫秒,每隔40天会溢出,因此就怀疑是不是 阅读全文
posted @ 2013-06-06 02:03 qiaojie 阅读(3273) 评论(5) 推荐(5) 编辑

2013年2月11日 #

摘要: 看到空明流转分享了他的SALVIA 0.5.2优化谈,我也来说说Hybird3D中和光栅化相关的一些优化技术。Hybird3D的设计目标是打造一款准实时的软件高质量渲染器,采用了光栅化和光线跟踪混合算法,光栅化用于渲染eye ray,光线跟踪则用于阴影、反射、折射、全局光等次级光线的计算。由于渲染器是以准实时(一帧渲染时间在几十毫秒到几秒之间)为设计目标的,因此性能优化是非常重要的,但同时为了能够实现高质量的软件渲染,在渲染器的架构和支持的特性上也不会因为性能而缩水和妥协。光栅化算法Hybird3D的光栅化算法主要采用的是Michael Abrash写的rasterization on Lar 阅读全文
posted @ 2013-02-11 23:07 qiaojie 阅读(2644) 评论(1) 推荐(0) 编辑

2012年2月4日 #

摘要: 上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧。 阅读全文
posted @ 2012-02-04 17:55 qiaojie 阅读(13281) 评论(18) 推荐(6) 编辑

2012年2月2日 #

摘要: 前段时间接手了一个网络游戏前端连接服务器的开发工作,由于服务器需要在windows平台上部署,并且需要处理大量的客户端连接,因此采用IOCP来做为服务器端的编程模型就成了不二选择。虽然我对服务器开发并不陌生,但我一直以来对IOCP抱着不屑一顾的态度,感觉这个编程模型太过复杂,并不是一个良好的系统设计,所以一直没有用过。这回重新拿起来研究了一下,经过一个多月的研究和开发,目前服务器已经基本完成,即将着手进行压力测试。在研究的过程中,从网络上搜索了IOCP的相关文章和教程不下几十篇,开源的IOCP服务器框架也看了好几个,但都差强人意,在一些教程和文章中也存在诸多误导和不足,所以写下这组文章来谈一. 阅读全文
posted @ 2012-02-02 21:52 qiaojie 阅读(12280) 评论(24) 推荐(5) 编辑

2011年6月7日 #

摘要: 最近需要在windows上编译一个开源软件,需要安装MinGW-gcc-3.3.1这个版本,在MinGW的官网和sf上找了半天都找不到旧版本的下载,新版本又不能编译,真是愁死人啊,google了老半天,总算找到一个存放MinGW旧版本的网站:ftp://ftp.ntua.gr/mirror/mingw/OldFiles希望对有此类需要的朋友有一些帮助。 阅读全文
posted @ 2011-06-07 16:47 qiaojie 阅读(1300) 评论(0) 推荐(0) 编辑

2011年3月21日 #

摘要: 最近在玩Virtual Box,感觉非常不错。但是在用VBoxSDL.exe启动虚拟机的时候碰到点问题,在windows7 x64下SDL会运行报错:SDL Error: 'DirectInputDevice::SetDataFormat: Invalid parameters'研究了一下VBox的源代码,怀疑是SDL.dll里的问题,于是下载了SDL 1.2的源代码,重新编译一个x64的SDL.DLL看看。打开VisualC目录下的工程文件,发现只有WIN32版的编译配置,自己新建了一个x64的编译配置,编译正确,到了Link的时候报错:.\release\SDL.obj : 阅读全文
posted @ 2011-03-21 15:41 qiaojie 阅读(2323) 评论(0) 推荐(0) 编辑

2011年3月16日 #

摘要: 近日拜读了陈硕大牛的文章C++ 工程实践(5):避免使用虚函数作为库的接口,文章的观点认为应该避免使用C++的class纯虚函数来定义API接口,并以COM作为反向教材进行批判,对此本人有些不同意见,记录在此与各位一同探讨。陈硕大牛认为C++的虚函数是以虚函数在class中定义的位置来确定其虚表的绑定位置,在class扩充的过程中,原有的虚函数位置不可以变动,因此带来了接口扩展的脆弱与僵硬。虚函数位置不可以随意变动是事实,但是给接口扩展造成问题不敢苟同。陈硕举出的linux接口的例子,个人认为完全不妥,完全没有必要使用百层的继承,有很多种技巧可以解决这个问题,比方可以写成这样:classLin 阅读全文
posted @ 2011-03-16 17:04 qiaojie 阅读(2568) 评论(2) 推荐(2) 编辑

2011年2月25日 #

摘要: 最近要用到Intel的media SDK播放H264视频,发现intel的SDK转码出来的帧缓冲是NV12像素格式的,需要自己转换成RGB32格式。虽然这种代码网上找找一大堆,但还是自己动动手吧。google了一下转换公式:C = Y - 16D = U - 128E = V - 128R = clip(round(1.164383 * C + 1.596027 * E))G = clip(round(1.164383 * C - (0.391762 * D) - (0.812968 * E)))B = clip(round(1.164383 * C + 2.017232 * D))研究了一个 阅读全文
posted @ 2011-02-25 17:56 qiaojie 阅读(3181) 评论(2) 推荐(1) 编辑