๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 4 : ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ์ ํต์ฌ : 1. ๊ธฐ๋ณธ์ ๊ณต ํ์ ์ ๊ฐ์ฒด๋ ์ง์ ์์ผ๋ก ์ด๊ธฐํํ์. 2. ์์ฑ์์์๋, ์์ฑ์ ๋ณธ๋ฌธ ๋ด๋ฌด์ ๋ฐ์ดํฐ ๋ฉค๋ฒ์ ๋ํ ๋์ ๋ฌธ์ ๋ฃ์ง ์๊ณ ์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์. ๋ํ ๋ฐ์ดํฐ ๋ฉค๋ฒ๊ฐ ์ ์ธ๋ ์์์ ๋๊ฐ์ด ๋์ดํ์. 3. ์ฌ๋ฌ ๋ฒ์ญ ๋จ์์ ์๋ ๋น์ง์ญ ์ ์ ๊ฐ์ฒด๋ค์ ์ด๊ธฐํ ์์ ๋ฌธ์ ๋ ํผํด์ ์ค๊ณํด์ผ ํ๋ค. ๋น์ง์ญ ์ ์ ๊ฐ์ฒด๋ฅผ ์ง์ญ ์ ์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๋ฉด ๋๋ค. ์์ฑ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฐ๋ ๊ฒ์, ์์ฑ๊ณผ ๋์์ '์ด๊ธฐํ' ํ๋ ๊ฒ์ด ์๋, '๋์ '์ ํํ๋ ๊ฒ์ด๋ค. class Us..
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 3 : ๋์๋ง ๋ณด์ด๋ฉด const ๋ฅผ ๋ค์ด๋ ๋ณด์! ํต์ฌ : 1. const ๋ฅผ ๋ถ์ฌ ์ ์ธํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉ์์ ์๋ฌ๋ฅผ ์ก์๋ด๋ ๋ฐ ๋์์ ์ค๋ค. const ๋ ์ด๋ค ์ ํจ๋ฒ์์ ์๋ ๊ฐ์ฒด์๋ ๋ถ์ ์ ์์ผ๋ฉฐ, ํจ์ ๋งค๊ฐ๋ณ์ ๋ฐ ๋ฐํ ํ์ ์๋ ๋ถ์ ์ ์์ผ๋ฉฐ, ๋ฉค๋ฒ ํจ์์๋ ๋ถ์ ์ ์๋ค. 2. ์ปดํ์ผ๋ฌ ์ชฝ์์ ๋ณด๋ฉด ๋นํธ์์ค ์์์ฑ์ ์ง์ผ์ผ ํ์ง๋ง, ์ฐ๋ฆฌ๋ ๊ฐ๋ ์ ์ธ(๋ ผ๋ฆฌ์ ์ธ) ์์์ฑ์ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋๋ฐํด์ผ ํ๋ค. 3. ์์ ๋ฉค๋ฒ ๋น ๋น์์ ๋ฉค๋ฒ ํจ์๊ฐ ๊ธฐ๋ฅ์ ์ผ๋ก ์๋ก ๋๊ฐ๊ฒ ๊ตฌํ๋์ด ์์ ๊ฒฝ์ฐ์๋ ์ฝ๋ ์ค๋ณต์ ํผํ๋ ๊ฒ์ด ์ข์๋ฐ, ์ด๋..
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 2 : #define ์ ์ฐ๋ ค๊ฑฐ๋ const, enum, inline ์ ๋ ์ฌ๋ฆฌ์ ํต์ฌ : 1. ๋จ์ํ ์์๋ฅผ ์ธ ๋๋, #define ๋ณด๋ค const ๊ฐ์ฒด ํน์ enum ์ ์ฐ์ ์๊ฐํ์. 2. ํจ์์ฒ๋ผ ์ฐ์ด๋ ๋งคํฌ๋ก๋ฅผ ๋ง๋ค๋ ค๋ฉด, #define ๋งคํฌ๋ก๋ณด๋ค ์ธ๋ผ์ธ ํจ์๋ฅผ ์ฐ์ ์๊ฐํ์. ํญ๋ชฉ 2์ ํต์ฌ์, ๊ฐ๊ธ์ ์ ํ ์ฒ๋ฆฌ์๋ณด๋ค๋ ์ปดํ์ผ๋ฌ์ ์นํ๊ฒ ์ง๋ด๋ ๊ฒ ์ข๋ค๋ ๊ฒ์ด๋ค. ๋ค์๊ณผ ๊ฐ์ ์๋ฅผ ๋ณด์. #define ASPECT_RATIO 1.653 ์์ ๊ฒฝ์ฐ, ํด๋น ๋ถ๋ถ์ ๋๋ฒ๊น ํ ๋, ASPECT_RATIO ๋ ์ปดํ์ผ๋ฌ๊ฐ ์ฐ๋ ๊ธฐํธ ํ ..
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 1 : C++ ๋ฅผ ์ธ์ด๋ค์ ์ฐํฉ์ฒด๋ก ๋ฐ๋ผ๋ณด๋ ์๋ชฉ์ ํ์ ํต์ฌ : 1. C++ ๋ฅผ ์ฌ์ฉํ ํจ๊ณผ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๊ท์น์, C++ ์ ์ด๋ค ๋ถ๋ถ์ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค! C++ ์ ์ด๋ฃจ๊ณ ์๋ ํ์ ์์ (Building Block) ์ ํฌ๊ฒ 4 ๊ฐ์ง์ด๋ค. C (C ์๋ ํ ํ๋ฆฟ๋ ์๊ณ , ์์ธ๋ ์๊ณ , ์ค๋ฒ๋ก๋ฉ๋ ์๋ค) ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ์ C++ (ํด๋์ค๋ฅผ ์ฐ๋ C ์ ๊ดํ ๋ชจ๋ ๊ฒ๋ค. ์บก์ํ, ์์, ๋คํ์ฑ, ๊ฐ์ํจ์ ๋ฑ) ํ ํ๋ฆฟ C++ (ํ ํ๋ฆฟ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ๊น์ง) STL (container, iterator, algorithm, fu..
์ด๋์ฐ๋์ '์ด๋์ฐ์ ๊ฒ์์ํ' ์ฑ ์ ๋ณด๋ฉฐ ์ข์ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด, ์ฑ ์ ๊ตฌ๋งคํด ์ง์ ์ฝ์ด๋ณด์๊ธฐ๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค! ์ผ๊ฐํจ์๋ฅผ ํ์ฉํ ๋ฌผ์ฒด์ ํ์ ์ผ๊ฐํจ์๋ฅผ ํตํด ๋ฌผ์ฒด๋ฅผ ํ์ ํ๋ฉด ์ขํ๊ฐ์ด ์ด๋ป๊ฒ ๋ณํ ๊น? ๋จผ์ , ๋ค์๊ณผ ๊ฐ์ด ์ขํ (1, 1) ์ θ ๋งํผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ ค์ง๊ฒ ๋๋ค. ์์์, ๋ฒกํฐ v ๋ ๊ธฐ์ ๋ฒกํฐ e1 ์ e2 ์ ํฉ์ผ๋ก ํํ๋๋ฉฐ, ์ด๋ฅผ ๊ฐ θ ๋งํผ ํ์ ์ํจ ๋ ์์ (cosθ - sinθ, sinθ + cosθ) ๋ก ํํํ ์ ์์์ ์ ์ ์๋ค. ๋์ผํ ์๋ฆฌ๋ก, ์์์ ๋ฒกํฐ (x, y) ๋ฅผ ๊ฐ θ ๋งํผ ํ์ ์์ผ (x', y') ๋ฅผ ๊ตฌํด๋ณด์. ์์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์๋ค. ๊ธฐ์ ๋ฒกํฐ๋ฅผ ํ์ฉํ๋ฉด, ์์์ ๋ฒกํฐ u ๋ฅผ ๊ฐ θ ๋ง..
๋จผ์ Message Pump ๋, ํ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ค ๋ฉ์์ง ํ๋ก๋ถํฐ ๋ค๋ฅธ ๋ฉ์์ง๋ฅผ ๊บผ๋ด ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์๋ฏธํ๋ค. ์๋์ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, UI ๋ฐ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ๋ฉ์์ง ํํ๋ฅผ ์ ๊ทน ํ์ฉํ๊ณ ์๋ค. ๊ธฐ์ด์ ์ธ Message Loop ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } ๊ทธ๋ฐ๋ฐ GetMessage ์ ๊ฒฝ์ฐ ๋ฐ๋ํ์(๋ฉ์์งํ์ ๋ฉ์์ง๊ฐ ์์ด GetMessage ๊ฐ ๋๊ณ ์๋ ์๊ฐ)์ ์ ๋๋ก ํ์ฉํ ์ ์์ด, PeekMessage ๋ฅผ ๋ง์ด ํ์ฉํ๋ค. PeekMessage ๋ ๋ฉ์์ง ํ์ ๋ฉ์์ง๊ฐ ์๋ ์๋ ๋ฆฌํด์ ํ๊ธฐ ๋๋ฌธ..
Actor ์ ActorComponent ์ ๋ํฐ์์๋ ๊ฒ์ ์ค๋ธ์ ํธ ์๋์ ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ๋ฃ๋ ์์ผ๋ก Hierarchy ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค. ํ์ง๋ง ์ธ๋ฆฌ์ผ์ ๊ทธ๋ฐ ์์ผ๋ก ๋์ํ์ง ์๋๋ค. ์ ๋ํฐ์์๋ ํญ๊ณต๊ธฐ๊ฐ ์๋ค๊ณ ํ์ ๋, ํ๋ฆฌํน์ ๊ฐ์ข ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ํ์์ ๋ฃ์ด ์กฐํฉํ๋ ๋ฐฉ์์ผ๋ก ํด๋น ์ค๋ธ์ ํธ๋ฅผ ์ ์ํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ธ๋ฆฌ์ผ์์ Actor ๋ Bucket ๊ฐ์ ๊ฐ๋ ์ผ๋ก, ๋ค์ํ ์กํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ด๊ณ ์๋ค. ์ฆ, ์ธ๋ฆฌ์ผ์ Bucket ์์ ๋ค๋ฅธ Bucket ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ์ง ์๋๋ค. ์กํฐ ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์ ์ํ๋ ์ปดํฌ๋ํธ์ ๋ํ ๋ฒ ์ด์ค ํด๋์ค๋ก ์ถฉ๋, ๋ฉ์, ์๋ ์ด๋, ์๋ฆฌ ์ฌ์, ๋น๊ณผ ๋ช ์ ๋ฑ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ์ธ๋ฆฌ์ผ์์๋ ํธ๋์คํผ์ ๊ฐ์ง ์กํฐ ์ปด..
์ธ๋ฆฌ์ผ ์ฝ๋ฉ ํ์ค ๋ช ๋ช ๊ท์น : ํ์ค์นผ์ผ์ด์ค, ์ ๋์ฌ(U - UObject ์์ /A - AActor ์์ /S - SWidget ์์ / C - ์ํฝ์ ๊ฐ๋ ์ด ์ ์ฌ / b - ๋ถ์ธ ๋ณ์ / F - ๊ทธ ์ธ ๋๋ถ๋ถ) ํฌํฐ๋ธ C++ ์ฝ๋ : bool(ํฌ๊ธฐ ์ถ์ ๊ธ์ง, BOOL ์ ์ปดํ์ผ ์๋จ), TCHAR, uint8, int8, uint(16, 32, 64 ๋ฒ์ ) , float, double, PTRINT(ํฌ์ธํฐ๋ฅผ ๊ฐ์ง ์ ์๋ ์ ์, ํฌ๊ธฐ ์ถ์ ๊ธ์ง) ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ : ํ์ค ์ปจํ ์ด๋์ ์คํธ๋ง์ interop ์ฝ๋๋ฅผ ์ ์ธํ๊ณ ์ฌ์ฉํ์ง ๋ง์์ผ ํจ ์ฝ๋ฉํธ : ์ฝ๋๋ ๊ตฌํ์ ์ค๋ช ํ๊ณ , ์ฝ๋ฉํธ๋ ๊ทธ ์๋๋ฅผ ์ค๋ช ํ๋ค. ์ต์ C++ ์ธ์ด ๋ฌธ๋ฒ : static_assert ์ฌ์ฉ, override ๋ฐ final ์ฌ..
์ธ๋ฆฌ์ผ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC) ์ฌํ ์ ๋ฆฌ ์ธ๋ฆฌ์ผ ์์ง์ Reference Graph ๋ฅผ ๋ง๋ค์ด ์ค๋ธ์ ํธ๋ค์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๊ตฌ๋ถํ๋ค. ์ด ๊ทธ๋ํ ๋ฃจํธ์๋ "Root Set" ์ด๋ผ๊ณ ์ง์ ๋ ์ค๋ธ์ ํธ ์ ์ด ์์ผ๋ฉฐ, "Root Set" ์ ํฌํจ๋ ๊ฐ์ฒด๋ค์ GC ๋์์์ ์ ์ธ๋๋ค(Mark & Sweep ๋ฐฉ์์ผ๋ก ์ถ์ ). ์ธ ๊ฐ์ง ๊ท์น : UPROPERTY ์ ์ธ : ํด๋์ค ๋ด๋ถ ๋ฉค๋ฒ ๋ณ์๊ฐ ํด๋์ค์ ๊ฐ์ฒด์ ์๋ช ๊ณผ ์ด๋ช ์ ํจ๊ปํ ๊ฒฝ์ฐ ์ ์ธ ๋ฉค๋ฒ๊ฐ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ : ์์ง์ด ์ธ์ํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ๋ฆฌํค๋๋ก ๋ง๋ค๋ฉด ์๋จ TArray ๋ฅผ ํ์ฉ : UObject ๋๋ ์์๋ค์ ๋ํ ํฌ์ธํฐ๋ฅผ ์์ ํ๊ฒ ๋ด์ ์ ์๋ ์ ์ผํ ์ปจํ ์ด๋ ๊ธฐํ ์ธํฐํ์ด์ค ์์ : // Object ๋ฅผ ์ด์์๊ฒ ๋ง๋๋ 3๊ฐ์ง ๋ฐฉ๋ฒ; //..
UML (Unified Modeling Language) UML ์๋ Class, Sequence, Use Case, Component ๋ฑ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ง๋ง, ์ฌ๊ธฐ์๋ ์ฃผ๋ก Class ์ Sequence ๋ค์ด์ด๊ทธ๋จ์ ์ ๋ฆฌํ๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ (Class Diagram) ํด๋์ค๋ค ์ฌ์ด์ ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ด ํํ๋ ์ ์๋ค(์ฐธ๊ณ ๋งํฌ). ๊ฐ ๊ด๊ณ๋ฅผ ์กฐ๊ธ ๋ ์์ธํ ๊ธฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ๊ด๊ณ ํ์ ์ค๋ช ์ฐ๊ด ๊ด๊ณ (association) ์ค์ ์ด๋ ํ์ดํ ์ฐ๊ด ๊ด๊ณ๋ ์ค๋ ์๊ฐ ๋์ ๊ฐ์ดํ ๊ฐ์ฒด์์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค(e.g. ์๋์ฐจ์ ์์ ์์ ๊ด๊ณ) ๋ณดํต ํด๋์ค์ ์์ฑ(๋ฉค๋ฒ ๋ณ์)์์ ์ฐธ์กฐํ ๋ ์ฐ๊ด ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค. ๋จ๋ฐฉํฅ ์ฐ๊ด ๊ด๊ณ์ ๊ฒฝ์ฐ, ํ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค๋ฅผ ์ฐธ์กฐํ๋ค. ์๋ฐฉํฅ ์ฐ๊ด ๊ด๊ณ์ ๊ฒฝ์ฐ..