【V0.1B5】从零开始的2D游戏引擎开发之路

更新类型: 代码清理与构建系统优化


概述

Build-5 是继 Build-4 之后的一次精细化维护更新,主要聚焦于代码减负构建系统优化。本次更新移除了尚未使用的功能代码,简化了头文件包含结构,并解决了调试符号文件问题,使代码更加精简、编译更高效。


详细变更

1. Utils 工具模块精简

移除未使用的纹理加载功能:

移除项 移除原因
loadTexture() 函数 当前渲染仅支持纯色网格,纹理功能尚未集成
loadCubeMap() 函数 立方体贴图在当前2D引擎中无使用场景

影响分析:

  • 代码减负: 减少约35行冗余代码
  • 编译加速 : 减少 SOIL2 库的链接依赖
  • 清晰度提升: 类声明更专注于当前实际使用的功能

2. 头文件包含保护重构

移除冗余的外部包含保护

四个核心类文件移除了外层 #ifndef/#define 保护:

文件 变化说明
Tanxl_DataBase.h 简化保护层次
Tanxl_GameState.h 简化保护层次
Tanxl_GameEvent.h 简化保护层次
Tanxl_GameState.h 移除结束标记
增强的包含保护

Tanxl_OpenGL_Draw.h 添加更严格的包含保护:

Tanxl_OpenGL_Draw.hL5-L19

复制代码
#ifndef TANXL_DATABASE_H
#define TANXL_DATABASE_H
#include "Tanxl_DataBase.h"
#endif

#ifndef TANXL_GAMESTATE_H
#define TANXL_GAMESTATE_H
#include "Tanxl_GameState.h"
#endif

设计理念转变:

  • 从"每个文件独立保护"转向"依赖文件自保护"
  • 减少编译预处理开销
  • 遵循现代C++项目的包含最佳实践

3. 构建系统修复

修复 SOIL2 库 PDB 文件缺失问题:

问题描述:

  • 在 Debug 构建配置下,SOIL2 库缺少调试符号文件(.pdb)
  • 导致调试时无法跟踪 SOIL2 库内部调用栈
  • 影响开发者的调试体验

解决方案:

  • 调整项目配置,确保正确链接 SOIL2 的调试版本
  • 验证第三方库的符号文件完整性
  • 优化构建过程中的依赖解析

技术影响:

  • 调试时能正确显示 SOIL2 库调用栈
  • 内存调试工具能跟踪纹理加载过程
  • 异常发生时能精确定位到库内部错误

4. 代码质量提升

统一代码风格
  • 保持所有输出使用 std:: 前缀(Build-4 引入的标准)
  • 延续头文件包含保护的一致性改进
减少编译警告
  • 移除未使用的函数声明,消除编译器警告
  • 简化包含结构,减少重复包含警告

版本对比总结

复制代码
Build-4 (2022-04-29) → Build-5 (2022-05-01)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🗑️  代码清理:        移除35行未使用代码
🛡️  包含优化:        重构4个核心头文件保护
🔧  构建修复:        解决SOIL2 PDB问题  
📦  依赖精简:        减少不必要的库链接
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

架构演进分析

设计哲学变化

  1. 实用主义导向: 移除"未来可能用到"的功能,专注当前需求
  2. 简化优先: 减少抽象层次,使代码更直观易懂
  3. 构建友好: 优化编译配置,提升开发效率

技术债务管理

  • 清理冗余: 移除纹理加载等超前功能
  • 标准化: 统一头文件保护模式
  • 可维护性: 简化复杂嵌套的包含关系

文件变更清单

文件 变更类型 变更说明
Utils.h 🔴 功能移除 移除 loadTextureloadCubeMap 声明
Utils.cpp 🔴 功能移除 移除 loadTextureloadCubeMap 实现
Tanxl_DataBase.h 🟡 结构优化 移除外层 #ifndef TANXL_DATA_BASE 保护
Tanxl_GameState.h 🟡 结构优化 移除外层 #ifndef GAME_STATE_BASE 保护
Tanxl_GameEvent.h 🟡 结构优化 移除外层 #ifndef GAME_EVENT_BASE 保护
Tanxl_OpenGL_Draw.h 🟢 增强 添加对数据库和状态类的包含保护
TANXL_ENGINE.vcxproj 🔧 配置修复 修复 SOIL2 库 PDB 文件配置

Wild_Chicken_Programing /// TANXL 2026/04/01

相关推荐
MiNG MENS27 分钟前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
pengyi87101530 分钟前
动态IP池快速更换实操方案,5分钟完成IP替换
服务器·网络·tcp/ip
2601_9498146931 分钟前
Spring Boot中的404错误:原因、影响及处理策略
java·spring boot·后端
herinspace31 分钟前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
不做无法实现的梦~1 小时前
Linux 上使用 CLion 开发嵌入式,并用 Codex CLI
linux·运维·服务器
小雅痞1 小时前
[Java][Leetcode simple] 28. 找出字符串中第一个匹配项的下标
java·开发语言·leetcode
likerhood1 小时前
java中的不可变类(Immutable)
java·开发语言
步辞1 小时前
Go语言怎么用channel做信号通知_Go语言channel信号模式教程【完整】
jvm·数据库·python
被摘下的星星1 小时前
以太网技术
服务器·网络
weixin_424999362 小时前
mysql行级锁失效的原因排查_检查查询条件与执行计划
jvm·数据库·python