일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ret2libc
- animation
- os
- MAC
- gameplay ability system
- gameplay tag
- listen server
- gas
- 게임 개발
- gravity direction
- map design
- dirty cow
- Aegis
- rpc
- photon fusion2
- 메카님
- CTF
- 게임개발
- Unreal Engine
- Replication
- 유니티
- Multiplay
- ability task
- attribute
- 언리얼 엔진
- 언리얼엔진
- gameplay effect
- local prediction
- stride
- unity
- Today
- Total
목록언리얼 엔진/Drag Down (캡스톤 디자인) (20)
Replicated
진짜 값을, 그것도 주기적으로 변하는 걸 로컬 프레딕션 하려고 했는데, 너무 위험하다.보이는 값이 프레딕션 되도록 처리해보자! // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "UI/DDGASUserWidget.h"#include "GameplayEffectTypes.h"#include "DDGASStaminaBarUserWidget.generated.h"/** * */UCLASS()class DRAGDOWN_API UDDGASStaminaBarUserWidget : public UDDGASUserWidget{ GENERATED_BO..
스테미나 자동 회복을 넣으니 상태가 꼬인 것 같다주기적으로 호출하니 일단 디버깅도 감이 안잡힌다폐기하고, 대신 UI에서 프레딕션한 값을 사용하자생각한대로 움직이긴 하는데, 값들이 제어가 안된다.

해결하고 나서 생각한 거 : 주기적으로 변화하는 값, 특히 짧은 주기로 변화하는 값, 시점을 컨트롤하지 못하는 건 예측 실행해선 안된다. 이전 글에서 발생한 문제.. 스테미나 깎이는게 UI에서 제대로 안보인다모아서 보내는 언리얼 리플리케이션 시스템 상 어쩔 수 없는 듯멀티 개발은 해도 해도 어려운 것 같다 이걸 냅두기엔 나도 불편한데 사용자가 불편하지 않을리가 없다UX를 챙기자.. 그래서 생각한 방법은,일단 어빌리티를 만들고 ActivateAbility에서 타이머를 설정하는 거다 실패했다.두번째로 생각한 방법은 UAbilityTask_WaitDelay로 예측 실행을 시도하는 거다 실패했다.대체 왜 안되는 건지 이해가 안가서 로그를 이리저리 찍어보는데이펙트 적용은 빠르게 되는데 UI가 그냥 못 따라간다?..

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Components/ActorComponent.h"#include "DDBuffManagerComponent.generated.h"UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )class DRAGDOWN_API UDDBuffManagerComponent : public UActorComponent{ GENERATED_BODY()public: UDDBuffManagerComponent(); void Initailize..
아무리 예측 실행을 하고, FScopedPredictionWindow을 켜놔도다른 액터 컴포넌트의 값을 변화시키는 것은 해당 변수에 Replicated 달아놔야 한다 이걸 어떻게 알았냐면 스테미나가 최종적으론 동기화되긴 하는데, 예측 실행이랑 달라서 보정되는게 보인다그럼 예측 실행에선 스테미나를 계속 20씩 깎는다는 거다 로그 찍으니 동기화 안됐다 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Components/ActorComponent.h"#include "DDAttackStateComponent.generated.h"UCLAS..

일단 UI는 플레이어 컨트롤러에다가 달아둘 거다일단 만들어만 주자 그리고 GAS와 연결해야 하니, 세팅을 좀 많이 해줘야 한다정확히는, 위젯과 위젯 컴포넌트를 확장해야 한다 일단 위젯을 확장하자 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "AbilitySystemInterface.h"#include "DDGASUserWidget.generated.h"/** * */UCLASS()class DRAGDOWN_API UDDGASUserWidget : public UUserWi..
1. 밀기, 점프 밀기, 회피 액션 시 스테미나 감소2. 지속적인 체력 회복 둘 다 게임플레이 이펙트로 처리한다SetByCallerMagnitude 사용해서 런타임에 조정하자또 태그를 쓰자! 어트리뷰트를 대미지로 설정하진 않는다대미지 입는게 아니라 직접 깎는 거라서..대미지는 나중에 아이템 같은 거 맞으면 깎인다거나 할 때 이용할 것이다 void UDDGA_PushingCharacter::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventDa..
어빌리티 쓰던 도중 다른 어빌리티 쓰면이전 어빌리티가 AnimNotify에서 태그 제대로 못받아서 어빌리티가 제대로 안끝난다애초에 도중에 다른 어빌리티 쓰는게 의도된 동작이 아니니 막아보자 특정 게임플레이 태그가 있으면 어빌리티가 발동하지 않도록 막을 것이다ActivationBlockedTags 쓰면 된다(게임플레이 태그는 정말 쓰면 쓸 수록 너무나 좋은 시스템인 것 같다.) 현재 상태 기반 공격, 점프 공격, 회피세 종류만 해주면 된다 UDDGA_PushingCharacter::UDDGA_PushingCharacter(){ NetExecutionPolicy = EGameplayAbilityNetExecutionPolicy::LocalPredicted; InstancingPolicy = EGamepl..