海盗王3.0客户端从32位升级64位之路
海盗王3.0原版的服务端之前升级成了64位,基本能无限使用内存,可以避免因为内存过大而闪退崩溃的问题,更是可以个gameserver开完全部地图。使用效果明显比32位的更加稳定可靠。
服务端改成功后,一直想将客户端也升级成64位,苦于没有足够的实力去实现,一直只是个梦想。
32位的客户端因为内存限制,但是资源又不断增加,很容易就跑满1.3G,会造成内存申请失败,然后就闪退崩溃,是个无解的问题。
后来看到有人成功将1.38的客户端升级成64位了,似乎看到了希望,于是就准备开始修改。
原版的3.0客户端是基于dx8的32位,因为dx8本身并不支持64位,因此只能升级到dx9,dx9原生支持64位。
开始请教了一下修改成功的大佬一些问题,然后进行慢慢修改。
一开始更换dx9时,源码直接报错3000多个,然后一个一个地改了。
中间遇到很多无法解决的问题,多次放弃,回头又拾起来,细想寻找解决方法。
从dx9接口,改到引擎代码,接着有改到客户端代码,再到改lua,改得整个人睡觉都恍惚发梦。很多解决方法还是梦中无意中想到的。
涉及的dx9知识,开始是一无所知,慢慢地一个一个去查资料,从接口数据类型,到着色器,到纹理,到字体,到模型数据,到渲染参数等,每一个都要去学习,才能知道怎么解决问题。
等学习完这一通后,已经对dx9也慢慢熟悉起来了。
等待到改完,最后0个错误,编译通过时,那是一种无法形容的成功愉悦。
能编译通过了,但是还是无法跑起来,有开始修改lua代码,更换64位lua库,顺带整合到客户端了,不带lua的dll了。
更换完lua后,加载模型又卡住了。是32位的模型数据,无法直接加载到64位中,需要进行结构体对位。结果又是一通折腾,把模型的数据结构又整了一通,终于解决。
终于可以进入游戏了,但是字体又显示成片的色块,场景物体全是白色,人物无法显示,又继续去折腾纹理、渲染方法等。
最后,人物终于出来了、场景物体也能显示了,但是还有特效、更换新64位音频库很多事情去做,还有很长的路。
在这个过程中,没有人能帮到自己,只有自己不停地去探索,用时间去慢慢学习,换取成功的结果。
当没人能帮的时候,只有靠自己,其他都是幻想。
全网最精简的64位3.0客户端 :
只有1个Game.exe,全部编译进程序了。