玩《暗黑破坏神II》战网,谈服务器架构。
这两天玩了一下暗黑破坏神这个游戏,是114a版,和113c版本,113c版是典藏版,问题是不能连网。
114a是连战网的版本,113c可以挂地图全亮,114a没有数值外挂,用搜狗五笔输入法可以输入汉字。
114a是新的战网版本,我看了一下两个版本的文件,基本大小一样,就是有一个pach_D2.pmq大小不一样。
还有个文件binkw32.dll 大小不一样。这两个版本合在一起那就是一个MOD包游戏。都有缺点,于是组合了一个。
在113c服务器和114a服务器上好像是通用的,因为今年的战网我这上篇发的战网注册补丁的战网,刚刚在建设。
还有很多汉化和设置习惯问题正在发展。所以本人也加入了战网的冒险队。就这几天,传个心得和疱丁解牛方程式。
看我生活,一直很无味,游戏之后还看下篇,共同生活。
说起来这个注册表,一直是windows 系列都有的。以前windows 3.12 版时,应用程序用的是 ini 设置文件。
后来在win95之后,就用了注册表设置应用软件这个概念。很多人要么对注册表很懂,要么根本不懂。
我只谈一部分。一些常识网上可以了解。
暴雪公司有两块注册软件的部分。
[HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Diablo II]
这个部分是当前户设置区的软件注册,这是暴雪战网的软件设置区,其中一个游戏软件是Diablo II
[HKEY_CURRENT_USER\Software\Battle.net\Configuration]
这个部分是当前用户的软件区Battle.net是战网、Configuration是战网网址目录和战网网络公共区
其中有个字段“BNETIP"="x.x.x.x"(x.x.x.x 是实际域名) 是主要的战网连线方式。
注册表文件可以右键鼠标看文本,regedit命令可以打开注册表 有两个战网网关,Battle.net gateways 和 Diablo II Battle.net gateways两个字段它的值是不是16进制的都一样。
"Battle.net Gateways"=hex:31,30,30,32,00,30,00,31,39,32,2E,31,36,38,2E,31,\
2E,32,00,30,00,41,68,69,6E,61,00,00
这翻译过来就是类似于这样子的。
有脚本例子,修改战网主IP地址可以直接跳到战网上去。Diablo II 游戏软件实际是
这个脚本,可以更改字符串改成自己的,上个注册表截图已经说明了问题。没什么问题。
现手有一个服务器的服务软件,可以用来模拟战网。这服务器的软件是PvPGN 中文意思是玩家对战玩家的游戏网络。
这个服务器软件看得出来和以前的聊天服务软件有点类似,都是一种方式。以前的网络聊天室都差不多。
这服务,有几个分服务,一个是记录角色的,一个是记录游戏存档内容的,还有一个是加载游戏模块的,分别为d2cs,d2cdb,PvPGN,还有一个是整合这三个服务的d2gs。
当然,d2gs可以自己编写。另外还有一个数据库,一个记录临时的cdb文本数据文件,一个记录sql记录压缩数据库。做一般尝试,就cdb。
另外,还有一个内网和外网的问题。设置IP和域名这一类老的方法一直在用,就不用多说。还有端口问题,就是内网穿出外网有多重限制,有些设置看起来很对,但是实际不一样。
因为网络服务是服务软件的整合,最后做成一个服务实际程序大小不太大,但是要花时间。面对脚本问题,始终是一个头疼的问题,常常会漏和有一定的错位感。
要么从外到内,要么从内到外,一个结点一个结点的试验。不是难度,而是有一定的复杂度,就是各软件整合的设置问题,IP网址问题,各个服务流的规则,系统影响,和网关屏蔽点,域名,还有实际的连接。
无线网和有线网,内网和外网,路由,硬网络地址,还有安全软件的设置,等等都不可小视。
一个游戏的战网,要保存用户名,要校验客户端的软件和服务器用户文件的一致,还有数据的转向,分类,和识别。还有一些服务软件本身的设置环境和服务器的环境不一致问题。
还有服务器脚本的自动刷新内容,和改写设置不小心的还原性。还有数据的平衡。
我的启动批处理文件。
run.bat d2gs d2gs | PvPGN | d2cs | d2dbs pause
命令行启动方式
install.bat @echo off rem d2gs.exe -s install PvPGNConsole.exe -s install d2csConsole.exe -s install d2dbsConsole.exe -s install
这种方式基本不要。
还有一个补充方式。
启动.bat net start d2gs net start pvpgn net start d2cs net start d2dbs pause
把相关游戏主要函数动态库文件,后缀为dll的,拷贝到服务器上。
用脚本把游戏函数功能模拟出来。加入主要MOD包数据。就是游戏的场景角色移动,物件,地理位置,对手,玩家这些数据和服务器的数据比对,服务器作数据统计分析。
服务器转发两个或多个玩家的在线游戏数据内容。游戏数据在客户端最后由游戏软件再构造成图和游戏环境。
已经正确无误,但是突破外网,还要作一定的转向和映射。还有网络安全问题,这实际是软件问题。计算机的软件越多,授众越多,安全度就会下降。
一个程序员,为了生活,会加些不相关代码。那就要看人们的思想进化程度了,一个word 一个 world 一个字一个世界。
还有很多细节,那就要看对文件名的类别熟悉程度了,也就是归类,分析,和改写脚本,有些数据结构不可以轻易动,一定要考虑成熟。是个熟练工作。但是数据的归类范围很大。各类知识水平要高。还要心细。
这个服务脚本,有时一个大小写就不能通过,如服务器整合后的实名,还有是否是正式版等等,还有一些插件的编写。可以说做计算机服务器的服务程序的,都是数据分类工。心太累...............