Godot 学习传奇游戏开发日志 - 开发日志,Godot, GDScript, zircon mir3, 游戏移植, ZL资源解析, NPC动画, 客户端资源复用 - 很久之前就了解到Godot,因为前阵子研究Zircon mir3的代码所以心血来潮...

您当前正在浏览的是本站SEO版网页

请点击确认

马上提升浏览体验

Godot 学习传奇游戏开发日志

游戏 GODOT ZIRCON 阅读:23
11/15/2025 10:55:53 PM

很久之前就了解到Godot,因为前阵子研究Zircon mir3的代码所以心血来潮...

关键字:Godot, GDScript, zircon mir3, 游戏移植, ZL资源解析, NPC动画, 客户端资源复用

Godot移植Zircon mir3开发日志

项目分析

项目说明

市场上传奇的引擎已经很成熟,本文章只是个人对Godot的熟悉了解为出发点,对于希望往传奇事业发展的朋友并不推荐。

新手上路

初识Godot与GDScript

两天时间熟悉Godot基础界面,轻量级体验良好。GDScript语法接近Python,学习曲线平缓,已掌握节点系统、信号机制等核心概念,为后续开发奠基。

尝试了GDScript 和 C# 两个版本的开发环境 编译速度和本着以学习为主的原因选择了 GDScript 至于性能,官方文档有提到过除了 C++ ,GDScript 和 C# 的性能主要差别在内存的消耗上,因为 GDScript 是手动回收内存,而 C# 是自动回收

ZL资源解压技术攻关

资源识别首日即遇阻。PackedByteArray.decompress方法参数理解偏差,多次尝试无果。Godot论坛发帖后迅速获解,需明确指定算法类型与缓冲区大小,问题迎刃而解。深刻体会到活跃社区的价值。

ZL资源、WZL资源的解析源码网络上都能找到

NPC动画资源成功加载

突破解压后,顺利读取客户端原始ZL动画包。通过自定义导入插件直接解析资源内的帧数据并构建Sprite2D动画,首个NPC已能播放待机/互动动画,标志移植进入实质阶段。

补充

之后发现热血传奇的WZL素材有阴影,效果看着更好,于是又花了些时间实现了WZL素材的解析。 虽然浪费了点时间,但没事主打一个折腾 😅

Area2D 初遇碰撞问题

NPC资源载入后需要实现鼠标交互,查阅官方文档发现 Area2D 很适合

类:Area2D

继承:CollisionObject2D < Node2D < CanvasItem < Node < Object 派生:NpcObject

2D 空间中的一个区域,能够检测到其他 CollisionObject2D 的进入或退出。

CollisionObject2D 能够容纳任意数量的 Shape2D 用作碰撞形状。每个形状必须分配给一个形状所有者

图片透明区域点击问题

因为WZL有阴影所以点击NPC区域的一些透明区域也会触发事件(ZL去掉了阴影),这里用了点击检测是否为透明区域的逻辑解决了问题

PCK包的尝试

考虑了从零开始整理素材的计划,首页要验证的是技术是否可行,查阅了资料发现Godot可以导出资源为PCK包。因为是自产自销,所以代码很容易就走通了。 不过因为没有太多时间去整理素材,所以技术先搁置着,用loadWZL的方式先把基础的一些功能实现了:blush:

最后

路远且艰,工作已经很多代码要敲了,兴趣就看心情吧 😎