[TIL] 250826

๊น€์„ธํฌยท2025๋…„ 8์›” 26์ผ

โœ๏ธToday I Learned

๐Ÿ“… 2025-08-26

  • ์–ธ๋ฆฌ์–ผ ํŽ˜์Šคํƒ€ 2์ผ์ฐจ
  • Property Replication ๊ณผ ๊ด€๋ จ ์†์„ฑ

์–ธ๋ฆฌ์–ผ ํŽ˜์Šคํƒ€ 2์ผ์ฐจ

์ดํ”„์„ ์…‹

VFX ์—…์ฒด๊ฐ€ ๋งŒ๋“  ์˜คํ”ˆ์›”๋“œ ์ƒ์กด ๊ฒŒ์ž„
95% ๋ธ”๋ฃจํ”„๋ฆฐํŠธ 5% - ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด
๋””์ž์ด๋„ˆ๋“ค์ด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋กœ ์–ด๋–ป๊ฒŒ ์—์…‹๊ณผ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”์ง€

  • ์›”๋“œํŒŒํ‹ฐ์…˜์œผ๋กœ ํŠน์ • ๋ฒ”์œ„๋งŒํผ๋งŒ ๋กœ๋“œ
  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋กœ ๋ ˆ๋ฒจ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ, ์˜คํ”ˆ์›”๋“œ๋ผ ์„œ๋ธŒ๋ ˆ๋ฒจ์ด ๋ง‰ํ˜€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค๊ณ  ํ•จ
  • ๋™๊ธฐ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€์ง€๋งŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™œ์„ฑํ™”
  • bpp, pcg, ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ํˆด
  • ์•กํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ํ•„์š” ์†์„ฑ์„ ์—๋””ํ„ฐ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•จ
  • spline์œผ๋กœ ๋ฐฐ์น˜ํ•œ ํ›„ ์„ธ๋ถ€ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด ๋ ˆ๋ฒจ์— ์‰ฝ๊ฒŒ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์—…

๋‚˜์ด์•„๊ฐ€๋ผ

Advanced Niagara: No-Prticle Emitters. ํŒŒํ‹ฐํด ์—†์ด ํšจ๊ณผ ๊ตฌํ˜„
Simulation Stages: ์ปค์Šคํ…€ ๋ฃจํ”„๋ฅผ ๋‚˜์ด์•„๊ฐ€๋ผ์—์„œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ. cascade ์ด์ƒ์˜ ๋ฐฉ์‹
Grids: ๋‚˜์ด์•„๊ฐ€๋ผ์— ์–ด๋–ค ์ •๋ณด๋“  ์ €์žฅ ๊ฐ€๋Šฅ.
Data Interfaces: ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์ด์•„๊ฐ€๋ผ์— ๋กœ๋”ฉํ•˜๋Š” ๋ฐฉ์‹.
Particle Readers: ํŒŒํ‹ฐํด์—๊ฒŒ ์–ด๋–ค ์ •๋ณด๋“ ์ง€ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

๋‚˜์ด์•„๊ฐ€๋ผ ๋ฃจํ”„: ์ดํ„ฐ๋ ˆ์ด์…˜ ์นด์šดํŠธ๊ฐ€ ๋ช‡์ด๋˜ ์ด ์นด์šดํŠธ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋‹ค์‹œ ๋ฐ˜๋ณต
๋‚˜์ด์•„๊ฐ€๋ผ์—์„œ ์•„์›ƒํ’‹ ๋ Œ๋” ํƒ€๊ฒŸ์„ ํ•  ์ˆ˜ ์žˆ์Œ. ํŒŒํ‹ฐํด์— ๋ Œ๋” ์ •๋ณด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋“  ๊ทธ๋ฆฌ๋“œ๋Š” ๋ชจ๋“  ํŒŒํ‹ฐํด์„ ๋ฐ”๋ผ๋ณด๊ณ ์žˆ์Œ->์ด ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋„ค์ด๋ฒ„ ๊ทธ๋ฆฌ๋“œ ์‚ฌ์šฉ
๋„ค์ด๋ฒ„ ๊ทธ๋ฆฌ๋“œ: ๋‹ค๋ฅธ ํŒŒํ‹ฐํด์—๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค ์ •๋ณด ์ €์žฅ. ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํŠน์ • ํŒŒํ‹ฐํด๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


Property Replication

NetLoadOnClient

ํ•ด๋‹น ์†์„ฑ์ด true์ธ ์•กํ„ฐ๋Š” ์„œ๋ฒ„์—์„œ ์Šคํฐ ํ˜ธ์ถœ์ด ์—†์–ด๋„ ๋ ˆ๋ฒจ์ด ๋กœ๋“œ๋  ๋•Œ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๊ธฐ ์ชฝ์—์„œ ์ž๋™์œผ๋กœ ์Šคํฐํ•œ๋‹ค.
๋ ˆ๋ฒจ์— ๊ณ ์ •์ ์œผ๋กœ ๋ฐฐ์น˜๋˜๋Š” ์•กํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์Šค์Šค๋กœ ์Šคํฐํ•˜๋„๋ก ํ•œ๋‹ค.

