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

TEnGinE Version-0.1 Build-4 更新日志

发布日期 : 2022-04-29 23:48
更新类型: Bug修复与代码质量优化


概述

Build-4 是在 Build-3 基础上的维护性更新,主要聚焦于修复关键 Bug 和提升代码健壮性。本次更新解决了单例模式实现错误、随机数生成缺陷以及头文件管理问题,为引擎后续开发奠定了更坚实的基础。


详细变更

1. UniqueID 系统修复 (Tanxl_UniqueID.h)

问题修复:

问题类型 描述 修复方案
严重Bug GetIdGenerator() 返回局部变量引用 改为 static UniqueIdBase UNIBase; 静态局部变量
类型警告 srand(time(0)) 类型不匹配 改为 srand(static_cast<unsigned int>(time(0)))
逻辑错误 循环产生15位ID但索引从1开始 改为 for (int i = 0; i < 15; i++)
格式错误 ID开头会产生多余分隔符 "-" 添加条件 && i != 0
未定义行为 构造函数/析构函数无实现体 添加空实现 {}
赋值错误 赋值操作符未返回对象 改为 return *this;

修复前代码:

cpp

复制代码
static UniqueIdBase& GetIdGenerator()
{
    UniqueIdBase UNIBase;  // 局部变量,函数返回后失效
    return UNIBase;
}
srand(time(0));
for (int i = 1; i <= 15; i++)  // 索引从1开始 会导致生成的字符少一位
    if (i % 5 == 0) Data += "-";

修复后代码:

cpp

复制代码
static UniqueIdBase& GetIdGenerator()
{
    static UniqueIdBase UNIBase;  // 静态局部变量,生命周期正确
    return UNIBase;
}
srand(static_cast<unsigned int>(time(0)));
for (int i = 0; i < 15; i++)
    if (i % 5 == 0 && i != 0) Data += "-";  // 去掉开头分隔符

2. 头文件管理系统化改进

Utils.h - 添加包含保护

为所有外部库头文件添加 #ifndef/#define 保护,防止重复包含:

cpp

复制代码
#ifndef GL_GLEW_H
#define GL_GLEW_H
#include <GL\glew.h>
#endif

#ifndef GLFW_GLFW3_H
#define GLFW_GLFW3_H
#include <GLFW\glfw3.h>
#endif
// ... 其他头文件同理
Utils.cpp - 清理冗余包含

变更前 : 直接包含所有系统头文件(与 Utils.h 重复)
变更后 : 仅包含 Utils.h,依赖其传递包含

cpp

复制代码
// Build-3
#include <GL\glew.h>
#include <GLFW\glfw3.h>
#include <SOIL2\soil2.h>
// ... 多个重复包含
#include "Utils.h"

// Build-4
#include "Utils.h"

3. OpenGL 渲染模块改进 (Tanxl_OpenGL_Draw.h)

添加头文件包含保护

cpp

复制代码
#ifndef TANXL_INSERTACTION_H
#define TANXL_INSERTACTION_H
#include "Tanxl_InsertAction.h"
#endif
取消全局 using namespace std

变更 : 移除 using namespace std;,改为显式 std:: 前缀

cpp

复制代码
// Build-3
using namespace std;
string Tag = "State[" + to_string(i) + "]";
cout << "LEFT_PUSHED! ..." << endl;

// Build-4
std::string Tag = "State[" + std::to_string(i) + "]";
std::cout << "LEFT_PUSHED! ..." << std::endl;

优势:

  • 避免命名空间污染
  • 提高代码可读性和可维护性
  • 符合大型项目编码规范

4. 主程序调整 (main.cpp)

变更项 Build-3 Build-4
新增包含 - #include "Tanxl_UniqueID.h"
网格大小 5 × 5 3 × 3

技术债务清理

本次更新解决了以下技术债务:

  1. 单例模式正确性 - 修复了可能导致悬垂引用的严重问题
  2. 随机数生成器 - 确保每次调用 Generate() 产生不同随机种子
  3. 跨平台兼容性 - 类型转换更严格,提升可移植性
  4. 编译效率 - 减少头文件重复解析

文件变更清单

文件 变更说明
Tanxl_UniqueID.h 单例实现、随机数、ID格式
Utils.h 添加头文件包含保护
Utils.cpp 移除重复包含
Tanxl_OpenGL_Draw.h 添加保护、规范命名空间
main.cpp 添加头文件、调整参数

Wild_Chicken_Programing /// TANXL 2026/03/25

相关推荐
Csvn5 小时前
框架性能优化
前端
回眸&啤酒鸭6 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户69371750013847 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员7 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子7 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端
IT_陈寒7 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
guslegend8 小时前
脚手架原理与本地调试:从 bin 软链接到 npm link
前端·npm·node.js·脚手架·前端工程化
小宋10218 小时前
A2UI从零实战:Agent安全生成交互界面与事件回传
javascript·人工智能·安全·交互
大包子9 小时前
structuredClone vs lodash.cloneDeep:核心差异与选型指南
javascript·vue.js
海码事务所9 小时前
Google Play 新个人开发者账号上架指南:12 人连续 14 天封闭测试怎么做?
前端