摘要: 问题概述 现在我们的引擎结构已经是比较完整的了,但是我们现在创建的游戏对象(房子)是通过在代码中“硬编码”创建的。 void GameScene::createTestObject(){ auto obj = std::make_unique<GameObject>("house"); obj->a 阅读全文
posted @ 2026-02-08 17:32 wenyiGamecpp 阅读(2) 评论(0) 推荐(0)
摘要: 问题概述 到目前为止,我们所有的测试都是直接写在GameApp中,这虽然很方便,但是随着项目的扩大,GameApp会变得很臃肿。 我们知道一个游戏包含多个状态: |—— 主菜单 |—— 游戏关卡 ​ |—— 第一关 ​ |—— 第二关 ​ |—— ... |—— 暂停界面 |—— 设置界面 |—— 阅读全文
posted @ 2026-02-04 21:40 wenyiGamecpp 阅读(4) 评论(0) 推荐(0)
摘要: 问题背景: 上一节中,我们构建了关键的两个类GameObject 和 Component;为我们的引擎奠定了面向组件编程的基石。GameObject本身是没有什么东西的,里面存放了存储“积木”(组件)的容器,而Component基类也未实现任何的功能。所以,接下来我们将创建两个 最核心的组件,赋予游 阅读全文
posted @ 2026-01-31 21:51 wenyiGamecpp 阅读(12) 评论(0) 推荐(0)
摘要: 如何优雅的在visual studio2022 做练习 问题概述 想学习一些C++的基础语法以及数据结构和算法,该如何使用visual studio创建项目呢?一个解决方案如何包含多个项目?build输出的文件杂乱找不到想要的文件?这是遇到的一些问题,这节课需要解决这些问题。 创建一个项目 这里创建 阅读全文
posted @ 2026-01-29 20:18 wenyiGamecpp 阅读(16) 评论(0) 推荐(0)
摘要: 问题概要 经过前面的学习,我们已经将引擎的底层基础设施搭建完毕。完成了游戏主框架的设计game_app;Time类实现帧率控制;资源管理模块ResourceManager类作为大哥,手下三个小弟TextureManager、AduioManager 、FontManager分别管理各自的资源;渲染器 阅读全文
posted @ 2026-01-28 21:16 wenyiGamecpp 阅读(5) 评论(0) 推荐(0)
摘要: 问题背景 现在我们已经可以渲染出画面了,截止目前,我们有Config类用于灵活的设置游戏参数解决硬编码带来的不便性,Time类控制游戏的帧率,ResourceManager资源管理类作为中转,让其中三个小弟TextureManager、AudioManager、FontManager分别管理资源,C 阅读全文
posted @ 2026-01-26 20:18 wenyiGamecpp 阅读(4) 评论(0) 推荐(0)
摘要: 问题背景: 随着引擎功能的完善,问题也凸显出来了:目前我们的许多核心参数,比如窗口大小、标题、目标帧率等,都是直接写在代码里的,这种硬编码的方式极大的限制了灵活性,我们想要修改某些参数都要修改代码然后重新编译。 为了解决这个问题,我们需要设计一个配置管理系统。创建一个Config类,负责从外部的co 阅读全文
posted @ 2026-01-25 10:36 wenyiGamecpp 阅读(3) 评论(0) 推荐(0)
摘要: 哪块不会学哪块!!! 76.c++如何处理optional数据(std::optional) 1.C++17在STL中引入了std::optional,就像std::variant一样,std::optional是一个“和类型(sum type)”,也就是说,std::optional类型的变量要么 阅读全文
posted @ 2026-01-25 10:28 wenyiGamecpp 阅读(11) 评论(0) 推荐(0)
摘要: 概述 之前完成了主循环、帧率控制以及资源管理模块,现在我们需要完成渲染工作,将游戏对象绘制到屏幕上。 这章需要理解 精灵(Sprite)-描述“画什么”,使用哪张纹理、纹理的哪一部分 相机(Camera)-玩家视窗,决定显示,负责坐标和视图转换 渲染器(Renderer)-封装底层绘制API,接收精 阅读全文
posted @ 2026-01-21 10:29 wenyiGamecpp 阅读(9) 评论(0) 推荐(0)
摘要: 资源管理模块的创建 需要解决的问题: 同一张图片或是音效可能会被多次使用,我们不希望每次都要从硬盘中载入,这会严重影响性能。 避免重复加载 手动管理加载到内存中的每一个资源(SDL_Texture,Mix_Chunk等)既繁琐又容易出错,容易造成内存泄漏,我们需要一个自动释放资源的系统。 自动化内存 阅读全文
posted @ 2026-01-18 21:41 wenyiGamecpp 阅读(5) 评论(0) 推荐(0)