Replication Notify

์†์„ฑ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด ํด๋ผ์ด์–ธํŠธ์— ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœํ•œ๋‹ค.
ReplicatedUsing ํ‚ค์›Œ๋“œ๋กœ ์ •์˜ํ•œ๋‹ค.
์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋ฆฌํ”Œ๋ ‰์…˜ ์‹œ์Šคํ…œ์ด ๋“ฑ๋กํ•˜๊ณ  ์ ‘๋‘์‚ฌ OnRep_์„ ํ•„์ˆ˜์ ์œผ๋กœ ๋ถ™์ธ๋‹ค.
์„œ๋ฒ„์—์„œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์‹คํ–‰๋œ๋‹ค. ์„œ๋ฒ„์—์„œ๋„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค.

private:
	UFUNCTION()
	void OnRep_ServerRotationYaw();

protected:
	//UPROPERTY(Replicated)
	UPROPERTY(ReplicatedUsing = OnRep_ServerRotationYaw)
	float ServerRotationYaw;

NetUpdateFrequency

์•กํ„ฐ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นˆ๋„์˜ ์ตœ๋Œ€์น˜. 1์ดˆ์— ๋ช‡๋ฒˆ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ๋„ํ• ์ง€์— ๋Œ€ํ•œ ๊ฐ’(๊ธฐ๋ณธ๊ฐ’: 100)
ํ•ด๋‹น ๋นˆ๋„๋ฅผ ํ•ญ์ƒ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
์ฃผ์š” ์•กํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’

  • Actor: 100
  • Pawn: 100
  • PlayerController: 100
  • GameState: 10
  • PlayerState: 1

์˜ˆ์ธก์„ ํ†ตํ•œ ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์„œ๋ฒ„์—์„œ ์ „์†ก์„ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ•˜๋˜ ๊ฒƒ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ „์†กํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ. ๊ทธ ์‚ฌ์ด ๋™์ž‘์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋‹ค์Œ ๊ฐ’์„ ์˜ˆ์ธกํ•˜์—ฌ ๋ณด๊ฐ„ํ•œ๋‹ค.

๊ฐœ๋ฐœํ•  ๋•Œ ๋ฌด์กฐ๊ฑด ์ตœ์ ํ™” ๋จผ์ € ํ•˜์ง€ ๋ง๊ณ  ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค์–ด๋ณธ ์ดํ›„์— ์ ์šฉํ• ์ง€ ๊ฒฐ์ •. ์ด๊ฒƒ์„ ๊ณ„์† ์“ธ์ง€ ์žฅ๋‹ดํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ๋กœ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์— ์ง„ํ–‰ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.


Relevancy

์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ ์ปค๋„ฅ์…˜๊ณผ ์—ฐ๊ด€์ด ์žˆ๋Š” ์•กํ„ฐ๋งŒ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•œ๋‹ค.

์•กํ„ฐ ํด๋ž˜์Šค ์—ฐ๊ด€์„ฑ ํŒ๋‹จ ๊ธฐ์ค€

Owner

  • ํ•ด๋‹น ์•กํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์•กํ„ฐ. ํ•ด๋‹น ์•กํ„ฐ์™€ Owner๋Š” ์—ฐ๊ด€์„ฑ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จ.
  • ex) ๋ฌด๊ธฐ ์•กํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์บ๋ฆญํ„ฐ

Instigator

  • ํ•ด๋‹น ์•กํ„ฐ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ผ์นœ ํฐ. ํ•ด๋‹น ์•กํ„ฐ์™€ Instigator๋Š” ์—ฐ๊ด€์„ฑ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จ.
  • ex) ๋ฐ๋ฏธ์ง€๋ฅผ ๊ฐ€ํ•œ ํฐ

AlwaysRelevant

  • ํ•ด๋‹น ์•กํ„ฐ๊ฐ€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ•ญ์ƒ ์—ฐ๊ด€์„ฑ์ด ์žˆ๊ฒŒ ์„ค์ •
  • ex) ๋ณด์Šค ๋ชฌ์Šคํ„ฐ

NetUseOwnerRelevancy

  • ์˜ค๋„ˆ ์•กํ„ฐ์˜ ์—ฐ๊ด€์„ฑ์œผ๋กœ ํ•ด๋‹น ์•กํ„ฐ์˜ ์—ฐ๊ด€์„ฑ์„ ๋Œ€์‹ ํ•  ๋•Œ ์‚ฌ์šฉ

