摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载,但任何对本文的引用都须注明作者、出处及此声明信息。谢谢!!  在网络应用中,“负载均衡”已经不能算是什么新鲜话题了,从硬件到软件,也都有了很多的方法来实现负载均衡。我们这里讨论的负载均衡,并不是指依靠DNS转向或其它硬件设备等所作的负载均衡,而是指在应用层所作的负载均衡。  一般而言,只有在大型在线系统当中才有必要引入负载均衡,那么,多大的系统才能被称为大型系统呢?比如动辄同时在线数十万的网络游戏,比如同时在线数在10万以上的WEB应用,这些我们都可以理解为大型系统,这本身就是 阅读全文
posted @ 2011-02-05 22:42 oayx 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme 本文出处:http://blog.csdn.net/sodme版权声明:本文可以不经作者同意任意转载,但转载时烦请保留文章开始前两行的版权、作者及出处信息。  完成端口的主要优点在哪里?  完成端口的最大优点在于其管理海量连接时的处理效率,通过操作系统内核的相关机制完成IO处理的高效率。注意:完成端口的优点在于管理连接量的巨大,而不是传输数据量的巨大。在这种场合最适合用完成端口:连接量巨大,且每个连接上收发的数据包容易比较小,通常只有几K甚至不到1K的字节。  既然完成端口处理的是海量连接问题,那么我们对完成端口的优化则也应该首先放在海量连接的相关管理上。为此,我们引入“ 阅读全文
posted @ 2011-02-05 22:41 oayx 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 接触了一段时间的网游封包设计,有了一些初步的思路,想借这篇文章总结一下,同时也作个记录,以利于以后更新自己的思路。  网络游戏的技术研发,分为三个主要的方面:服务器设计,客户端设计,数据库设计。而在服务器和客户端之间实现游戏逻辑的中介则是游戏数据包,服务器和客户端通过交换游戏数据包并根据分析得到的数据包来驱动游戏逻辑。网络游戏的实质是互动,而互动的控制则由服务器和客户端协同完成,协同就必然要依靠数据来完成。  当前网络游戏中的封包,其定义形式是各种各样的,但归纳起来,一般都具有如下要素:封包长度,封包类型,封包参数,校验码等。  封包长度用于确定当前游戏数据包的长度,之所以提供这个数据,是因为 阅读全文
posted @ 2011-02-05 22:39 oayx 阅读(1321) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme 本文出处:http://blog.csdn.net/sodme版权声明:本文可以不经作者同意任意转载,但转载时烦请保留文章开始前两行的版权、作者及出处信息。由于手头的一个网游项目正在启动,所以,这一篇文章与上一次的文章之间相隔了很长的时间,特向读者道歉,让大家久等了。这个系列文章,是没有事先打草稿的,纯属信手写来,所以,其中的条理性可能不太好,我会在以后的整理中将稿子再好好整理。我们接着上一次的内容,说一说游戏机器人的开发工具和开发步骤。游戏机器人的开发包括两个重要方面,它们是:封包分析和加解密。当然,这是一种相当宽泛的说法,非常不严密。具体地来说,在封包分析中,又包括: 阅读全文
posted @ 2011-02-05 22:38 oayx 阅读(771) 评论(0) 推荐(1) 编辑
摘要: 本文作者:sodme 本文出处:http://blog.csdn.net/sodme版权声明:本文可以不经作者同意任意转载,但转载时烦请保留文章开始前两行的版权、作者及出处信息。  最早听说网络机器人的存在,是在2002年底,那时第一次听说GOOGLE为了统计和查询网络资源,专门研制了一种网络机器人,在世界各地为GOOGLE不辞劳苦地忙碌着,然而,关于网络机器人更详细的信息却一直不得而知。  直至2003年10月,才第一次在网络游戏中听说了有一种程序叫:机器人程序(以下简称游戏机器人)。简单地说,游戏机器人是一种智能化游戏程序,可以全部或部分代替玩家从事游戏活动,让玩家从无休止的升级打怪的痛苦 阅读全文
posted @ 2011-02-05 22:37 oayx 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme 本文出处:http://blog.csdn.net/sodme版权声明:本文可以不经作者同意任意转载,但转载时烦请保留文章开始前两行的版权、作者及出处信息。  当大家尝试了若干年由互联网信息资源大爆炸所带来的甜头后,我们开始为寻找有用资源以及有效利用这些庞大的资源而发愁,更多的时候,我们更象一只乱撞的苍蝇在这个URL和那个URL之间奔走,半天的忙碌说不定给我们带来的却是一场空。于是,我们不由自主的渴望着,如果有一种软件,能代替这种近乎体力劳动的“搜索”和“处理”工作,那该多好呀。  我自己也曾不止一次地发出过这种感慨,但我想,对这种软件有最强烈渴望的群体应该首选网络游戏玩 阅读全文
posted @ 2011-02-05 22:37 oayx 阅读(837) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载,但任何对本文的引用都须注明作者、出处及此声明信息。谢谢!!  要了解此篇文章中引用的本人写的另一篇文章,请到以下地址:  http://blog.csdn.net/sodme/archive/2004/12/12/213995.aspx  以上的这篇文章是早在去年的时候写的了,当时正在作休闲平台,一直在想着如何实现一个可扩充的支持百万人在线的游戏平台,后来思路有了,就写了那篇总结。文章的意思,重点在于阐述一个百万级在线的系统是如何实施的,倒没真正认真地考察过QQ游戏到底是不是那 阅读全文
posted @ 2011-02-05 22:32 oayx 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载,但任何对本文的引用都须注明作者、出处及此声明信息。谢谢!!  特别声明:  本人非常欣赏暴雪及他们的游戏,之所以写这个文章,是想让大家了解一些网络封包分析方面的常见方法以及学习暴雪游戏在网络处理方面的经验,偶认为作为一个网络编程者,熟练掌握封包分析的工具和方法应该是其基本功之一。本文所列的所有封包分析内容,全部是采用普通黑箱方式即可得来的,并未涉及对魔兽世界可执行程序的逆向工程。同时,除此文涉及的内容外,本人拒绝向任何人透露更详细的关于魔兽世界封包方面的更多内容,有兴趣者请自己 阅读全文
posted @ 2011-02-05 22:32 oayx 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、引用。但任何对本文的引用,均须注明本文的作者、出处以及本行声明信息。  之前,我分析过QQ游戏(特指QQ休闲平台,并非QQ堂,下同)的通信架构(http://blog.csdn.net/sodme/archive/2005/06/12/393165.aspx),分析过魔兽世界的通信架构(http://blog.csdn.net/sodme/archive/2005/06/18/397371.aspx),似乎网络游戏的通信架构也就是这些了,其实不然,在网络游戏大家庭中,还有 阅读全文
posted @ 2011-02-05 22:31 oayx 阅读(762) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.参考资源:http://www.lua.org/pil/ 一 个小小的脚本语言都能玩出这么多花样来,还真有点让我始料不及。你还别说,越写越觉得有意思了,现在干的活,很多的时候,象一个打字员或翻译员:把c++ 的代码翻译成lua的代码. 当然, 这只是一种比喻, 事实上, 在写的过程中, 针对于游戏的逻辑来说, 肯定会加上自己的理解以及判断, 然后作出适当的调整与取舍.lua是一种动态类型 阅读全文
posted @ 2011-02-05 22:20 oayx 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.参考资源:http://www.lua.org/pil/ 7. 如果有人问我, c里, 你觉得哪种基本数据类型最爽? 我会说, 那可能是union吧, 因为它可以让我一定程度的偷懒. 而如果有人问我, lua里你觉得哪种基本数据类型最爽?我会肯定的回答: table. lua的官方文档里是这样"吹嘘"table的:We use tables to represent ordinary a 阅读全文
posted @ 2011-02-05 22:20 oayx 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 本文作者:sodme本文出处:http://blog.csdn.net/sodme声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.很多高深的人物都说过类似的话:"语言层面的东西, 都是表面的东西, 最核心的是设计模式, 是算法", 我完全赞同这句话, 但同时也完全赞同另一句话: "对于从事编码实践的我们, 还是应该踏实的多掌握一些编码层面的东西, 才更有利于理解核心的东西, 附带的, 也可以借以增加自信, 找回青春"...前面写过的孔乙己系列, 是以底层的眼光看阳春白雪的C++(当然,还没写完), 而在这个系列里, 阅读全文
posted @ 2011-02-05 22:19 oayx 阅读(405) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/jaredz/archive/2006/04/29/697392.aspx好强呀,这篇文章。第六集 纹理映射技术为使建立的3D模型更接近现实世界中的物体, 简单的颜色变换已经无能为力, 这时我们就需要纹理映射技术了. 这一集我们讲解基础的纹理映射技术的数学模型, 对于在粒子系统使用的过程纹理技术在高级部分讲解.6.1 二维纹理映射6.1.1 纹理映射的简单建模 二维纹理映射就是从二维纹理平面到三维物体表面的映射. 一般二维纹理平面是有范围限制的, 在这个平面区域内, 每点都可用数学函数表达, 从而可以离散的分离出每点的灰度值和颜色值, 这个平面区域称为 阅读全文
posted @ 2011-02-05 22:05 oayx 阅读(1373) 评论(0) 推荐(1) 编辑
摘要: 转:http://community.csdn.net/Expert/topic/5631/5631339.xml?temp=.5729029 【Ref】Windows对文件的读写提供了很丰富的操作手段,如:1. FILE *fp, fstearm...; (C/C++)2. CFile, CStdioFile...; (MFC)3. CreateFile, ReadFile...;(API)...在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再用一般手段处理,系统就显的力不从心了要把文件读出,再写进,耗费的是CPU利用率与内存 阅读全文
posted @ 2011-02-05 22:00 oayx 阅读(4997) 评论(0) 推荐(0) 编辑
摘要: --------------------------------------本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序-------------------------------------- 关于Debug和Release之本质区别的讨论 一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优 阅读全文
posted @ 2011-02-05 21:54 oayx 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 当然TCP方式的模型还有事件选择模型。就是把所有的网络事件和我们的一个程序里定义的事件梆定。这个有它的好处,可能可以让我们更好的写一个线程来管理接收与发送。现在来讲一下一个完成端口模型。 完成端口 一个完成端口其实就是一个通知队列,由操作系统把已经完成的重叠I/O请求的通知放入其中。当某项I/O操作一旦完成,某个可以对该操作结果进行处理的工作者线程就会收到一则通知。而套接字在被创建后,可以在任何时候与某个完成端口进行关联。步骤:1、创建一个空的完成端口;2、得到本地机器的CPU个数;3、开启CPU*2个工作线程(又名线程池),全部都在等待完成端口的完成包;4、创建TCP的监听socket,使用 阅读全文
posted @ 2011-02-05 21:51 oayx 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 首先得弄清楚同步、异步、阻塞、非阻塞的概念。同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以这很容易执行函数的线程处于等待I/O上的数据状态,然后被挂起。非阻塞就不一样,执行recv时候不管有没有数据都立即返回,有数据时返回数据,没数据时返回错误。非阻塞可以带来程序的高效,也带来了写程序中必须注意的地方,非阻塞情况下,发送与接收数据时候,要用户自己管理自己的缓冲区,并且要记录发送与接受的位置,因为很可能发送与接受数据的任 阅读全文
posted @ 2011-02-05 21:45 oayx 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术:  I/O端口  同步/异步  堵塞/非堵塞  服务端/客户端  多线程程序设计  Winsock API 2.0  在这之前,我曾经开发过一个项目,其中一块需要网络支持,当时还考虑到了代码的可移植性,只要使用select,connect,accept,listen,send还有recv,再加上几个#ifdef的封装以用来处理Winsock和BSD 阅读全文
posted @ 2011-02-05 21:44 oayx 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 作者: James Hobart 翻译: spark.bbs@bbs.nankai.edu.cn 日期: 2001-3-23 转自:http://nku.nankai.edu.cn/cim/students/doctor/spark/articles/PrinciplesOfGUIDesign.htm 译序:我在网上查找中文的 GUI 设计规范,居然没有详细一点的,一篇泛泛而谈的文章却被转载了几十次。只好退而求其次,找来这篇英文的,顺带翻译成中文,以方便国内编程人员。 +++++++++++++++++++++++++++++++++++++++++++++++++ 图形用户界面( GUI 阅读全文
posted @ 2011-02-05 21:41 oayx 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 一、底层开发包和工具1. http://www.mesa3d.orgMesa 是一个类OpenGL( http://www.opengl.org )的开源实现。2. http://openil.sourceforge.netDevIL (即以前的OpenIL)是一个跨平台的图形处理包,支持BMP、JPG、GIF 等多种图形文件格式。二、2D 游戏开发包1. http://www.libsdl.org/http://www-900.ibm.com/developerWorks/cn/linux/theme/special/SDL(Simple DirectMedia Layer)是一个跨平台的多 阅读全文
posted @ 2011-02-05 21:39 oayx 阅读(462) 评论(0) 推荐(0) 编辑