|
传奇代码完全解析(2)
mir2res究竟有没有使用到delphiX控件??? 其实mir2源程序仅仅用了delphix的DDraw接口而已
下面详细说一下
因为Dx不是Delphi本地的,所以在delphi中运用dx要对dx进行delphi本地的翻译
即C to pas
如一些变量,结构接口等的声明等,这个工作JEDI和delphix都完成了
JEDI内的directdraw.pas只是完成对ddraw.dll的调用工作,在此文件中你看不到详尽的绘图函数,现成的函数全在ddraw.dll中
而如果你查看delphix的dxdraw.pas(好像是这个文件名吧?)中的源程序,你就可以看到它的绘图函数,其实Delphix是与ddraw.dll独立的游戏开发引擎,绘图引擎,而mir2
仅仅采用了其dxdraws.pas中的某些绘图函数,因为mir2源程序仅仅需要用到这些delphix中的这些函数,阅读mir2的源程序都知道,像delphix中的精灵类等在mir2中是没有被采用的,一个例子就是wil文件都是改装了原delphix中的图像资源打包类文件而来的
2005-11-17 5:28:13 传奇为什么会很卡??掉线时这种效果最明显
人物起跑“走一动,卡一步”
那是因为传奇这种网络游戏的客户端和服务端是基于消息通讯的
Grobal2.pas,,,客户端和服务端通用的文件,定义了一些消息标识,数据结构,消息操作函数
当网卡或掉线时
人物起跑,,走动都在客户端和服务端存在着基于消息标识的交互
客户端不能及时向服务器发送消息或得不到服务器的反馈消息就会卡
(服务器当然不会卡:))
传奇服务器不是在线电影服务器,吞吐量不大,但是线程繁多,复杂。线程再传奇内部已经得到一定处理(m2server.exe和rungate之间的数据分析)。但是,一个玩家造成的线程是持续的2条,一条进一条出。这个大家都没有意见把!
如果一个大型网站可以牺牲相应率来保证质量的话,他可以提高1倍以上的浏览量,但是传奇不行,稍微有差错,就是用户断线,容不得有半点不持续,而且这个持续时间是几个小时甚至10几个小时,而且这条线程是占用独立的跑到的,一旦确认除非客户断线,或者服务器断线,否则是不会撤销的,甚至客户不是安全下线,服务器仍旧会在一段时间里面持续这条线程
|
|