自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jkchen's Haven

尽身为莲,花开佛现

  • 博客(967)
  • 资源 (2)
  • 收藏
  • 关注

原创 UE4 & C++ 笔记

创建名为Name的USceneComponent组件对象USceneComponent* P = CreateDefaultSubobject<USceneComponent>(TEXT("Name"));开启TickPrimaryActorTick.bCanEverTick = true;资源查找器static ConstructorHelpers::FObjectFinder<资源类别> CubeVisualAsset(TEXT("资源路径"));if..

2021-02-25 18:53:29 3038 1

原创 ACM中的数学问题合集

数学在ACM竞赛中通常会占很大的比重,例如这次暑假的多校比赛中,几乎所有题目都和数学有着很大的联系所以统计一下一些常用的知识点数论欧拉定理威尔逊定理中国剩余定理费马小定理...

2019-08-20 22:30:35 10888 3

原创 模板Main

数学相关图论相关数据结构 其他算法做题思路

2018-09-23 19:59:55 784

原创 unreal UObject序列化

会和CDO进行比较,将不同的属性序列化进去,依据FPropertyTag解决结构不完整的问题先复制一份CDO,然后将序列化的属性设置到Object内if(!

2023-04-28 10:35:52 61 1

原创 unreal 关于贴图在缩小后的清晰度

Texture Group 默认 World就好,Mip Gen Settings 改为 TMGS_FromTextureGroup,Filter 改为 TF_Trilinear。Anti-Aliasing Method 用默认的 AAM_TemporalAA 就好。噪点:在no mip的情况下,直接缩小会产生严重的锯齿,然后抗锯齿算法计算导致不稳定。

2023-04-19 00:17:41 31

原创 UnrealEditor-RHI.dll 没有被指定在windows上运行

去 Engine\Binaries\Win64 目录下,删除 UnrealEditor-RHI.dll,重新编译即可。

2023-03-29 16:35:18 98

原创 Unreal AI感知

一般是直接调用AActor::MakeNoise进行发声,调用流程大致是:在UAIPerceptionSystem的Tick内,调用每种已注册的UAISense的Tick,进行Update,这个是所有AISense感知的主要函数在UAISense_Hearing::Update内,对于每个Listener(FPerceptionListener,包含感知组件、队伍ID等数据),分别对每个FAINoiseEvent进行处理,是否能被听到是依据:这里还用了一个延时处理(PerseptionSys->Regist

2023-01-06 11:32:47 498

原创 Unreal 读写自定义配置文件

上面的方式,要么需要手动写配置文件,要么需要主动调用SaveConfig,比较不直观。在开发过程中的一些参数,想要方便的调整,可以创建一个类继承自UDeveloperSettings。在修改项目设置的时候,会生成 / 保存到对应的ini文件,当UCLASS存在defaultconfig时,ini文件将会生成到。首先需要自定义一个继承自UObject的类,UCLASS加上config标志。将想要和配置文件交互的属性,UFUNCTION加上Config标志。需要在过程中恢复设置内的配置,需要手动加载。

2022-12-27 15:56:54 632

原创 UE AIPerception感知非Pawn对象

AI之所以只感知Pawn,是因为被感知的对象需要手动注册,而非全局搜索。在BeginPlay阶段,为所有的AISense,调用RegisterAllPawnsAsSourcesForSense并且之后再通过RegisterSenseClass新注册的AISense,也会调用RegisterAllPawnsAsSourcesForSenseRegisterAllPawnsAsSourcesForSense则是检索所有的Pawn进行注册处理新生成的Pawn在UAISystem::PostInitProp

2022-12-05 15:39:03 358

原创 Unreal 寻路网格

首先,在项目设置内,Navigation System 内可以配置一些Agents。

2022-10-26 12:44:01 723

原创 在UE内添加控制台工程(Programs)

在下新建文件夹 XmlToProto内部新建文件夹Source,以及5个文件,文件内容见最下方cmd 运行UBT会刷新.sln项目文件,之后重新打开VS就可以看到该工程了可以像正常项目一样引用模块、插件(PublicDependencyModuleNames)把主流程写到 XmlToProtoMainWindows.cpp 内的main函数内即可(RequestEngineExit之前,且这个函数不能跳过)XmlToProto.Build.csXmlToProto.Target.cs

2022-06-22 15:39:12 242

原创 C++类成员函数返回类型推断、模板封装getter和setter

C++类成员函数返回类型推断、模板封装getter和setter

2022-06-06 14:54:00 452 1

原创 UE 添加模块的全局宏

在XXX.build.cs内,添加PublicDefinitions.Add("MacroName=MacroBody");即可。这个是基于文本的填充,所以可以写各种花里胡哨的 MacroBody,例如:PublicDefinitions.Add("MACRONAME_AAA(x)=for(int32 i=0;i<x;++i)");在 Build 后,在 Intermediate\Build 内会生成 Definitions.ModuleName.h 的文件,内部就包含了这样一句宏#defi

2022-05-20 11:25:38 524

原创 C 宏与注释

宏内部无法使用 // 进行注释,这样末尾无法使用反斜杠进行换行#define AAA axax\/*注释*/ \ax /* 多 行 注 释 */ \axax

2022-05-06 16:51:48 373

原创 正则表达式

学习测试替换:在匹配的表达式内,使用()截取部分字符,在替换表达式内,使用$N代表第N个截取内容。例如想要匹配#include <GameCore/XXX.h>#include<GameCore/XXX.cpp>那么匹配表达式就是:// \s* :任意个空白字符// .* :任意个任意字符#include\s*<(.*)>我们都知道<>用于引用系统文件,想要改为"",并且统一一下格式,那么替换的表达式就是:#include "$1

2022-04-15 17:04:29 86

原创 UE5 StateTree

文章目录After all状态转移数据配置方式After allStateTree就是分层状态机,稍稍结合一点Sequence目前比较简陋,提供的节点就几个,大部分都要自己写,例如PlayMontage、Wait、MoveTo、EQS等模型比较像行为树加一个Goto,EnterCondition=Decorator,Upper Task=Service,State=CompositeNode状态转移子状态激活时,上级状态也处于激活状态。此时如果满足上级状态的转移条件,会发生转移怎么转移进入

2022-04-10 18:56:55 2014

原创 Unreal - Environment Query System(EQS)

文章目录什么是EQS形成测试点评分标准化什么是EQS在指定区域内形成测试点根据环境(战场情况)对每个测试点做出评分,最后选出一个评分最高的点结果:提供下一次Do Something的较佳目标点,例如AI的移动形成测试点以环形为例评分当DistanceTo存在多个时(EQContent),每个各自算出评分,最后通过Multiply Content Score Op算出最后的分数标准化参考函数:void UEnvQueryTest::NormalizeItemScores(

2022-04-01 15:29:18 460

原创 关闭 切换Caplock时出现在屏幕的提示图案

右键 - 显示设置 - 高级显示设置 - 显示适配器属性 - 屏幕配置 - 启用屏幕显示 取消勾选

2022-03-21 15:45:11 1323 2

原创 Windows修改桌面、下载、垃圾桶、照片等默认位置

好处:减轻系统盘大小压力、系统重装的时候不会丢数据右键图标 - 属性 - 位置 - 移动应用

2022-03-08 17:39:40 269

原创 Unreal-GAS 源码解析 网络同步

GameplayAbility赋予能力UGameplayAbility* AbilityAbilitySystemComponent->GiveAbility(FGameplayAbilitySpec(Ability, 0, INDEX_NONE, this))// ActivatableAbilities 所有可激活的能力数组UPROPERTY(ReplicatedUsing=OnRep_ActivateAbilities, BlueprintReadOnly, Category =

2022-02-25 16:01:24 1325

原创 升级VS后,小番茄出问题

卸载VA注册表,删除HKEY_CURRENT_USER/SOFTWARE/WHOLE TOMATO下面的项管理员运行Trial-reset扫描,清除重新安装VA复制PatchVCS_0.9.2.5文件夹到VS安装目录(C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\)管理员运行PatchVCS_0.9.2.3.exe,弹出对话框内选中当前目录下的devenv.exe...

2022-02-25 14:29:48 459

原创 UE源码解析:UCharacterMovementComponent

RootMotion部分模拟端平滑void UCharacterMovementComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) if (CharacterOwner->GetLocalRole() > ROLE_SimulatedProxy) // 接收下发信息后更新位置 if (bIsClient)

2022-02-15 15:27:52 1119

原创 UE源码解析:UCharacterMovementComponent - RootMotion

Montage部分最后的产出RootMotionMontageInstance外部通过UAnimInstance::GetRootMotionMontageInstance获取FAnimMontageInstance * ACharacter::GetRootMotionAnimMontageInstance() const{ return (Mesh && Mesh->GetAnimInstance()) ? Mesh->GetAnimInstance()-&gt

2022-02-14 15:42:30 736

原创 Copy视频动作到UE | plask

打开https://plask.ai/,注册登录Get Started找一个视频,下载或者录屏拖入库下方可以左右调整,确认之后按下Extract Motion导出动画拖动库中生成的动画到骨骼上然后拖入场景导出下载速度捉急操作快捷键视图页面:Alt+LMB 改变角度Alt+RMB 移动滚轮 放大缩小H 摄像机归位K 插入关键帧帧页面:滚轮 缩放时间轴鼠标点击 单选Alt 多选右键选择删除选中后可以拖动位置,也可以Ctrl C V进行复制粘贴骨骼:W

2022-01-22 22:38:33 2345

原创 UE源码解析:UCharacterMovementComponent - 模拟端平滑

实现关键信息: 位置、朝向、速度Actor内有一个FRepMovement用于存根组件的移动// 根组件移动UPROPERTY(EditDefaultsOnly, ReplicatedUsing=OnRep_ReplicatedMovement, Category=Replication, AdvancedDisplay)struct FRepMovement ReplicatedMovement;修改ReplicatedMovement的调用链:int64 UReplicationGrap

2022-01-16 17:25:26 821

原创 UE5 引擎源码版

https://www.epicgames.com/account/connections#accountshttps://github.com/EpicGames之后有一个提示邀请你加入Epic Team,确认之后在https://github.com/orgs/EpicGames/repositories?type=all里面就可以看到仓库链接:https://github.com/EpicGames/UnrealEngine切换分支下载源码......

2022-01-12 11:18:47 8351

原创 UE Error:Cannot Flush Async Loading while async loading is suspended

开始游戏时调用AsyncLoadGameFromSlot报错原因:我在GameInstance::OnStart内调用,可能有一些初始化任务没有完成,无法异步加载解决办法:SetTimer 0.1s,让世界初始化之后再去异步加载

2022-01-07 19:40:46 2012

原创 converting to execution character set: Illegal byte sequence

这种情况是因为源代码文件的编码方式问题,比如出现中文字但是文件编码方式确是ANSII。解决方式是关闭IDE,使用记事本打开,再另存为,编码方式使用UTF8.

2021-09-27 20:29:34 907

原创 文本替换工具:快速生成重复代码

例如替换内容: tmp.pb({"bool", "int32"}); tmp.pb({"Bool", "Int"}); tmp.pb({"bool", "float"}); tmp.pb({"Bool", "Float"}); tmp.pb({"bool", "FString"}); tmp.pb({"Bool", "String"});……输入: UPROPERTY(EditAnywhere, BlueprintReadWrite)

2021-09-27 20:26:08 211

原创 Win10历史剪贴板 Win+V无法打开问题

右键 以管理员身份运行输入DISM /Online /Add-Capability /CapabilityName:Windows.Client.ShellComponents~~~~0.0.1.0然后Win+V即可

2021-09-14 17:53:58 4939 5

原创 UE4:AI‘s MoveTo——代码分析

路径寻找void UGameplayTask::PerformActivation()void UAITask_MoveTo::Activate()void UAITask_MoveTo::ConditionalPerformMove()void UAITask_MoveTo::PerformMove()FPathFollowingRequestResult AAIController::MoveTo(const FAIMoveRequest& MoveRequest, FNavPathS

2021-09-06 15:55:50 1996

原创 游戏AI浅谈

没有系统学习过,写的都是自己的使用感受状态机在接触游戏AI之前,如果让一个人去实现游戏里面的AI,那么一般都会使用状态机。反正我是这样,之前在Unity写C#的时候,就用纯代码写了个怪AI,分为很多状态,达成某些条件的时候进行状态的跳转。因为状态机可以朴素得表达人类思维,我在什么状态就干什么事。但是当状态特别特别多的时候,状态之间的跳转和维护就很折磨,心智负担较大。这时候就出现了分层状态机,把状态进行划分,同级的状态之间进行跳转。虽然我没用过,但是想想应该也就那回事,无非是状态机的优化罢了。行为.

2021-08-25 15:53:01 1056

原创 UE4 HTN插件源码解析

计划制定部分总结最小代价算法UAITask_MakeHTNPlan内部有一个TArray<TSharedPtr<FHTNPlan>> Frontier,通过HeapPush和HeapPop维护小顶堆,每次都能取出代价最小的Plan进行拓展。ACM入门算法,学名堆优化BFS,需要保证步长(即代价)非负。由于每次选择最小代价方案,且代价非负,当堆首方案成功完成时,一定是所有方案中代价最小的之一(可能有其它相同的),也就是DoPlanning中的Planning succee

2021-08-23 22:09:14 704 1

原创 UE4 HTN插件使用说明

介绍HTN的优势就是可以对未来进行规划(全局最优、全局代价最小),所以可以轻松做到多个盒子和球,分别到达一次盒子和一次球,总时间最短这种事情内部有一个Loop-Submit,相当于一个任务在规划时创建多个分支,会对每种分支进行代价计算流程计划制定:根据Task(可多次提交、通过worldstate剪枝)、复合节点(If等)、装饰器(通过worldstate剪枝)创建出很多个可选计划计划选择:从中选择一个代价最小的计划进行执行计划执行:一步一步执行计划,直到执行完毕或者计划不合法(任务失败

2021-08-18 17:44:07 830 2

原创 UBTDecorator_BlueprintBase源码分析

自己写装饰器最好看一下这个类TickNode当前执行的节点在父节点代表的子树内时,这个函数会执行满足以下条件的时候PerformConditionCheckImplementations != 0 && (bIsObservingBB == false || bCheckConditionOnlyBlackBoardChanges == false)会执行GetShouldAbort(OwnerComp),判断是否需要终止,运行当前节点OwnerComp.RequestExec

2021-08-11 15:55:27 216

原创 Blockly源码解析

https://blockly.games/https://www.scratch-cn.cn/https://developers.google.com/blocklyhttps://developers.google.com/closure

2021-08-09 11:23:38 2016

原创 HTN框架介绍、开发心得

任务(Task)任务分为两种,原始任务(Primitive Task) 和 复合任务(Compound Task)。原始任务是一个可以直接执行的 操作(operator) ,例如移动到目标。而复合任务则是有多种 实现方法(Method) 的任务,并且每种实现方法都是一个 任务集合(The set of tasks),可以包含复合任务和原始任务,例如AttackEnemy(寻敌、移动、攻击…)。多种实现方法之间进行选择,例如攻击可以近战和远程,如果距离比较远就使用远程攻击。UE4 - 原始任务和UE

2021-07-19 15:14:33 4825

原创 UE4 行为树节点C++

参考 Engine\Source\Runtime\AIModule\Classes\BehaviorTree\Tasks\BTTask_MoveTo.h运行运行virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory);进入非激活状态触发virtual void OnGameplayTaskDeactivated(UGameplayTask&.

2021-06-30 10:59:18 1369 2

原创 UE4 GAS/ActionRPG学习导图——Main(Gameplay Ability System)

参考资料YouTube官方文档强大之处与tag配合,如果怪物AI在需要治疗的时候,会搜索拥有治疗效果的能力并使用效果可以设置瞬间、持续、永久增加Tag避免重复造成伤害1 - 基础配置开启插件添加依赖PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "GameplayAbilities", "GameplayTags", "Ga.

2021-04-27 19:28:47 1105

原创 Tree Game Gym - 101234I(树 游戏 想法)

https://vjudge.net/problem/Gym-101234I题意:给一棵树,每次选择两个叶子,路径上的边被染色。所有选择得出的路径的边不能重复。当无法找到时游戏结束。求最少次数。解析:以叶子结点为例。大于2的一定直接匹配。最后剩下两种:第一种若不和其它匹配,则会自己匹配,答案+1。第二种则不会,只剩下1一个时答案+0。→\to→我们会尽可能保留第二种。→\to→第一种有两个就直接匹配→\to→对于每个子树来说,有以下情况需要考虑:左边是第一种的数量,右边是第

2021-04-11 16:31:55 196

VA_X 相关资源 内含Trial-Reset和安装程序

VA_X 相关资源 内含Trial-Reset和安装程序

2022-02-25

mnist手写数字数字集

5000个mnist手写数字数字集,4500个训练集(Xtrain,ytrain),500个测试集(Xtest,ytest)。 每个样本X有400个特征,10种答案(1~10,10表示0)

2019-12-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除