当前位置: 首页 > news >正文

海盗王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,全部编译进程序了。

在这里插入图片描述

http://www.xdnf.cn/news/1356211.html

相关文章:

  • 操作系统文件系统
  • [e3nn] 等变神经网络 | 线性层o3.Linear | 非线性nn.Gate
  • Excel 转化成JSON
  • GPT 模型详解:从原理到应用
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2024年12月22日真题
  • 以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测
  • 对象作为HashMap的key的注意事项
  • 30分钟通关二分查找:C语言实现+LeetCode真题
  • 机器学习算法-朴素贝叶斯
  • 优化OpenHarmony中lspci命令实现直接获取设备具体型号
  • 机械学习综合练习项目
  • 基于SpringBoot的新能源汽车租赁管理系统【2026最新】
  • Linux 系统管理核心概念与常用命令速查
  • 春秋云镜 Hospital
  • 【Qt开发】常用控件(六)
  • 一个简洁的 C++ 日志模块实现
  • 【数位DP】D. From 1 to Infinity
  • 金山办公的服务端开发工程师-25届春招笔试编程题
  • Python训练营打卡 DAY 45 Tensorboard使用介绍
  • 基于电磁频谱地图的辐射源定位算法复现
  • 基于TimeMixer现有脚本扩展的思路分析
  • 基础IO
  • CryptSIPVerifyIndirectData函数分析
  • 刷题日记0823
  • 环境 (shell) 变量
  • Nacos-12--扩展:@RefreshScope和@ConfigurationProperties实现热更新的原理
  • Kubernetes笔记整合-1
  • 一种通过模板输出Docx的方法
  • LeakyReLU和ReLU的区别
  • 探索 JUC:Java 并发编程的神奇世界