caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Godot 源码分析(十六):`core/math/` A* 寻路模块
通用 vs 专用AStar3D处理任意图(手动连接),专攻规则网格(隐式邻居 + JPS 优化)pass 机制:O(1) 逻辑清空,避免每次寻路 O(n) 的状态重置二叉堆 + SortArray:open list 用堆维护,O(log n) 插入/弹出最小 f 值虚函数代价可被 GDScript 覆盖,无需 C++ 继承JPS 优化:通过跳跃扫描和强制邻居检测,将 open list 节点数减少 10-100 倍solid_mask 带边界:消除边界检查的条件分支,JPS 密集调用时显著加速。原创 2026-08-12 08:18:17 · 5 阅读 · 0 评论 -
Godot 源码分析(十五):`core/math/` 随机数模块 ── PCG 实现
Godot 的随机数模块以~100 行核心代码选择 PCG32:在质量(通过 BigCrush)、速度(LCG 级别)、代码量(50 行)间取得最佳平衡,远超传统 LCG 和 MT19937三层架构:PCG 核心 → RandomPCG 封装 → RandomNumberGenerator 脚本接口,职责清晰、性能无损LCG + 非线性输出:PCG 的核心创新——用 XSH RR 输出函数修复 LCG 的统计缺陷CLZ32 浮点优化:利用硬件前导零指令生成统计精确的均匀浮点分布,远超朴素除法。原创 2026-08-06 08:26:41 · 541 阅读 · 0 评论 -
# Godot 源码分析(十四):`core/math/` 几何工具模块
convex_hull.cpp](file:///d:/my2024/godot/godot/core/math/convex_hull.cpp) 实现的是,基于 Bullet 物理引擎的,由 Ole Kniemeyer 基于算法实现。注意:文件名容易误导。2D 凸包(Andrew 单调链)实际上是 [geometry_2d.h](file:///d:/my2024/godot/godot/core/math/geometry_2d.h) 中的内联静态方法。是3D 凸包实现。原创 2026-08-05 08:20:57 · 43 阅读 · 0 评论 -
Godot 源码分析(十三):`core/math/` 向量/矩阵/变换模块全景
本文分析了Godot引擎核心数学模块core/math/中的向量、矩阵和变换系统。该模块提供了2D/3D/4D向量(Vector2/3/4)、3×3旋转矩阵(Basis)、四元数(Quaternion)、2D/3D变换(Transform2D/3D)和4×4投影矩阵(Projection)等基础数学类型。 关键设计特点: 所有类型均为值类型的struct,使用union实现成员别名访问 标注[[nodiscard]]防止误用 关键运算使用constexpr和FORCE_INLINE优化性能 类型间存在层次关原创 2026-07-31 08:24:58 · 178 阅读 · 0 评论 -
Godot 源码分析(十二):`core/io/pck_packer.cpp` ── PCK 资源包打包器
本文分析了Godot引擎中PCK资源包打包器的实现原理。PCKPacker用于将游戏资源打包成.pck归档文件,主要作用包括减少文件数量、保护资源、支持加密和增量更新。文章详细介绍了PCKPacker的架构层次和工作流程,包括pck_start()初始化、add_file()添加文件、flush()写入目录表等核心方法,以及底层依赖的FileAccess、加密模块和校验机制。PCK文件格式包含文件头、数据区和目录表三部分,支持AES-256加密,其读取端由PackedData/FileAccessPack实原创 2026-07-30 08:22:59 · 81 阅读 · 0 评论 -
Godot 源码分析(十一):`core/io/resource_loader.h` & `resource_saver.h` ── 资源加载与保存系统全景
Godot 资源加载与保存系统摘要 ResourceLoader 和 ResourceSaver 是 Godot 引擎中负责资源管理的核心组件,采用插件化架构设计。ResourceLoader 实现"文件到内存"的转换,ResourceSaver 处理"内存到文件"的存储,两者通过 ResourceFormatLoader/ResourceFormatSaver 抽象基类支持扩展任意资源格式。 系统采用三层架构: 用户层通过简单 API 调用资源操作 中间层处理路径验证、缓存管理和加载器匹配 底层由具体格式原创 2026-07-29 08:53:06 · 95 阅读 · 0 评论 -
Godot 源码分析(十):Godot FileAccess 源码深度分析
FileAccess统一接口:通过抽象基类屏蔽平台差异,上层代码只需调用统一的 API协议化路径:通过res://user://等协议实现路径与物理位置的解耦工厂模式:静态工厂方法 + 函数指针数组实现灵活的平台适配装饰器模式:压缩、加密等功能通过包装底层实现,保持接口一致打包优先:运行时优先从打包文件读取,优化加载性能这种设计使得 Godot 能够在 Windows、Linux、macOS、Android、iOS、Web 等多种平台上提供一致的文件访问体验,同时支持压缩、加密、打包等高级功能。原创 2026-07-27 09:32:16 · 201 阅读 · 0 评论 -
Godot 源码分析(九):`core/variant/` ── Variant 变体类型系统全景
Godot Variant 类型系统解析 核心要点 设计目的: Variant 是 Godot 的核心动态类型系统,固定大小(24/40字节) 解决动态类型、统一接口、序列化、跨语言调用四大问题 内存布局: 采用 union + _mem 字节数组的混合存储 小类型直接嵌入,大类型通过指针+VariantPools管理 三种存储策略:直接存储、嵌入存储、指针存储 关键设计: 使用两套操作函数表(Validated/PTR)优化性能 大类型采用专用内存池分配 通过类型擦除实现动态类型支持 典型应用: GDSc原创 2026-07-22 08:21:37 · 408 阅读 · 0 评论 -
Godot 源码分析(八):`core/object/class_db` ── 类注册表全景
Godot 类注册系统 ClassDB 分析 ClassDB 是 Godot 引擎反射系统的核心组件,主要负责: 维护全局类注册表,存储所有类的元信息(方法、属性、信号等) 实现字符串到类成员的映射,支持动态语言特性 管理类继承关系和对象创建 关键设计特点: 使用 ClassInfo 结构存储类元数据,包括方法表、属性表、创建函数等 采用模板技术 register_class<T> 注册类信息 通过方法绑定 MethodBind 实现跨语言调用 使用递归读写锁保证线程安全 核心功能: 动态查询类信息(方法、原创 2026-07-20 08:37:11 · 470 阅读 · 0 评论 -
Godot 源码分析(七):`core/object/` ── Object 对象系统全景
Godot Object 系统核心解析 摘要(149字): Godot的Object类作为引擎核心,实现了自研的对象系统而非依赖C++原生机制。它通过ClassDB注册表解决跨语言反射,ObjectID体系管理对象生命周期,信号/观察者模式支持事件通信,并同时兼容GDScript/C#/GDExtension多脚本后端。关键设计包括:slot+validator双重校验的ObjectID防误用、15位AncestralClass位域快速类型判断、延迟创建的信号互斥锁、以及双脚本后端并存架构。这些机制共同支撑原创 2026-07-14 13:33:59 · 169 阅读 · 0 评论 -
Godot 源码分析(六):scene/ 节点层 ── 业务层调用全景
在 [开源游戏引擎源码_2.md](file:///d:/my2024/godot/godot/doc/开源游戏引擎源码_2.md) 里我们分析了 Vulkan 渲染后端,那条链路的终点是单例)的等 API。但如果你打开 Godot 编辑器拖一个到场景里,你写的代码并不会直接调用——你调用的是节点上的方法(set_mesh),节点再替你把命令翻译成对的调用。原创 2026-07-13 08:26:30 · 373 阅读 · 0 评论 -
glslang (GLSL → SPIR-V) 分析报告
glslang 是 Godot 渲染管线中着色器编译流水线的核心组件,承担着将高级着色器语言转换为硬件可执行格式的关键任务。原创 2026-07-08 09:09:09 · 205 阅读 · 0 评论 -
Godot 源码分析(五):3D 对象与贴图在 Godot 引擎中如何转化为 Vulkan 显示
前四篇我们分别看了 Godot 的一级目录结构、后端的 5 个核心文件、以及四层调用关系。本篇聚焦到一个更具体的工程问题:用户创建一个 3D 角色(MeshInstance3D + ArrayMesh + Material + Texture),Godot 引擎内部是如何把这些「资源对象」转换为 Vulkan 能理解的VkBufferVkImageVkSamplerVkPipeline,并最终显示在窗口上的?原创 2026-06-25 08:20:37 · 258 阅读 · 0 评论 -
Godot 源码分析(四):Vulkan 上一层的调用接口(RenderingServer / RenderingDevice / RendererRD)
本文分析了Godot引擎中Vulkan渲染接口的层次架构,从上至下分为四层:1)RenderingServer单例层提供场景、材质等高层API;2)RendererRD层实现具体场景渲染器;3)RenderingDevice层抽象平台无关的GPU操作;4)Vulkan驱动层对接原生API。这种分层设计实现了三大目标:跨平台兼容性(支持Vulkan/Metal/D3D12等)、上层业务稳定性(保持Godot3到4的接口兼容)、统一的资源管线和命令接口。文章通过调用关系图展示了各层职责划分,并详细说明了分层架构原创 2026-06-24 17:33:23 · 668 阅读 · 0 评论 -
Godot 源码分析(三):`drivers/vulkan` 接口函数与图形显示调用链
本文分析了Godot引擎Vulkan后端的核心实现,聚焦于drivers/vulkan目录下的5个关键文件。文章通过一个3D角色渲染的完整调用链,展示了从场景资源到最终屏幕显示的全过程:从MeshInstance3D节点开始,经过RenderingServer转换,到RenderingDevice的Vulkan命令录制,最终通过Vulkan接口提交到GPU并呈现到窗口。重点解析了两层分工:Context Driver负责Vulkan实例和设备管理,Device Driver则处理具体的图形资源创建和渲染命令原创 2026-06-24 13:20:13 · 358 阅读 · 0 评论 -
TestVulkan 三角形渲染实现说明(GLSL 实时编译为 SPIR-V)
前一份 聚焦「如何复刻 Godot 的 Vulkan 初始化流程」。本文档在此基础上,聚焦以下新增能力:目标读者:在本地 Godot 仓库的 工程上跟进代码、或希望在自己的 Win32 项目中以相同方式接入 glslang 的开发者。源码位置(相对仓库根):渲染三角形需要给 Vulkan 的 传入一段 SPIR-V 字节码。通常有三种做法:本 DEMO 选择第三种,其中核心好处是:GLSL 源码的语法错误会被 glslang 以同一份解析器报告给运行期 UI(通过 / ),不需要在两个工具间来回切换原创 2026-06-24 09:02:26 · 159 阅读 · 0 评论 -
TestVulkan DEMO 实现说明
TestVulkan DEMO 是一个最小化 Win32 窗口程序,用于在不依赖 Vulkan SDK 的情况下复现 Godot 引擎的 Vulkan 初始化流程,帮助快速诊断 Vulkan 初始化失败问题。程序通过动态加载 vulkan-1.dll 实现 Vulkan 功能调用,完整展示了从窗口创建、Vulkan 运行时加载、实例初始化到物理设备枚举的全过程。项目使用 Godot 自带的 Vulkan 头文件,不依赖系统安装的 Vulkan SDK,通过 MSBuild 构建。核心类 VulkanCont原创 2026-06-23 11:28:37 · 146 阅读 · 0 评论 -
Godot 源码分析(二):Vulkan 渲染后端支持全景
Godot 4.0 起把图形 API 从 OpenGL ES 3.0 升级为,并保留了对三个后端。在深入 Godot 源码之前,先把这四个 API 放在一起做一个系统对比,搞清楚"为什么 Vulkan 是第一选择",而不是其他三个。原创 2026-06-22 18:02:10 · 284 阅读 · 0 评论 -
Godot 4.x 源码一级目录结构深度解读
Godot 4.x 源码一级目录结构解析 Godot是当前最活跃的开源游戏引擎之一,其4.x版本采用了原创 2026-06-22 09:51:49 · 320 阅读 · 0 评论 -
Godot Engine采用分层架构设计
Godot引擎采用四层核心架构设计:1. 驱动与平台抽象层(/drivers/, /platform/)实现跨平台适配;2. 核心层(/core/)提供基础数据类型、内存管理和数学库;3. 服务器层(/servers/)通过单例模式管理渲染、物理等核心子系统,采用RID机制统一资源;4. 场景层(/scene/)构建节点-场景树体系。扩展模块包括编辑器(基于引擎UI开发)和可插拔的功能模块。架构特点包括:分层解耦设计、服务化子系统、跨平台支持,并通过Variant类型实现C++与脚本的桥梁。数据流遵循自顶向原创 2026-06-22 08:46:05 · 221 阅读 · 0 评论 -
Godot 引擎官方常见问题(FAQ)整理
GDScript 是 Godot 量身定制的内置脚本语言,语法风格接近 Python,上手门槛低。核心优势是和引擎深度集成、整体开发复杂度低,尤其适合原型迭代、项目 Alpha/Beta 阶段以及非 3A 类项目。官方建议新用户至少尝试三天,体验其开发效率。原创 2026-06-09 11:07:13 · 223 阅读 · 0 评论 -
Godot Engine 最新版官方文档(简体中文完整翻译 & 精简梳理)
本文档为Godot引擎最新版官方文档的简体中文完整翻译与精简梳理,涵盖从入门到进阶的全方位开发指南。主要内容包括:引擎功能总览与运行配置要求、基础入门教程(2D/3D游戏开发全流程)、编辑器详解与使用技巧、2D/3D开发模块(含物理/动画/渲染等核心技术)、资源管线管理、多平台导出方案、性能优化策略,以及脚本编程(GDScript/C#/C++)、UI系统、XR开发等专项技术。文档特别包含版本迁移指南、常见问题排错方案,并附完整的类API参考手册,是Godot开发者从学习到实战的全方位权威参考资料。原创 2026-06-09 08:36:02 · 688 阅读 · 0 评论 -
2D 与 3D 跨平台游戏引擎
Godot Engine是一款免费开源的跨平台游戏引擎,支持2D和3D游戏开发,采用MIT许可证。它提供完整的开发工具链,支持一键导出到多个平台(PC、移动、Web和主机)。Godot由社区驱动开发,前身是Juan Linietsky和Ariel Manzur的内部引擎,2014年开源。用户可通过官网获取二进制版本或从源码编译,官方文档和演示项目帮助学习使用。项目鼓励社区贡献,提供多种沟通渠道和支持资源。Godot以开放、自由和社区协作的特点,成为独立游戏开发者的热门选择。原创 2026-06-08 18:22:38 · 239 阅读 · 0 评论 -
Godot 4.7 内嵌 C# 模块切换到 .NET 9.0 编译指南
这篇文章介绍了如何将Godot 4.7引擎的C#模块从默认的.NET 8.0切换到.NET 9.0进行编译。主要内容包括: 前提条件:需要Windows系统、Godot源码、VS2022、.NET SDK 9.0等环境。 关键修改点: 修改4个C#项目文件(GodotSharp等)的TargetFramework为net9.0 调整Godot.SourceGenerators.Internal项目,改为直接引用本地.NET 9.0 SDK的Roslyn DLL 修改build_assemblies.py脚本原创 2026-06-08 17:58:39 · 522 阅读 · 0 评论
分享