Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1099)

KoreanFoodie's Study

์–ธ๋ฆฌ์–ผ ์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ (Core Redirect)

์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ž€? ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฉ‹์ง€๊ฒŒ ์™„์„ฑํ–ˆ๋Š”๋ฐ, ๋งŒ์•ฝ ๋ณ€์ˆ˜ ๋ช…์ด๋‚˜ ์• ์…‹ ๋ช…์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ํ•ด๋‹น ๋ณ€์ˆ˜๋‚˜ ์• ์…‹์„ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ „๋ถ€ ํ—ค์ง‘์–ด ๋†“๋Š” ๊ฒƒ์€ ์ƒ๋‹นํ•œ ๋‚ญ๋น„๋ฅผ ์ˆ˜๋ฐ˜ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” "๊ธฐ์กด ์ด๋ฆ„ -> ์ƒˆ๋กœ์šด ์ด๋ฆ„" ์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ '์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ' ์ด๋‹ค. ์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” DefaultEngine.ini ํŒŒ์ผ์ด๋‚˜, Default.ini ํŒŒ์ผ ๋“ฑ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. [CoreRedirects] +ClassRedirects=(OldName="Pawn",NewName="MyPawn",InstanceOnly=true) +ClassRedirects=(OldName="/Script/MyModule.MyOldClass",NewN..

Game Dev/Unreal C++ : Study 2022. 4. 4. 13:40
์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด (FName, FString, FText) ํด๋ž˜์Šค

์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด ํด๋ž˜์Šค ์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด ํด๋ž˜์Šค๋Š” 3 ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. (FName, FString, FText) ์ด ์ค‘, ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋Š” FString ์ด๋‹ค. ์ฐธ๊ณ  - ๋ฌธ์ž์—ด์˜ ๋ณ€ํ™˜ : ์ถœ์ฒ˜ FName ์€ FName(*FString) ๊ผด์„, FString ์€ .ToString( ) ๊ผด์„, FText ๋Š” FText::FromName( ) ๊ผด์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐํƒ€ ์„ธ๋ถ€ ๊ตฌํ˜„์€ ์†Œ์ œ๋ชฉ ๋งํฌ์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž. FName FName ์€ ์ฝ˜ํ…์ธ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์• ์…‹ ์ด๋ฆ„์„ ์ง€์„ ๋•Œ, ์Šค์ผˆ๋ ˆํƒˆ ๋ฉ”์‹œ์—์„œ ๋ณธ์— ์ ‘๊ทผํ•  ๋•Œ ๋“ฑ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. FName ์€ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋น„๊ตํ•˜์ง€ ์•Š๊ณ , ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ํ•ด์‹ฑํ•œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•œ ํ›„, index ๋กœ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํ‚ค๋กœ FName ์— ์ ‘๊ทผํ•˜๋Š” ์†๋„๊ฐ€ ..

Game Dev/Unreal C++ : Study 2022. 4. 1. 15:09
์–ธ๋ฆฌ์–ผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Unreal Garbage Collection)

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์–ธ๋ฆฌ์–ผ์—์„œ UProperty ๋ฅผ ๋ถ™์ธ ๊ฐ์ฒด๋Š” ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•จ์— ์žˆ์–ด ๋ฆฌํ”Œ๋ ‰์…˜ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์—”์ง„์ด ๊ฐ์ฒด์™€ ์†์„ฑ๊ฐ’์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„ ์‚ญ์ œํ•ด๋„ ๊ดœ์ฐฎ์€ ๊ฐ์ฒด๋“ค์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ๋Š” Reference Graph ๋ฅผ ๋งŒ๋“ค์–ด ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„ ๋ฃจํŠธ์—๋Š” "Root Set" ์ด๋ผ ์ง€์ •๋œ ์˜ค๋ธŒ์ ํŠธ ์…‹์ด ์กด์žฌํ•˜๋ฉฐ, "Root Set" ์— ํฌํ•จ๋œ ๊ฐ์ฒด๋“ค์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค. UObject::BaseUtility::AddToRoot ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ "Root Set" ์— ์ถ”๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ( ์˜ˆ์‹œ : UMyObject->AddToRo..

Game Dev/Unreal C++ : Study 2022. 4. 1. 14:49
์–ธ๋ฆฌ์–ผ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ(Unreal Smart Pointer) ์ •๋ฆฌ 1 : ์ข…๋ฅ˜, ์ด์ ๊ณผ ์˜ˆ์ œ

์Šค๋งˆํŠธ ํฌ์ธํ„ฐ 3๋Œ€์žฅ C++ ์—๋Š” ๋Œ€ํ‘œ์ ์ธ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ 3 ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์ด๋ฅผ T๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณตํ•œ๋‹ค. TUniquePtr TSharedPtr TWeakPointer ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ์™€ ๊ธฐ๋Šฅ์€ C++ ์™€ ๋น„์Šทํ•˜๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ ์ฐจ์ด๋งŒ ์ž ๊น ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ฉด, TUniquePtr : C++ ์—์„œ std::move ๋ฅผ ์ด์šฉํ•ด ์†Œ์œ ๊ถŒ์„ ์ด์ „ํ–ˆ๋‹ค๋ฉด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” MoveTemp ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. TSharedPtr : C++ ์—์„œ std::maked_shared ๋ฅผ ์ด์šฉํ–ˆ๋‹ค๋ฉด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” MakeShared ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•ด์ œ ์‹œ Reset( ) ์„ ํ˜ธ์ถœํ•œ๋‹ค. shared_ptr(new MyClass()) ๊ฐ™์€ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” MakeShareable ์„ ์‚ฌ์šฉํ•œ๋‹ค. MakeSharea..

Game Dev/Unreal C++ : Study 2022. 4. 1. 13:44
์–ธ๋ฆฌ์–ผ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜ (Unreal Serialization)

์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜์ด๋ผ๋Š” ๊ฐœ๋…์€, ํ…”๋ ˆํฌํŠธ์™€ ๊ฐ™๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. ํ…”๋ ˆํฌํŠธ๋กœ ์‚ฌ๋žŒ์„ ์ „์†กํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ…”๋ ˆํฌํ„ฐ๋Š” ์‚ฌ๋žŒ ์ „์ฒด๋ฅผ ์˜จ์ „ํžˆ ์ฃผ๊ณ ๋ฐ›๋Š” ํ˜•ํƒœ์ผ ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์ ˆ๋ฐ˜๋งŒ ๋ณด๋‚ธ๋‹ค๊ฑฐ๋‚˜, ๋‚˜๋ˆ ์„œ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. (๋‚˜๋ˆ ์„œ ๋ณด๋‚ด๋ฉด... ๊ทธ๊ฑด ํ…”๋ ˆํฌํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ด์ƒ๋ฌด๊ธฐ๊ฐ€ ์•„๋‹๊นŒ) ์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜์€ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•œ๋ฒˆ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด FArchive ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ํŒŒ์ผ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ชจ๋“  ๋งค์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ชจ๋“  ๋งค์ฒด๋Š” FArchive ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๊ตฌํ˜„ํ•œ๋‹ค. FArchive ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์“ฐ๊ธฐ/์ฝ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. FString FullPath = FString::Printf(..

Game Dev/Unreal C++ : Study 2022. 4. 1. 13:12
์–ธ๋ฆฌ์–ผ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์‹œ์Šคํ…œ (Unreal Delegate System)

๋ธ๋ฆฌ๊ฒŒ์ดํŠธ C# ์—์„œ๋Š” ๋ฐœํ–‰์ž-๊ตฌ๋…์ž(Publisher-Subscriber) ํŒจํ„ด์˜ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด, ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•œ ๊ฐ์ฒด๋Š” ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœํ–‰๋˜์—ˆ์„ ๋•Œ ์›ํ•˜๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ์•ž์„œ ์ด์•ผ๊ธฐํ•œ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฅธ ๋ง๋กœ "๋ธ๋ฆฌ๊ฒŒ์ดํŠธ"๋ผ๊ณ  ํ•œ๋‹ค. C++ ์—์„œ๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์‹œ์Šคํ…œ์ด ์—†์ง€๋งŒ, ์–ธ๋ฆฌ์–ผ์€ ์ž์ฒด์ ์œผ๋กœ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด์— ํ•จ์ˆ˜ ํฌ์ธํ„ฐ ๋“ฑ์„ ์ด์šฉํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๋ฉฐ ์•ˆ์ „ํ•˜๋‹ค. ๋Œ€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋‚˜ ์ด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์—†์–ด์ ธ๋„ ๋Œ€๋ฆฌ์ž๊ฐ€ ์ฒดํฌํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์ผํ•œ ํ˜•์„ ๊ฐ€์ง„ ํ•จ์ˆ˜ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋Œ€๋ฆฌ์ž๊ฐ€ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋™์‹œ์— ๋ชจ๋‘ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”..

Game Dev/Unreal C++ : Study 2022. 3. 31. 14:24
์–ธ๋ฆฌ์–ผ ๋Ÿฐํƒ€์ž„ ์• ์…‹ ๋กœ๋”ฉ ( + Soft Referencing)

ํ•˜๋“œ ๋ ˆํผ๋Ÿฐ์‹ฑ vs ์†Œํ”„ํŠธ ๋ ˆํผ๋Ÿฐ์‹ฑ CDO ์ƒ์„ฑ์‹œ, ์ƒ์„ฑ์ž์—์„œ ์• ์…‹์˜ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ConstructorHelpers ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์• ์…‹์„ ๋กœ๋“œํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒŒ์ž„ ์‹œ์ž‘ ์ „์— ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ, ์ „์ž์˜ ๊ฒฝ์šฐ๋ฅผ ํ•˜๋“œ ๋ ˆํผ๋Ÿฐ์‹ฑ(Hard Referencing), ํ›„์ž๋ฅผ ์†Œํ”„ํŠธ ๋ ˆํผ๋Ÿฐ์‹ฑ(Soft Referencing) ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์†Œํ”„ํŠธ ๋ ˆํผ๋Ÿฐ์‹ฑ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์‹œ ์• ์…‹์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ์—๋Š” FStringAssetReference ๊ตฌ์กฐ์ฒด๋ฅผ, ์• ์…‹์˜ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ์—๋Š” FStringClassReference ๊ตฌ์กฐ์ฒด์— ๊ฒฝ๋กœ ์ •๋ณด๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๋Ÿฌ ์• ์…‹์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” TArray ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ABPawn.h (๋กœ๋”ฉํ•œ ์• ์…‹์„ ์‹ค์ œ ์‚ฌ์šฉํ•  ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ..

Game Dev/Unreal C++ : Study 2022. 3. 31. 12:06