TIL

26.01.28일자 - TIL

csh8696nb 2026. 1. 28. 21:01

ACK, 분반 과제 마무리, 프로파일러 CI/CD 특강, 2챕터 부터 빠르게 복습하며 구현하기


==========
AGameModeBase
v.viod InitGame/InitGameState
FString OptionsString
v.TSubclassOf<AGameSession> GetGamesessionClass() const;
API Uclass* GetDefaultPawnClassForController();
.... 전반적인 GameMode에서 선택할 수 있는 모든 클래스들을 불러올 수 있는 모습이다.
(PlayerState, PawnClass, SpectatorClass, ReplaySpectatorPlayerCcontrollerClass, ServerStatRepllicatorClass, GameSession, GameState, ServerStatReplicator, GetNumplayers(), GetNumSpectators(), v.void StartPlay, v.bool HasMatchStarted, v.bool HasMatchEnded.....)
GameNetDriverReplicationSysytem, v.bool SetPause, v.bool ClearPause, ForceClearUnpauseDelegates
크악 개 많다 다만 게임을 실행했을 때 필요하다고 생각되는 중간 단계들의 함수들이 전부 기본 값(default)으로 지정해 둔 모습이다.
base내부를 봐서 비대해 보이지만 GameMode는 레벨에 부착되는 개념이라는 것을 생각하면 레벨 상위로 못 가는 녀석이다. 
레벨 별로 개별 설정이 가능하므로 그때마다 바뀔 수 있는 내용들이 포함되어야 한다.(instance하위개념)
레벨 클리어 조건(던전 아님), 출현 시킬 몬스터 정보(스폰 규칙 등), 레벨의 기믹 등
(레벨이 어떻게 진행되는가 에 대한 전반적인 정보)


UGameInstance
v.void HandleOpenCommand / HandleDisconnectCommand / HandleReconnectCommand / HandleTraveCommand - 연결과 관련된 커맨드
LocalPlayers, OnlineSession, ReferencedObjects - UPROPERTY()
PIEMapName(?) , Exec(?)(아마도 실행관련)
v.void Init()/shutdown()  //void receiveInit()/receiveShutdown()
Handle  Network/Travel  Error
initialize Standalone/ForMilnimalNetRPC(?)
v.void OnWorldChanged

게임 전반에서 플레이어들의 상태(멀티로 확장하더라도 여기서 관리), 레벨의 상태(진행도 등), 게임의 진행 상태 (일시 정지, 환경 설정 등)등의 정보를 전반적으로 보관하는 곳
- 레벨 단위보다 위에 있어야 한다. (프로그램 종료까지 생존해야 함)
현재 캐릭터 정보, 계정/플레이 세션 정보, 던전 진입 데이터(던전 클리어/던전 내 다음 레벨 등) 등이 보관되어있어야 한다.
(게임을 켜고 끄는 사이[심지어 재실행하더라도]에 존재해야 할 모든 정보)

AGameState
v.bool IsMatchInProgress
void SetMatchState
v.void OnRep_  MatchState()/ElapsedTime()
v.void DefaultTimer(), PostInitializeComponents()
v.void ReceiveGameModeClass, HandleBeginPlay
v.bool HasMatchStarted, HasMatchEnded
float GetPlayerStartTime, GetPlayerRespawnDelay

게임 시간(시작/남은 등), 무슨 단계인가, 생존자는 누구인가 등
(이 게임의 현재 상태[주로 값])


APlayerState
UPROPERTY
score, PlayerId, CompressedPing, CurPingBucket, bOnlySpectator : 1, bIsABot : 1
bHasBeenWelcomed :1 , bFromPreviousLevel :1, bUseCustomPlayerNames :1
StartTime, UniqueId

GetScore, GetPlayerId...
bool IsOnlyASpectator, IsABot, IsInactive
유저의 이름/아이디/점수/핑 등의 값을 소유 pawn이 죽어도 가져야 하는 값


AHUD
UPROPERTY
TObjectPtr<APlayerController> PlayerOwner
bLostFocusPaused :1, bShowHud :1, bShowDebugInfo :1, CurrentTargetIndex, bShowHitBoxDebugInfo :1, bShowOverlays :1, bEnableDebugTextShadow :1
PostRenderedActors
Canvas / DebugCanvas
void GetTextSize / DrawText / DrawLine / DrawRect / DrawTexture / DrawTextureSimple / DrawMaterial / DrawMaterialSimple / DrawMaterialTriangle
보여질 화면에 대한 정보
canvas기반의 저수준 화면 출력 담당자(디버그/오버레이 출력 등)


APlayerController
TObjectPtr<> Player, AcknowledgedPawn, MyHUD, PlayerCameraManager, PlayerCameraManagerClass, HiddnActors, HiddenPrimitiveComponents
struct - float TotalTime, TimeElapsed
입력을 주고 받기 위해/ 상황 변환(일시 정지 등)에 따른 변경을 포함해 다양한 함수들이 존재(여유 될 때 다시 보자) 
HUD를 공부하지 못했으므로 관련 분리는 차후 계획 예정, 입력을 받는 장소(변화는 Pawn/Character가 소유)
입력에 반응해 pawn / HUD / UI에 전달하는 주체


==========
CI/CD 특강
Continous Integration / Continuous Distribution
지속적인 통합 / 지속적인 배포
저장소에 합치는 것을 자동으로 정리해주는 기능
코드를 관리해주는 집사 같은 개념(?)

Artifact - 산출물
실행 파일을 완성하는 것

Cook Content - Resource Cooking : 게임에 사용하기 최적화된 형태로 가공(컴퓨터를 위한 쿠킹)

디버깅하는 두 방법
~~~ Editor
~~~ 없는 것 - 게임만 돌리는 것이 가능하다 (조건이 좀 있음) - 리소스들이 쿠킹되어 있어야 한다.

F9로 중단점(?) 을 잡는 것을 할 수 있다.(exe로 실행중이더라도[디버깅으로 되어있다면])
실행중인 프로세스에서 잡아오는 개념이다.
CLI환경 - CMD창 안에서 실행하는 것

stage / .pak
archive

에러가 많이 뜰텐데 읽어보고 가져오라

=====
Exception -> Assertion

Check - shipping에서는 기본적으로 꺼짐(동작하지 않음) / verify는 작동함
verify(OtherActor); - OtherActor이 없으면 아래 내용은 죽음
BeginPlay 에서 verify를 놓으면 추적하기 쉬우므로 많이 넣어둔다. 

델리게이트 deligate(?)
재귀 호출 - stack overflow


ensure

profiler
프레임이 죽은 범인 색출을 하는 과정이다(?)

STATCAT_Advanced

==========
부정형 표현보다 긍정형 표현으로 변경하는 것이 좋다. (발언/타이핑하기 전에 생각했나요~)
develop/feature
=====

2-1강 진행

raw 포인터를 TObjectPtr<> 로 대체함.
component들은 다 위의 ptr로 대체할 수 있고 하는 것이 더 좋다.
.

'TIL' 카테고리의 다른 글

26.01.30일자 - TIL  (0) 2026.01.30
26.01.29일자 - TIL  (0) 2026.01.29
26.01.27일자 - TIL  (0) 2026.01.27
26.01.26일자 - TIL  (1) 2026.01.26
26.01.23일자 - TIL  (0) 2026.01.23