动态IP模式的优点及原理
我自己本身是搭建了一个E3的itx小主机用来做24小时开机的服务器的,但我没有固定IP,那玩意太贵了。这个时候引擎的动态IP模式就很有必要了,他几乎实现了固定IP的体验,不必因为IP的变化而去重启服务端。按照传统操作,就算你登录器上是动态域名,但外网IP变化之后,你还是需要停止服务器,重新配置IP,启动服务器。在重启的时候,你服务端的挂机信息,怪物信息,一些活动脚本全部都重启了,体验太差,动态IP模式的话只会用户掉线,重新打开登录器登录即可,服务端的信息都还在,体验虽然称不上完美,但已经相当不错了。
动态IP的原理就是登录服务器网关能够自己获取公网IP,用户登录器向服务端请求登录信息,登录服务器网关返回登录IP和端口,用户输入账号密码之后,请求登录网关,门打开之后进游戏。
动态IP模式存在的问题
这里我要介绍下家里的网络情况,家里是软路由连接光猫进行拨号的,家里的所有设备通过交换机接入软路由,这是很普遍的大众情况。
和GOM都有动态IP模式,但GOM的更加智能,GOM能够在有路由器的情况下自动解析路由器动态IP,这样用户能够得到正确的登录地址。而则没有这个功能,引擎开启动态IP后,外网卡在开门的界面,卡住之后我打开CMD,输入-ano之后发现登录器访问的登录地址是,这个是我这台虚拟主机的内网IP,我在公网IP的电脑上肯定是访问不了这个地址的。也就是说的动态IP功能是把系统第一张网卡的IP地址返回给用户登录,所以如果你的系统是直连光猫进行宽带拨号的,那这个的动态IP功能是能正常使用的,如果中间加了路由器,那这个功能就废了。
解决思路
1、既然是返回第一张网卡的IP地址,那我有没有可能创建一个虚拟网卡,然后把虚拟网卡的IP设置为公网IP,每次更新IP后通过脚本改变这个虚拟网卡的IP地址。这个想法在验证的时候发现没啥用,不管怎么设置虚拟网卡,他返回的都是内网的那个IP地址。
2、既然GOM引擎的功能能正常使用,要不换一个引擎。这个理论是可以实现的,但是工程量浩大,且繁杂,意义不是特别大,不适合我这种懒人。
3、HXM2(幻想引擎)兼任Hero,网关上也有动态动态域名模式。最终因为登录器问题以及乱七八糟的体验,没有折腾下去。
4、能否写一个程序,在每次IP变化之后,重新配置DBServer和LoginSrv的ip,然后关闭DBServer.exe和LoginSrv.exe进程,再重新启动这两个网关,这样主M2Server不受影响,也变相实现了效果!
通过重新配置服务端和启动、关闭服务端,最终验证第四个方法是可行的,我重新配置游戏控制器,搜索服务端文件,发现只修改了5处txt配置文档,分别是:
D:\Mirserver\Mir200\!Servertable.txt//发现Mir200这个配置信息其实没什么影响,直接写了127.0.0.1D:\Mirserver\DBServer\!serverinfo.txtD:\Mirserver\DBServer\!addrtable.txtD:\Mirserver\LoginSrv\!addrtable.txtD:\Mirserver\LoginSrv\!serveraddr.txt
那我只需要关闭引擎的动态IP功能,写一个程序就可以完成上述操作了。
程序实现
想到要做窗口程序,一开始准备回顾下大学学的C#,看了下VisualStudio的安装包大小,默默地关闭了下载页面,打开了隔壁的易语言编程工具。这里要喊一句:易语言YES!
对于有编程经验的人来说,易语言入门是真的是毫无门槛,丰富的支持库,只需要敲几行命令就能实现想要的功能,不要太方便!!
终于可以安心做一个懒人了,有事没事打开登录器上去刷刷怪,这里再夸一句GOM的假人真的做的太真了。。我这搭了好几个版本,登录器晚些放到博客来,有缘的喜欢传奇的可以下载一起玩~
发表评论