随笔分类 - UE4_27
官方文档学习
摘要:论坛里面有人给出了利用UPL解决的方法 但不会UPL,没有使用这个方法,而是参考了这篇知乎文章 其实都提到了在项目文件\Intermediate\Android\arm64_AndroidManifest.xml这个文件中的修改, 而在一开始的这个弹窗是其中的这条语句<meta-data andro
阅读全文
摘要:通过源码了解实现简单的实现原理。非常粗浅,只涉及一些基本的调用路径。 LineTrace...这个函数实际上是调用的TSceneCastCommon这个模板函数 template <typename Traits, typename TGeomInputs> bool TSceneCastCommo
阅读全文
摘要:在前一节实现了自定义CMC中的基础框架,由于下蹲本来就是设定好的一个MoveMode,所以我们不需要在UpdateMove中实现控制逻辑,只需要开放一个接口给外部调用就可以了 下蹲 UFUNCTION(BlueprintCallable) void CrouchPressed(); void UXC
阅读全文
摘要:之前在学习网络通信时,经常需要对客户端上的行为进行预测,来降低延迟带来的比较差的体验。而UE4为角色移动提供了CharacterMovementComponent这个组件,其在移动时可以发现已经实现了客户端预测。 现在可以通过对CharacterMovementComponent进行扩展,实现我们自
阅读全文
摘要:目的 对于非常高延迟的用户,这个功能不希望开放,因为可能降低其他用户的体验。 利用对Ping的判断,更改武器中控制SSR的布尔值,注意服务器和客户端需要同步,所以可以对该布尔值变为可复制的,利用属性赋值,当服务器上的值发生了改变就可以传递到客户端 //只需要对当前武器的Owner客户端产生改变就可以
阅读全文
摘要:不同 因为Projectile是一个抛物线,所以不能再使用射线检测,而是通过检测projectile对象碰撞来造成伤害 所以对于抛物线轨迹,为了能够在服务器上模拟,需要传递起点和初始速度 所以还有一点不同就是这个Projectile对象的复制问题在开启SSR之后 Add 对于开放了Projectil
阅读全文
摘要:区别 虽然也是HitScane,但其可以对多个角色或者多个部位造成伤害 更改 首先是之前在FFramePackage结构体中,需要增添一个成员变量,用来表示该结构体中的BoxCollision属于哪个敌人。 而之前使用的ConfirmHit返回的校验击中头部和身体的结构体,需要为ShotGun创建类
阅读全文
摘要:滞后补偿 解决客户端由于网络问题,而导致游戏显示或者响应问题,比如当在一个网络延迟下,如果所有状态判断以及实现都是放在服务器上执行,那么当客户端按下移动键,然后需要将该事件传递到服务器上,此时经过一个时间,然后服务器处理结果,再返回给客户端总过经过一个RTT,所以如果RTT过大,将导致按键后,需要很
阅读全文
摘要:应用场景 当游戏运行过程中,当一个MainActor某个行为的发生会对其他多个object产生影响时可以采用观察者模式,这样可以避免MainActor与其他object发生强耦合关系。如果不采用观察者模式,可能的做法是将object加入到MainActor的行为方法中,如果有多个object那么该方
阅读全文
摘要:不使用对象池 如果不使用对象池,那么假设一个Boss技能发射10个投射物,那么就会导致每次技能的释放需要创建10个投射物,然后遇到条件进行销毁 对象池模式 维护一个存储投射物的容器,然后在发射时从容器中取出,当"销毁时"放回容器中。 实现方式 以发射投射物为例, 首先对于投射物创建一个父类,该父类表
阅读全文
摘要:主要实现 主要是两点 一个是Dash的实现效果,一种是直接Dash到目的地,第二种则是在Dash过程中实现动画的播放显示 第二点则是障碍物的检测,对Dash的一个阻挡效果的实现 Dash实现效果 为了实现Dash过程中的动画显示,可以利用时间轴组件实现Location的移动,从而避免直接对角色的Lo
阅读全文
摘要:本质 不管是客户端还是服务器在输入文字后,按下回车发送,将触发RPC调用。然后通过RPC将发送者,输入文本等信息,传入到服务器,然后通过多播RPC传播到所有客户端的聊天框。 UI UI利用三个组件 ScrollBox 用于在服务器以及每个客户端上显示消息的载体 TextBlock 本地将信息通过一个
阅读全文
摘要:多客户端出现时间不同步的情况,, 由于每个客户端本地的时间,时区不同或者存在网络延迟造成的。所以为了能够使每个客户端显示的时间相同,就需要在Server上利用GetWorld()->GetTimeSeconds()获取服务器时间,然后传给客户端显示。 在传输过程中,要考虑到每个客户端的延迟需要做一些
阅读全文
摘要:参考 参考 原理就是利用一个房间的三个方向(排除进入口)出口(可以减少,即设置墙壁),从而获得下一次房间生成的位置,其中涉及到对于多个房间重叠,生成结束后如何对缺口进行修补等功能实现 RoomBaseActor 该Actor类是后续创建房间的基类,如果想要固定所有房间形状即只改变出口个数,那么在该类
阅读全文
摘要:原理:利用Token限制同一时间AI的攻击 即为Character设置一个属性Token,来限制Character同时最多可以被多少个AI攻击,当AI执行Attack攻击时,将对该Token进行修改(竞争?),如果Token不满足消耗那么将不会攻击 处理Token函数 消耗Token 当AI进行攻击
阅读全文
摘要:NavLinkProxy PointLink: 点对点,不提供可处理的事件 SmartLink:提供可处理的事件,当AI到达Link位置时,可以接受函数 通过Receive Smart Link Reached事件进行绑定函数操作 实现简单的跳跃 通过接口,定义函数,在AI基类中进行实现。 主要通过
阅读全文
摘要:重写ActorsPerceptionUpdated函数 有委托OnPerceptionUpdated,可以自己编写函数然后进行绑定。也可以直接对ActorsPerceptionUpdated进行重写,该函数会在有感官变化时进行调用 其会根据委托获得一个数组,即AI感知到的所有发生变化的Actor。通
阅读全文
摘要:UE4中的AI UE4中AI一般通过行为树来实现 行为树控制了AI的动作,而该执行哪些动作则是由AIController(本质上是一个类)进行判断,然后传入BlackBoard的Key中,之后在行为树里利用Selector或者Sequence进行执行对应的动作 每个Actor类都可以选择一个AICo
阅读全文
摘要:说明 正式的攀爬功能,攀爬功能其实就是跳跃功能的Plus版本,在面对不同凸起地面墙壁时,有不同的动画效果,使得角色可以越过障碍,而不是只有跳跃动画以及跳跃高度恒定,导致角色无法运动 该攀爬功能实现了面对薄墙(高、低)和厚墙(高、低)的基础攀爬动作,在面对厚墙时,角色在成功攀爬后会站在平台上,而面对薄
阅读全文
摘要:说明 在游戏中动态改变网格数量和形状等,该功能是寻路功能的前期准备,即在基础移动地基上方,构建一层网格,任何移动的操作都可以基于该网格进行计算。从而在编辑器模式下能够更方便进行调试 InstancedStaticMeshComponent 其是一种用于优化静态网格渲染性能的技术。InstancedS
阅读全文