TIL

26.03.12일자 - TIL

csh8696nb 2026. 3. 12. 20:49

시작 팀 회고 / ACK / 베이직 분반 / UE 멀티 게임 개발

챕터4 수강 완료 / 분반, 챕터 6~7 듣기
==========

왼쪽은 풀이에 실패한 구문

그 중 예외 처리는 위험한 접근으로 두 번째 예외는 없는 것이 맞다.

 

for (int i = 0; i < s.szie(); i++) {
   for (int j = 0; j < s.size(); j++) {
      char c = s[(i + j)% s.size()]
}
(i+j)%s.size() - 전부 순회하는 횟수는 유지하면서 첫 순회 위치를 변경할 수 있는 방법
==========
타짜 이야기 - 완벽한 패, 큰 패가 아니더라도 이길 수 있듯 성공에도 완벽이 필요한 것이 아니다.

Delegate - "함수 호출 권한"을 위임 받는 것 (직역 대리자, 위임자) - 객체로부터
call back / functionPtr <-> delegate / lambda

call back - 호출을 돌려받다. -OnDamaged() => 정기적으로 호출되는 느낌
void Attack() { ... Monstar->OnDamaged(...); }

Function Pointer - 함수를 가리키는 변수 - callstack(호출 스택) FILO

Lambda - Functional Programming의 정수 (1급 함수 ....뭐 이런 게 나온다)
(제대로 공부하려면 많이 어려운 개념이다) stateless같은 객체 지향과 멀어지는 개념의 철학이 들어간 내용이다.
동적 함수 - auto func1 = [this, &] =>() { }
동적(dynamic), 정적(static) - 런타임에 할당 되느냐/안되느냐
주소값이 동적으로 바뀌냐 정적으로 결정돼있냐의 차이.
void MakeFunction(AActor* monster, int power) { feturn [monster, power]=>() {
monster->OnDamager(power);} }

player.Attack = MakeFunction(monster, 10);
stone.Disaster = MakeFunction(monster, 1000);
player.Attack = MakeFunction(monster, player.power);
player.Attack();
stone.Disaster();

skill 예시(쬐끔 어렵다)


Delegate
서로 다른 객체 A a , A b 에서 a.Show(); / b.Show();는 서로 다르다.
하지만 이를 한번에 호출하거나 외부에서 호출하기 위한 방법

.bindstatic - (&Test) / .bindRaw(&a, &A::Test) / .bindSP(b.ToSharedRef(), &A::Test)
//쓰레드는 동시성 문제가 있음. - 이에 대해 안전해야 하니 당연히 느려짐
/ .BindThreadsafeSP(b.ToSharedRef(), &A::Test)

Thread - int a / a+1을 100번 쓰래드로 실행하면 1~100 사이의 값이 도출됨.
//Atomic 하게 돌린다. TAtomic이란 게 있음 ㅋㅋ / 연산을 시작하기 전 lock을 걸고 완료되면unlock으로 풀어주는 개념 
//동적 할당임. / 언리얼에서 쓰레드 안정성을 보장해줄 수 있음
/ .BindWeakLambda(&c, [c](), ) { Temp->Test(); } / .BindSPLambda()

Execute

Module
객체 내에 (?)

1급 함수 - 1. Stateless / 2. 함수를 변수 취급할 수 있어야 함.
함수가 1급 객체가 되는 것이 1급 함수

조사식, 댕글링
2시간이 지나도 해결이 안되면 튜터님을 찾아 달라.
Widget / Delegate 는 어려운 개념이 맞다.
==========
함수는 강제로 최적화가 되는 특징이 있다. 따라서 억지로 보려면(저번 팀 프로젝트 GC이슈 때 사용해봤던 방법)
UE_DISABLE_OPTIMIZATION .....  UE_ENABLE_OPTIMIZATION 하면 사이의 함수는 강제로 최적화 되지 않는다. (무조건 되는 건 아님 ㅋㅋ)
===
최적화는 마지막에 수행하는 것이 좋다.
거리에 따라 client에 정보를 연결할 지에 대한 규칙을 사용해서 최적화를 수행할 수 있다.

'TIL' 카테고리의 다른 글

26.03.16일자 - TIL  (0) 2026.03.16
26.03.13일자 - TIL  (1) 2026.03.13
26.03.11일자 - TIL  (0) 2026.03.11
26.03.10일자 - TIL  (0) 2026.03.10
26.03.09일자 - TIL  (0) 2026.03.09