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

이 세팅이랑 DLSS 세팅할 거다UGameUserSettings상속해서 클래스 만들어주고 DefaultEngine.ini에 설정 추가이래야 기본 세팅이 DDUserSettings로 변경됨 GameUserSettings만으로도 잘 작동할 것 같긴 하지만, GameInstanceSubssytem으로 래핑하는게 더 유연할 것 같다. void UDDGameSettingSubsystem::Initialize(FSubsystemCollectionBase& Collection){ Super::Initialize(Collection); UserSettings = Cast(GEngine->GetGameUserSettings()); if ( UserSettings ) { UE_LOG(LogDD, Log, TEXT("Us..
애니메이션이 끝나기 전에 어빌리티 end 처리해서 애니메이션 도중에 움직일 수 있게 됨애니메이션 종료는 태그를 따로 만들어서 처리하자정확히 말하면 Animation과 Trace나 dodge 이벤트를 분리하는 거다PlayMontageAndWait 태스크를 쓰지 않아서 이렇게 해야 되는 거기도 하지만, 이렇게 관리하는게 더 유연성이 더 좋기도 하다 태그 추가 void UDDGA_ActionBase::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEvent..
매치메이킹 연동 (아직 스프링부트 서버 코드가 개발 중이라 안됨) 메인 메뉴- 방 생성- 방 참여- 랭킹 시스템 메뉴- 사운드(bg, sfx)- 그래픽 설정(그림자, 리플렉션, dlss) 대기방AI- Behavior Tree 기반, 밀어버리는 적 맵 완성 맵 골인 처리 외형 변경 이모션 시스템- 리타겟팅?

모듈화를 위해 당연히 컴포넌트로 분리* OnLand나 CurrentFloor.HitResult에서 현재 바닥 트레이스 정보를 주긴 하는데, Physical Material을 안들고 온다* bReturnPhysicalMaterial 설정이 기본적으로 안되어 있음 Project Settings -> Physics 가서 Physical Surface 추가 #pragma once#include "CoreMinimal.h"#define CPROFILE_DDCAPSULE TEXT("DDCapsule")#define CPROFILE_DDTRIGGER TEXT("DDTrigger")#define CPROFILE_OVERLAPALL TEXT("OverlapAll")#define CPROFILE_NOCOLLISION T..
생각해보니 이전 네트워크 오브젝트 풀링은 결함이 있다AActor* UDDNetworkObjectPoolingSubsystem::GetPooledObject(TSubclassOf ActorClass, const FVector& SpawnLocation, const FRotator& SpawnRotation){ if (!PooledActorsMap.Contains(ActorClass)) { UE_LOG(LogTemp, Warning, TEXT("No Actor Pool : %s"), *ActorClass->GetName()); return nullptr; } FActorArrayWrapper& ActorPool = PooledActorsMap[ActorClass..

생각나는 구현 방법은 세가지- 액터 기반- 게임인스턴스 서브시스템 기반- 월드 서브시스템 기반 액터 기반 -> 전역 풀 매니저인데 액터보단 서브시스템 기반이 더 적절. 레벨마다 액터 가져다 놓기도 좀 별로다게임인스턴스 서브시스템 기반 -> 게임 내내 유지되어서 메모리 낭비가 있을 듯 함월드 서브시스템 기반 -> 월드마다 원하는 풀링 오브젝트 초기화 시킬 수 있으니 메모리 낭비도 없고 좋은듯?=> WorldSubsystem 기반으로 결정 최대한 확장성을 고려했고, 데이터 기반으로 개발하고자 했다DataAsset 기반의 PooledObjectData의 BP를 GameMode가 읽어서 풀링 초기화그 이후 다른 오브젝트들이 알아서 서브시스템에서 Get, Return하도록 한다 게임 모드도 BP라서 그냥 Pool..

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "DDBulletBase.generated.h"UCLASS()class DRAGDOWN_API ADDBulletBase : public AActor{ GENERATED_BODY() public: ADDBulletBase();protected: UFUNCTION() void OnComponentBeginOverlapCallback(UPrimitiveComponent* OverlappedComponent, AActor* OtherAc..

https://github.com/Coffeecaat/DragDown GitHub - Coffeecaat/DragDownContribute to Coffeecaat/DragDown development by creating an account on GitHub.github.com GameInstanceSubsystem 기반으로 만들자빌드 파일에 HTTP, Json 등 추가 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Subsystems/GameInstanceSubsystem.h"#include "Interfaces/IHttpReq..