09 2012 档案
小谈Online-game服务器端设计
摘要:小谈Online-game服务器端设计(1) 谈这个话题之前,首先要让大家知道,什么是服务器。在网络游戏中,服务器所扮演的角色是同步,广播和服务器主动的一些行为,比如说天气,NPC AI之类的,之所以现在的很多网络游戏服务器都需要负担一些游戏逻辑上的运算是因为为了防止客户端的作弊行为。了解到这一点,那么本系列的文章将分为两部 分来谈谈网络游戏服务器的设计,一部分是讲如何做好服务器的网络连接,同步,广播以及NPC的设置,另一部分则将着重谈谈哪些逻辑放在服务器比较合适,并 且用什么样的结构来安排这些逻辑。 服务器的网络连接 大多数的网络游戏的服务器都会选择非阻塞selec... 阅读全文
posted @ 2012-09-25 21:09 Simon Han 阅读(400) 评论(0) 推荐(0)
穿透代理服务器编程
摘要:正文 在网络程序设计过程中,我们经常要与各种类型的代理服务器打交道,比如在企业内部网通过代理去访问Internet网上的服务器等等,一般代理服务器支持几种常见的代理协议标准,如Socks4,Socks5,Http代理,其中Socks5需要用户验证,代理相对复杂。我在查阅RFC文档和相关资料后,特总结一些TCP协议穿透代理服务器的程序片断,希望对大家有所帮助。 //使用到的结构 struct sock4req1 { char VN; char CD; unsigned short Port; unsigned long IPAddr; char other[1]; }; stru... 阅读全文
posted @ 2012-09-24 19:49 Simon Han 阅读(1626) 评论(0) 推荐(0)
<转>IOCP相关的一些总结
摘要:IOCP相关的一些总结 1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。 网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。 情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合适的时候,将其数据拷贝到网卡缓冲区,进行真正的发送。 情况二:调用WSASend发送错误,但是错误码是WSA_IO_PENDING 的时候,表示此时TCP/IP层缓冲区已满... 阅读全文
posted @ 2012-09-23 11:44 Simon Han 阅读(1025) 评论(0) 推荐(0)
<转>浅谈网络游戏的设计——服务器端编程(2)
摘要:浅谈网络游戏的设计——服务器端编程(2) 非常感谢大家对上一篇文章的支持,在大家的支持下,我决定推出浅谈网络游戏开发(2)这篇文章。 首先,再次强调一下,网络游戏开发极为困难,技术含量相当的高,其编程知识涉及网络编程,操作系统进程、线程编程,图形图像编程(DirectX / OpenGL),WIN32 API编程(Windows下开发),以及各种算法和数据结构,同时对设计人员策划能力要求也颇高,如不能构思出一个吸引玩家的游戏世界,也必将导致开发失败。 目前,国内的网络游戏市场被韩国游戏霸占,情形让人心寒。在国内网络游戏编程资源奇缺的环境下,我希望把自己的一些经... 阅读全文
posted @ 2012-09-22 13:47 Simon Han 阅读(620) 评论(0) 推荐(0)
Windows IOCP是什么
摘要:欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/异步 堵塞/非堵塞 服务端/客户端 多线程程序设计 Winsock API 2.0 在这之前,我曾经开发过一个项目,其中一块需要网络支持,当时还考虑到了代码的可移植性,只要使用 select,connect,accept,listen,send还有recv,再加上几个#ifdef的封装以用... 阅读全文
posted @ 2012-09-22 09:41 Simon Han 阅读(3763) 评论(2) 推荐(1)
游戏程序开发的工作主要包括哪些方面
摘要:一、游戏程序开发的工作主要包括哪些方面 游戏开发中的程序开发主要由如下几个方面组成: 1.图形引擎 2.声音引擎 3.物理引擎 4.游戏引擎 5.人工智能或游戏逻辑 6.游戏GUI界面(菜单) 7.游戏开发工具 8.支持局域网对战的网络引擎开发 9.支持互联网对战的网络引擎开发 下面逐一介绍每个部分: 1.图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟)),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用DCC软件(... 阅读全文
posted @ 2012-09-21 21:12 Simon Han 阅读(2257) 评论(0) 推荐(0)
setsocketopt() usage
摘要:1.如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2.如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOLbDontLinger = FALSE;setsockopt(s,SOL_SOCKE 阅读全文
posted @ 2012-09-20 20:35 Simon Han 阅读(1345) 评论(0) 推荐(0)
Socket Error# Description
摘要:在OnError中有返回的错误代码你看一下!10053://软件导致连接退出10054://连接被重置10004://操作被中止10013://访问被拒绝10014://地址错误10022://参数错误10024://打开太多的SOCKET10035://没有可以获取的资料10036://操作正在正行中10037://操作正在进行中10038://在一个非法的Socket对象上进行操作10039://目标地址缺失10040://数据太长10041://协议类型错误10042://错误的协议选项10043://协议不支持10044://Socket类型不支持10045://不支持指定操作1004 阅读全文
posted @ 2012-09-09 18:01 Simon Han 阅读(379) 评论(0) 推荐(0)
LPCTSTR 和其它
摘要:一般LP代表指针,C代表const,T代表宽字符,STR代表字符串,这么对应下来大概是这样:LPCTSTR = const TCHAR*BOOL A Boolean value.BSTR A 32-bit character pointer.BYTE An 8-bit integer that is not signed.COLORREF A 32-bit value used as a color value.DWORD A 32-bit unsigned integer or the address of... 阅读全文
posted @ 2012-09-08 09:24 Simon Han 阅读(189) 评论(0) 推荐(0)
stdafx.h的作用
摘要:stdafx.h的作用Standard Application Fram Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以 阅读全文
posted @ 2012-09-03 21:27 Simon Han 阅读(178) 评论(0) 推荐(0)