当前位置: 首页 > 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.dtcms.com/a/348444.html

相关文章:

  • Redis如何高效安全的遍历所有key?
  • 音视频学习(五十五):H264中的profile和level
  • DAY 55 序列预测任务介绍
  • 基于深度学习的餐盘清洁状态分类
  • 【Protues仿真】基于AT89C52单片机的温湿度测量
  • Linux的线程概念与控制
  • 高并发内存池(1)-定长内存池
  • 阿里开源通义万相Wan2.2:视频生成技术的革命性突破
  • MR椎间盘和腰椎分割项目:基于深度学习的医学图像分析
  • Linux系统之Centos7安装cockpit图形管理界面
  • 项目学习总结(5)
  • python---构造函数、析构函数
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘gunicorn’问题
  • 【springboot 技术代码】集成mongodb 详细步骤
  • localhost和127.0.0.1的区别
  • 界面规范7-可左右拖动的分割条
  • MATLAB GUI 设计入门:用 Guide 工具快速搭建交互界面
  • React Hooks useEffect的使用
  • React 18+ 并发模式异常
  • Linux服务测试题(DNS,NFS,DHCP,HTTP)
  • pytorch线性回归(二)
  • ⭐CVPR2025 病理分析全能模型 CPath-Omni 横空出世
  • RAG智能问答为什么需要进行Rerank?
  • 春秋云镜 Flarum
  • UCIE Specification详解(二)
  • Linux学习-TCP网络协议
  • 基于springboot的高校后勤保修服务系统/基于android的高校后勤保修服务系统app
  • openFeign用的什么协议,dubbo用的什么协议
  • 【重学MySQL】八十七. 触发器管理全攻略:SHOW TRIGGERS与DROP TRIGGER实战详解
  • k8s下的网络通信之calico与调度