일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- unity
- gameplay effect
- ability task
- local prediction
- rpc
- listen server
- MAC
- stride
- attribute
- gravity direction
- 게임 개발
- gas
- 게임개발
- map design
- 언리얼엔진
- CTF
- UI
- animation
- nanite
- gameplay tag
- Aegis
- Multiplay
- gameplay ability system
- photon fusion2
- network object pooling
- 유니티
- Replication
- os
- 언리얼 엔진
- Unreal Engine
- Today
- Total
목록언리얼 엔진/Drag Down (캡스톤 디자인) (33)
Replicated

// 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..

상대방의 공격을 피할 수도 있어야 한다회피를 만들자저 태그를 가지고 있으면 공격이 작동하지 않도록 설정할 것이다그리고 저 태그가 날아오면 회피 해제모션을 풀로 회피하면 너무 쉽다HitCheck랑 코드 다 똑같고 태그 이름만 다름 // Fill out your copyright notice in the Description page of Project Settings.#include "GA/DDGA_Dodge.h"#include "DDGA_Dodge.h"#include "AbilitySystemComponent.h"#include "Abilities/Tasks/AbilityTask_WaitGameplayEvent.h"#include "DragDown.h"#include "AbilitySystemBluep..

클라이언트가 자기 자신에 대해 쓰는 건 문제 없다애초에 예측 실행도 잘 되고 있다 문제는 리슨 서버에서 실행한 애니메이션이 클라이언트에서 느리게 반응한다정확힌, '자신이 아닌 클라이언트'의 애니메이션이 늦게 동기화된다. 이런 느낌이다서버는 애초에 자기가 실행하니 당연히 잘 보인다클라는 결국 복제받는 것이니 너무 느리다 찾아보면, 애초에 GAS의 UAbilityTask_PlayMontageAndWait한테 동기화 맡기면 느린 듯하다복제 방식의 한계인듯 그래서 아 복제 방식의 한계구나 하고 넘어갈 것이냐? 하면 그래선 안된다UX 관점에서, 다른 플레이어의 공격이 제때 보여야 한다. 그래서 어떻게 해결할 것이냐?RPC를 쓰는 거다RPC는 Replicated 같은 거보다 훨씬 빠르다 근데 GA는 UObject..

몽타주 만들고 DDGA_JumpPushingCharacter 생성(GameplayAbility 상속)일반 공격 코드 재활용 좀 할 거다점프 상태에서 일반 공격 키 누르면 공격이 나갈 거다 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Abilities/GameplayAbility.h"#include "DDGA_JumpPushingCharacter.generated.h"/** * */UCLASS()class DRAGDOWN_API UDDGA_JumpPushingCharacter : public UGameplayAbility{ GEN..