摘要: 蓝图和实体工厂 上节课我们完成了从Tiled解析出路径节点,并让敌人沿着规划的路径移动,但我们在创建敌人的时候是"手动创建测试实体",registry.create(); emplace<Transform/Velocity/Enemy/Sprite/Render...>(),这种方法虽然可以跑通, 阅读全文
posted @ 2026-04-01 19:43 wenyiGamecpp 阅读(4) 评论(0) 推荐(0)
摘要: 设定移动路径 前面我们完成了将关卡从Tiled载入到ECS世界,并完成了背景色,渲染顺序,gid翻转等细节,这节我们将完成敌人从开始点出发,沿着预设路径走到终点。我们需要实现路径点的定义、路径加载、敌人移动逻辑以及路径跟随系统的实现。 利用Tiled中点对象画出路径节点,并用属性把节点连成图 关卡加 阅读全文
posted @ 2026-03-31 11:07 wenyiGamecpp 阅读(3) 评论(0) 推荐(0)
摘要: 有必要写个周报,总结一下一周的进度。 这周比较繁忙,导师需要按装服务器,还需要做个映射,课题这边还需要补充大论文的内容,哎,想着加点机器学习相关的内容,但是处理一组数据就要近4个小时,真是累啊。目前还是在学习C++游戏开发,还抽空学了一些Tiled的关卡制作。就学到现在,这门语言吧,我觉得越学越不懂 阅读全文
posted @ 2026-03-30 13:47 wenyiGamecpp 阅读(4) 评论(0) 推荐(0)
摘要: ECS框架 前几章我们完成了“输入信号+事件总线+场景切换+资源系统”。使用传统的GameObject + Component(面向对象)写法无法支撑过多的游戏对象,这里我们将会引入ECS架构。 Entity(实体):只是一个“唯一标识符” Component(组件):纯粹的数据 System(系统 阅读全文
posted @ 2026-03-26 11:17 wenyiGamecpp 阅读(9) 评论(0) 推荐(0)
摘要: 引入哈希字符串 由于代码中存在大量的名字比如:UI的状态名normal/hover/pressed,音乐、音效ui_hover/battle_bgm,纹理/声音路径assets/textures/...、assets/audio/...等等,这些使用的都是std::string()来存、比较、查找, 阅读全文
posted @ 2026-03-24 19:12 wenyiGamecpp 阅读(4) 评论(0) 推荐(0)
摘要: 捕获与中断信号传递 现在我们首先要解决上一节的问题,就是防止信号的穿透。 当我们压入多个场景的时候,每个场景在init()都订阅了同一个动作;那么当你再次触发这个动作的时候,所有场景的回调都会触发(因为它们都连接在同一个信号上)。 我们希望输入信号只被当前场景处理,或者允许某个回调"捕获并中断"后续 阅读全文
posted @ 2026-03-23 20:42 wenyiGamecpp 阅读(7) 评论(0) 推荐(0)
摘要: 事件总线与场景切换 前面我们已经将输入模块InputManager做成了信号驱动,将对应的抽象动作的状态(pressed、hold、released)做成信号,在场景GameScene中注册响应的回调函数,输入模块在update的时候触发回调。 这节我们将完成事件总线dispatcher以及将场景S 阅读全文
posted @ 2026-03-21 10:47 wenyiGamecpp 阅读(12) 评论(0) 推荐(0)
摘要: 概述 之前游戏我们调用handleInput,这使得程序形成了每帧都会走一遍的轮询模式,这种方式不是我们想要的。现在我们可以修改我们的InputManager,把输入模块升级为“信号驱动”,由于我们的输入是抽象动作和按键的映射,所以对于某个动作,可以有四种状态(PRESSED、HOLD、RELEAS 阅读全文
posted @ 2026-03-18 20:52 wenyiGamecpp 阅读(10) 评论(0) 推荐(1)
摘要: EnTT信号系统 问题是如何产生的?我打死了一个敌人,可能会牵扯到很多东西,比如需要播放敌人的死亡动画,需要播放音效,需要更新得分,需要掉落道具,那么这么多事件难道都写在敌人击杀的那块代码中吗?这将会形成一个高度耦合的函数,这不是一种好的处理方法。 这里我们学习EnTT的信号/事件机制,用"发布事件 阅读全文
posted @ 2026-03-18 19:25 wenyiGamecpp 阅读(30) 评论(0) 推荐(1)
摘要: EnTT基础 目标: 了解三件套:entt::registry / entt::entity / component 学会用entt::view遍历"符合组件条件"的实体集合 了解entt::hashed_string(哈希字符串)的用途与常见问题 简单了解registry.ctx()是什么 设计思 阅读全文
posted @ 2026-03-16 21:32 wenyiGamecpp 阅读(28) 评论(0) 推荐(0)