OnlyRelevantToOwner

  • ์˜ค๋„ˆ ์•กํ„ฐ์—๊ฒŒ๋งŒ ์—ฐ๊ด€์„ฑ์„ ๊ฐ–๋Š”๋‹ค. (๋‹ค๋ฅธ ์•กํ„ฐ์™€๋Š” ์—ฐ๊ด€์„ฑ ์—†์Œ)

NetCullDistance

  • ๋ทฐ์–ด์™€์˜ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ์—ฐ๊ด€์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

ํฐ ํด๋ž˜์Šค ์—ฐ๊ด€์„ฑ ํŒ๋‹จ ๊ธฐ์ค€

Viewer

  • ํด๋ผ์ด์–ธํŠธ ์ปค๋„ฅ์…˜์ด ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋Ÿฌ

ViewTarget

  • ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋น™์˜ํ•œ ํฐ.

NetPriority

ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ผ ์•กํ„ฐ์˜ ์ „์†ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ฐ’์ด ํด์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
์•กํ„ฐ์˜ ํ˜„์žฌ NetPriority ์†์„ฑ ๊ฐ’์€ AActor::GetNetPriority() ํ•จ์ˆ˜์—์„œ ๊ณ„์‚ฐ๋œ๋‹ค.

ํฌํ™”์ƒํƒœ
์•กํ„ฐ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๋Œ€์—ญํญ์„ ๋„˜์–ด์„  ๊ฒฝ์šฐ๋ฅผ ํฌํ™” ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค. ํ˜„์žฌ NetPriority ๊ฐ’์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์•กํ„ฐ๋Š” ๋‹ค์Œ ์„œ๋ฒ„ ํ‹ฑ์—์„œ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜๋œ๋‹ค.


NetDormancy

ํœด๋ฉด ์ƒํƒœ. ์•กํ„ฐ๊ฐ€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ดํŠธ ๋˜์—ˆ์ง€๋งŒ ์ž์ฃผ ์ˆ˜์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํœด๋ฉด ์ƒํƒœ๋กœ ์„ค์ •ํ•˜๋ฉด ๋”์ด์ƒ ํ”„๋กœํผํ‹ฐ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ RPC๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ž์ฃผ ์ˆ˜์ •๋˜๋Š” ์•กํ„ฐ๋ฅผ ํœด๋ฉด ์ƒํƒœ๋กœ ๋‘๋ฉด ๋ ˆํ”Œ๋ฆฌ์ผ€์ดํŠธ๋ฅผ ๊ณ„์† ์‹œ๋„ํ•˜๊ณ  ์‹คํŒจํ•˜๋Š”๊ฒŒ ๋ฐ˜๋ณต๋˜๋ฉฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋„คํŠธ์›Œํฌ ํœด๋ฉด ์ƒํƒœ

DORM_Never
์ ˆ๋Œ€ ํœด๋ฉดX.
DORM_Awake
ํœด๋ฉด ์ƒํƒœX. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์ƒ. (๋‹ค์‹œ ํœด๋ฉด ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ƒํƒœ)
DORM_Initial
ํœด๋ฉด ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๊นจ์šธ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ.
DORM_DormantAll
๋ชจ๋“  ์ปค๋„ฅ์…˜์—๊ฒŒ ํœด๋ฉด ์ƒํƒœ.

Conditional Property Replication

DOREPLIFETIME
ํ•œ๋ฒˆ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋“ฑ๋ก๋˜๋ฉด ๋‹ค์‹œ ํ•ด์ œํ•  ์ˆ˜ ์—†๋‹ค.

DOREPLIFETIME_CONDITION
์–ด๋–ค ํด๋ผ์ด์–ธํŠธ ์ปค๋„ฅ์…˜์œผ๋กœ๋งŒ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ• ์ง€ ๋“ฑ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋“ฑ๋ก๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์กฐ๊ฑด์‹์„ ํ†ตํ•ด ์ข€ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก ๋А๋‚€ ์  (What I Felt)

์–ธ๋ฆฌ์–ผ ํŽ˜์Šคํƒ€ 2์ผ์ฐจ์—์„œ๋Š” ๋‚˜์ด์•„๊ฐ€๋ผ์™€ ๊ฐ™์€ ๋ Œ๋”๋ง ๊ด€๋ จ ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ์ด ๋‚˜์™”๋‹ค. ๊ด€์‹ฌ์žˆ๋Š” ์ฃผ์ œ์˜€๋Š”๋ฐ ๋‚ด๊ฐ€ ๊ธฐ๋ณธ๊ธฐ๊ฐ€ ์ข€ ๋” ์žˆ์—ˆ๋‹ค๋ฉด ๋” ์™€๋‹ฟ์•˜์„ํ…๋ฐ ํ•˜๋Š” ์•„์‰ฌ์›€์ด ๋‚จ์•˜๋‹ค.


์ถœ์ฒ˜: 2025 ์–ธ๋ฆฌ์–ผ ํŽ˜์Šคํƒ€
์ถœ์ฒ˜: ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

0๊ฐœ์˜ ๋Œ“๊ธ€