- 博客(160)
- 收藏
- 关注
原创 秋招笔记-10.7
渲染时,根据自上次物理更新后的时间进度(累积器中的剩余时间与固定时间步长的比值),在上一物理状态和当前物理状态之间进行插值计算,从而获得平滑的中间状态进行渲染,有效避免抖动。简单地说,超采样就是先用超出需求分辨率的采样频率进行采样,然后再进行下采样得到结果,这样可以保证保留图像细节的同时得到需要的结果,而多重采样是针对图像边缘部分(可能产生锯齿的地方)进行多重采样,实现了性能和图像质量的平衡。,即在原始二进制位的高位全部填充原数的符号位(正数补0,负数补1),以确保扩展后的数值保持不变。
2025-10-28 21:20:04
584
原创 秋招笔记-8.25
将整个导航网格按固定大小的瓦片(tile)进行空间分区,每个瓦片维护独立的路径缓存,通过玩家位置动态计算当前瓦片坐标,只加载玩家周围相关瓦片的缓存数据到内存中,使用LRU策略管理内存中的瓦片数量,当玩家移动到新区域时异步预加载邻近瓦片,跨瓦片路径通过瓦片级寻路算法连接多个瓦片的局部缓存,每个瓦片的缓存数据以独立文件形式存储在磁盘上,实现大规模地图的高效内存管理和快速路径查找。容器可以包含多个效果,如伤害、治疗、状态效果等,技能可以根据触发条件动态应用不同的效果组合,提高了技能系统的模块化和可重用性。
2025-10-07 11:52:39
431
原创 秋招笔记-9.1
Oodle是RAD Game Tools开发的高性能数据压缩库,UE4.25+默认集成,提供比传统算法更高的压缩率和更快的解压速度,主要用于游戏Pak包、纹理、音频等资产的压缩,支持多种算法(Kraken、Leviathan等)可根据需求平衡速度与压缩率,利用现代CPU多核和SIMD优化实现并行解压,显著减少游戏安装包大小、下载时间和加载时间,是现代游戏引擎提升性能和用户体验的关键技术。对于大容器,从前往后删除会导致大量元素移动操作,性能极差,而从后往前删除或直接使用clear()函数是最高效的选择。
2025-10-07 11:52:14
867
原创 秋招笔记-9.25
并通过该ID从一段连续的内存(如常量缓冲区或存储缓冲区)中获取各自独有的变换矩阵(位置、旋转、缩放)以及其他自定义属性(如颜色、UV偏移)。为保护硬件不被烧毁,手机系统会在芯片温度过高时,强制降低GPU和CPU的运行频率。当运行大型游戏或进行复杂后处理时,GPU需要频繁地与主存交换大量数据(如纹理、顶点信息),这种巨大的数据流量会迅速推高功耗,直接导致。(如降低Bloom的强度与迭代次数,或使用更高效的抗锯齿方案如FXAA替代TAA)。假如手机上进行大量的渲染后处理,手机是会卡顿还是发烫?
2025-10-07 11:51:46
273
原创 秋招笔记-9.24
而 ASTC 是最先进和灵活的格式,支持从 4x4 到 12x12 多种块尺寸(对应压缩率从 8bpp 到低于 1bpp),同时完美支持 RGBA 和 HDR,提供最佳的压缩质量与灵活性平衡,但其需要 OpenGL ES 3.1+ 的硬件支持(常见于较新的 iOS 和 Android 设备)。Canvas 的重建(Rebuild)是 Unity UGUI 系统的核心更新机制,当 Canvas 下的 UI 元素属性(如位置、尺寸、文本内容、图片精灵、颜色或激活状态)发生变化时,该元素会被标记为“脏”,。
2025-09-24 11:38:58
1171
原创 秋招笔记-也许是最后的笔记
(简化开发流程,减少手动编码错误,同时提供强类型约束和编译时检查)。这些特性使其尤其适用于高性能通信、微服务架构和大规模分布式系统等场景。如何实现的异步消息处理?客户端使用非阻塞Socket配合消息队列(sendQueue),在Unity的Update循环中异步处理收发和消息分发;服务器端使用SocketAsyncEventArgs实现异步监听和数据收发,并启动8个工作线程池来处理消息队列;
2025-09-03 12:30:35
902
1
原创 秋招笔记-8.29
我看到你在项目中实现了混合A优化,能详细说说为什么选择这种策略吗?如果让你重新设计,你会怎么改进?A算法在大规模地图下复杂度线性增长,开放队列节点数量激增导致性能瓶颈,因此需要优化策略来减少搜索空间。双向A通过从起点和终点同时搜索,将搜索复杂度从O(b^d)降低到O(b^(d/2)),大幅减少需要遍历的节点数量;分层A则通过构建不同精度的导航网格层次,在高层次快速找到粗略路径,再在低层次精细化,避免在细节层面进行大量搜索。双向A在什么情况下会失效?你遇到过这种情况吗?怎么解决的?
2025-09-01 13:57:25
833
原创 秋招笔记-8.31
TArray是虚幻引擎中的动态数组容器,底层采用连续内存存储,维护Data指针、Count(元素数量)和Max(容量)三个核心成员,支持O(1)随机访问和动态扩容,具有类似std::vector的特性但集成了引擎的分配器和序列化系统,还提供排序、堆化、查找等高级功能,其中Slack(Max-Count的差值)是其内存优化机制,通过预留空间避免频繁重新分配来提升性能。我们先再整体回顾下昨天学习的虚幻引擎GamePlay,网络,动画,UI相关的内容,然后再看看项目里哪些可以提问的内容。
2025-08-31 23:01:19
834
原创 秋招笔记-8.30
今天不看那些复杂的八股,我们专注于虚幻引擎的功能、特性。之前我们已经大体上看完了虚幻引擎的GamePlay部分的模块,今天我们来专注于动画部分,UI部分,网络部分以及虚幻引擎有关C++的,或者说有关代码的部分。
2025-08-31 00:34:17
851
原创 秋招笔记-8.28
什么是零拷贝?零拷贝(Zero-Copy)是一种优化技术,指在数据传输过程中避免不必要的数据拷贝操作,直接在内存中移动数据指针或引用,而不实际复制数据内容。C++的四种类型转换?reinterpret_cast是最强大的类型转换,允许任何指针类型间转换、整数和指针转换、函数指针转换等,但不进行任何安全检查,是最不安全的转换方式;static_cast支持基本类型转换、安全的向上转换(子类转父类),不进行运行时类型检查,但不能进行向下转换;
2025-08-28 23:32:28
695
原创 秋招笔记-8.21
如何理解虚幻引擎中的living code?“Living Code”通常指 Live Coding 实时编译/热更新:在编辑器或游戏运行(含PIE)时,对改动过的C++做增量编译并以补丁DLL热插入当前进程,使调用跳转到新实现,从而无需重启即可秒级迭代。如何理解虚幻架构?“Unreal Architecture(虚幻架构)”概念概述了引擎的核心组成与运行模型:以反射与GC驱动的UObject系统为基石,模块与插件化加载提供扩展性;关卡与World承载场景,Actor/Component组成游戏对象层次;游
2025-08-22 00:39:52
1223
原创 秋招笔记-8.19
太久没啥算法题,我也不图刷新题了,就刷一些基本的基础题,至少面试的手撕得过得去的那种。就先从hot100开始吧,预计的顺序是hot100到代码随想录到剑指offer最后再到灵茶山题单。没想到我第一个忘记了怎么写的题居然是这个题...因为是hot100这种做了很多遍的题目,上来的题目又比较简单,所以我加加速,第一天小做个二十题吧。
2025-08-20 00:50:41
1056
原创 秋招笔记-8.12
我决定从今天开始,在每天的学习内容中加入算法的内容,大致分布时间的话,假设我一天可以学习八个小时,那算法两个小时,八股三个小时,项目三个小时这样的分布差不多吧。之所以还是需要做做笔试一是为了应对面试时一些基本的可能需要写的东西,二是太久没写了感觉算法思想这一块有点遗失了啊。
2025-08-12 22:41:09
1043
原创 秋招笔记-8.9
这个是九号写的内容,当时急着面试就忘发了。如何优化A星算法?A星算法的优化老生常谈,哪怕是之前的笔记中我也说过一两次了,我们这里再系统性地梳理一下。要优化A星算法首先要明白A星算法由哪些部分组成:首先对输入参数进行校验和初始化,然后清空节点池和(优先队列),将起点节点加入open list,并初始化在主循环中,每次从open list中取出总代价最小的节点(即当前最有希望到达终点的节点),如果该节点就是终点,则寻路结束;否则。
2025-08-12 13:12:14
1019
原创 秋招笔记-8.7
简单来说,UWorld是"游戏世界的管理者",关卡是"具体的游戏区域",项目是"包含多个世界的容器"。主要的作用在于避免重复处理,大幅提升加载速度。主要包括:Level Blueprint(关卡蓝图,控制关卡级别的逻辑)、Class Blueprint(类蓝图,创建可重用的游戏对象)、Function Library(函数库,封装可重用的函数)、Interface(接口蓝图,定义通用接口)、Widget Blueprint(UI控件蓝图)、Animation Blueprint(动画蓝图,控制角色动画)。
2025-08-07 23:19:01
662
原创 秋招笔记-8.3
我决定从今天开始每天写一篇笔记,记录自己的秋招状况,以及学习到的相关知识,这个阶段也都是回顾整理性质的了,也算是安抚一下自己焦虑的心情吧。这里其实主要涉及的问题就是一个有符号数和无符号数计算的问题。当有符号数与无符号数混合运算时,有符号数会隐式转换为无符号数。所以在示例中对于 ,其补码表示(假设 32 位系统)为 (即 )。这里主要涉及的知识点就是C++中各个运算符的优先级:大体上来说,C++中位运算符(&,^,|)的优先级低于关系运算符(==,>,<等)和算术运算符(加减乘除)而高于逻辑运算符
2025-08-03 21:21:50
830
1
原创 浅谈——C++和C#差异
虽然这个话题看着似乎有些关公战秦琼的味道,但是作为游戏开发者,C++和C#一定是绕不开的两门语言。不过虽然说是比较二者差异,因为我学习的过程主要是先学C++,所以我先基于C++的认知,再来聊聊C#之中的不同。(为什么会想到写这个帖子是因为我发现老是记混二者名字相同但是底层完全不同的概念,只能说很烦)讨论差异之前,我们先来聊聊大体上二者的相似之处。二者都是编译执行的强类型语言,都是基于OOP思想,都支持泛型。我们首先来聊第一个不同的点——C++的指针。
2025-07-22 17:20:09
3372
2
原创 浅谈——游戏中的各种配置格式
视频中也说了,首先本来游戏的数据就有动态和静态之分,对于静态数据来说,我们只在游戏运行时加载进内存,然后全程只可读不可写,这样避免了频繁的IO操作,也免去了数据库的连接的开销;数据库适合处理频繁更改的动态数据,用于处理多读少写的内容会有浪费。但凡稍微接触过真正游戏开发的人应该都知道,首先游戏中相关的数据其实不是由程序来定的而是策划来填,程序要做的就是提供工具;其次是后续游戏的更新,如果不把数据单独拎出来而是写在代码中,那么每一次更新数据都必须是全量更新(所有代码重新编译),效率非常低下。
2025-07-22 13:38:22
900
原创 Unreal ARPG笔记
今天我们来拆解一个具体的基于UE5实现的ARPG Demo的内容来了解一个ARPG具体实现需要的内容。接下来我们来一个部分一个部分地拆解,因为这似乎是我的第一个Unreal引擎实现的Demo,所以我会添加很多UE相关的内容以及和Unity的对比。
2025-07-21 22:31:51
1341
原创 Unity Demo——3D平台跳跃游戏笔记
定义了一个带有Player参数的UnityEvent,方便在玩家相关的事件(如受伤、死亡、复活等)中传递玩家对象本身,实现更灵活的事件响应。敌人相关的所有事件,包括受伤、死亡、复活、发现玩家、玩家逃脱、接触玩家等。每个事件都可以在Inspector中绑定多个响应函数,实现灵活的事件驱动。定义了实体通用事件,适用于所有继承自Entity的对象,便于统一管理和扩展。// ... 其他标签这段代码定义了一个静态类GameTags,集中管理了项目中所有用到的Tag字符串常量。
2025-07-11 14:22:47
1322
原创 Unity Asset Package——Julhiecio TPS Controller详解
支持瞄具、消音器、握把等配件的安装与拆卸,配件影响武器属性。// 修改瞄准FOV、精准度等属性= null)安装配件时激活配件物体,并修改武器属性。拆卸时则隐藏配件并恢复属性。AI行为树通常由一组节点(Node)组成,每个节点代表一个决策或动作。节点可以是选择节点(Selector)、顺序节点(Sequence)、条件节点(Condition)、动作节点(Action)等。行为树的根节点负责整体决策,子节点负责具体行为。if (!
2025-07-10 16:30:44
844
原创 Unity插件——ABC详解
ABC是啥?显然不是什么出生在美国的中国人,而是:Ability & Combat ToolkitAbility & Combat Toolkit(简称 ACT 或 ABC)是一款专为 设计的,旨在帮助开发者快速构建复杂、动态的战斗机制和技能效果,无需从零编写底层代码。今天我们就来学习这个插件的内容,了解这个插件是如何实现的战斗系统和技能框架。我们根据代码的结构把这个插件分成这些系统:🔥 核心层 (Core Layer)├── 能力系统 ← 战斗的核心├── 实体管理 ← 对象的基础。
2025-07-10 14:00:32
1347
原创 Unreal引擎——动画系统详解-其二
我们继续之前的内容,这是整个动画系统大致的分类:我们从动画图运行时部分开始:AnimGraphRuntime是虚幻引擎动画系统的运行时执行层,负责在游戏运行时处理所有动画节点的计算和姿势生成。动画图运行时(AnimGraph Runtime)本质上是虚幻引擎动画系统的核心执行引擎和数据流协调器。它由三大核心组件构成:动画节点系统(包括序列播放器、混合空间播放器、各种混合节点和修改器节点,这些节点不是动画资源的简单实例,而是具备运行时逻辑的智能控制器,负责引用动画资源并将其转换为可执行的姿态数据流)、骨骼控制
2025-07-09 22:51:25
1238
原创 Unity Demo-3DFarm详解-其二
角色与玩家互动系统是游戏中连接玩家输入与游戏世界的核心机制,它允许玩家通过点击、移动等操作与游戏中的各种对象(如NPC、物品、环境元素)进行交互,实现诸如对话、采集、使用物品、战斗等核心游戏玩法。
2025-07-09 20:02:23
1085
原创 Unity Demo-3DFarm详解-其一
ConstructionData 定义了建筑的基本属性(如预制体、耐久度等),而 Construction 实现了建筑的行为(如建造、摧毁等)。/// 建筑数据文件// 构建建筑时生成的预制体[Header("引用数据")]// 可获取的物品数据[Header("属性")]// 耐久类型// 耐久度// 其他代码.../// 建筑是可以由玩家放置在地图上的对象(通过制作或使用物品)// 建筑的数据// 是否通过制作或加载生成// 当建造完成时调用if (data!
2025-07-09 16:49:29
1425
原创 Unity-MMORPG内容笔记-其三
定义消息结构 :使用 Protocol Buffers 定义竞技场相关的消息,如项目中的 message.proto 包含:- ArenaChallengeRequest (挑战请求)- ArenaChallengeResponse (挑战响应)- ArenaReadyRequest (准备请求)- ArenaBeginResponse (开始响应)- ArenaRoundStartResponse (回合开始)- ArenaRoundEndResponse (回合结束)
2025-07-04 21:51:49
1247
原创 Unity-MMORPG内容笔记-其二
/ EquipDefine.cs - 装备定义数据结构set;} // 装备IDset;} // 装备名称set;} // 装备槽位set;} // 装备类别// 基础属性set;} // 最大生命值set;} // 最大法力值set;} // 力量set;} // 智力set;} // 敏捷// 战斗属性set;} // 物理攻击力set;} // 法术攻击力set;} // 物理防御力set;} // 魔法防御力set;} // 速度set;} // 暴击率。
2025-07-04 12:49:59
1022
原创 Unity-MMORPG内容笔记-其一
这是一期内容非常多的讲解——有关一个MMORPG需要的内容我都会在这里做介绍,当然篇幅原因,我不会介绍得非常仔细,但至少会把基本的思路讲解清楚。如何实现MMORPG的登录和注册呢?这是我们的架构,这个系统采用经典的客户端-服务端分离架构,使用Protobuf作为网络通信协议。用户在Unity客户端的UI界面(UILogin/UIRegister)输入账号密码信息后,经过本地验证(空值检查、密码确认)通过客户端UserService服务层将用户数据封装成Protobuf格式的网络消息(UserLoginReq
2025-07-03 17:17:18
708
原创 C++——手撕智能指针、单例模式、线程池、String
今天我们来学习一下C++中的智能指针,如果有人不知道C++中的智能指针的概念的话:C++智能指针是一种基于RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制的高级内存管理工具,用于自动化动态内存的分配与释放,从而避免内存泄漏、悬空指针等问题。其核心思想是将资源(如堆内存)的生命周期绑定到对象的生命周期上——对象构造时获取资源,析构时自动释放资源目前主流的智能指针包含两种:独占式指针和共享式指针。什么是独占式指针?
2025-07-02 16:31:32
1541
原创 Unreal引擎——动画系统详解-其一
今天我们来学习Unreal引擎的动画系统——对应的Unity没有开放的部分,Unreal是我们学习动画系统最好的地方了。Unreal的动画源码也在官方源码中,有多个相关的核心文件。
2025-06-30 21:44:08
1348
原创 Unreal引擎——Chaos物理引擎(不)详解
今天我们来了解一下关于Unreal引擎的物理引擎——Chaos:这是UE自研的更高级的物理引擎。
2025-06-27 21:29:54
1635
原创 Unreal引擎——Nanite虚拟几何和Lumen全局光照详解
说到UE最突出的技术贡献,我相信Nanite和Lumen这两个名字一定绕不开。Nanite虚拟几何和Lumen全局光照是什么?
2025-06-27 10:38:17
1509
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