๐TIL - ํ์๊ณผ ์ํธ์์ฉ UX ์์ ํ
์ค๋์ ์ ๋ ๊ตฌํํ ๋ชจ๋ฅ๋ถ ๊ธฐ๋ฐ ๋น ๋ฅธ ์ด๋ ์์คํ ์ ์ค์ ํ๋ ์ด ํ๋ฆ์ ๋ง๊ฒ ํ์ฅํ๊ณ ์์ ํํ๋ค.
์์ ์ ์๋๋งต ํจ๋์ ๋ ๋๋ง ๋ฒ๊ทธ ์์ ์์ ์์ํ์ง๋ง, ์๋๋งต ์์ด์ฝ ํ์ ๋ฐฉ์, ๋น ๋ฅธ ์ด๋ ์ขํ ๋ณด์ , ํต์ฌ๋กฏ HUD, ์ ์ฅ ์ฌ๋กฏ UI, ์ ์ ์์คํ ๊น์ง ์ด์ด์ก๋ค. ๊ธฐ๋ฅ์ ๋จ์ํ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ์๋ก ๋ค๋ฅธ ์์คํ ์ด ๊ฐ์ ์ํ๋ฅผ ๋ฐ๋ผ๋ณด๋๋ก ์ฐ๊ฒฐํ๊ณ , ํ๋ ์ด์ด๊ฐ ํ์ฌ ์ํ๋ฅผ UI์์ ๋ช ํํ ํ์ธํ ์ ์๋๋ก ๋ง๋๋ ๋ฐ ์ง์คํ๋ค.
์๋๋งต ํจ๋์ ์ด์์ ๋ ๋งต ํ ์ค์ฒ๊ฐ ์ฝํ ์ธ ์์ญ์ ๋ฒ์ด๋ ํ์ดํ๋ฐ์ ํ ๋๋ฆฌ๊น์ง ๋ฎ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์์ธ์ GetMapViewRect์ ์๋ชป๋ fallback ์ฐธ์กฐ์๋ค. MapViewport๊ฐ ๋ฐ์ธ๋ฉ๋์ง ์์ ๊ฒฝ์ฐ ํจ๋ ์ ์ฒด ์์ญ์ธ HorizontalBox_Body๋ฅผ ๋งต ์์ญ์ผ๋ก ์ฌ์ฉํ๊ณ ์์๋ค. ์ด๋ฅผ ์ ๊ฑฐํ๊ณ , MapViewport๊ฐ ์์ผ๋ฉด MapViewportPadding์ ๊ธฐ์ค์ผ๋ก ์์ ํ๊ฒ ๊ณ์ฐํ๋๋ก ์์ ํ๋ค.
๋ํ NativePaint์์ ๋งต ์์ญ๊ณผ ์์ ฏ ์ ์ฒด ๊ฒฝ๊ณ์ ๊ต์งํฉ์ ํด๋ฆฌํ ์์ญ์ผ๋ก ์ฌ์ฉํ๋๋ก ๋ณด์ํ๋ค.
MapViewport ๋ฐ์ธ๋ฉ ์์
โ ์ค์ ๋งต ์ฝํ
์ธ ์์ญ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ
MapViewport ๋ฐ์ธ๋ฉ ์์
โ MapViewportPadding ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ
NativePaint
โ ๋งต ์์ญ โฉ ์์ ฏ ์ ์ฒด ์์ญ์ผ๋ก ํด๋ฆฌํ
๊ธฐ์ค๊ฐ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๊ณผ ์ต์ข ๋ ๋๋ง ๋ฒ์๋ฅผ ์ ํํ๋ ๊ฒ์ ์๋ก ๋ค๋ฅธ ์ญํ ์ด๋ค. ๋ ๋ฐฉ์ด์ ์ ํจ๊ป ๋๋ฉด์ ๋ ์ด์์์ด ๋ฐ๋๋๋ผ๋ ํ ์ค์ฒ๊ฐ ์์ ฏ ๋ฐ์ผ๋ก ๊ทธ๋ ค์ง์ง ์๋๋ก ํ๋ค.
๊ธฐ์กด ์๋๋งต์ ๋ฏธ๋๋งต๊ณผ ๋์ผํ bShowOnMinimap ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค. ํ์ง๋ง ๋ฏธ๋๋งต์ ์ฃผ๋ณ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ HUD์ด๊ณ , ์๋๋งต์ ์ ์ฒด ์ธ๊ณ๋ฅผ ํ์ํ๋ ๋๊ตฌ์ด๋ฏ๋ก ํ์ ์ ์ฑ
์ ๋ถ๋ฆฌํ ํ์๊ฐ ์์๋ค.
ํนํ World Partition ํ๊ฒฝ์์๋ ํ๋ ์ด์ด๊ฐ ๋ฐฉ๋ฌธํ์ง ์์ ์ง์ญ์ ์กํฐ๊ฐ ๋ก๋๋์ง ์๋๋ค. ๋ฐํ์ ์ปดํฌ๋ํธ ๋ฑ๋ก๋ง์ผ๋ก๋ ์ธ๋ก๋๋ ์ง์ญ์ ์์ด์ฝ์ ํ์ํ ์ ์์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋๋งต ์์ด์ฝ์ DataAsset ๊ธฐ๋ฐ ์ ์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌํ๋๋ก ๋ณ๊ฒฝํ๋ค.
์๋ํฐ์์ Refresh From Level ์คํ
โ ๋ ๋ฒจ์ ์์ด์ฝ ์ปดํฌ๋ํธ ์์ง
โ DA_WorldMapIcons ๊ฐฑ์
โ ์๋๋งต์ DataAsset์ ๊ธฐ์ค์ผ๋ก ์ ์ฒด ์์ด์ฝ ํ์
๋ชจ๋ฅ๋ถ๋ ๊ฐ์ ๊ฒฝ๋ก์ ํตํฉํ๋ค. ๋ชจ๋ ๋ชจ๋ฅ๋ถ ์์น๋ ์๋๋งต์ ํ์ํ๋, ๋น ๋ฅธ ์ด๋์ ํ์ฑํ๋ ๋ชจ๋ฅ๋ถ์์๋ง ๊ฐ๋ฅํ๋๋ก ์ญํ ์ ๋ถ๋ฆฌํ๋ค.
์ถ๊ฐ๋ก ๋ ๋๋ง๊ณผ ํด๋ฆญ ํ์ ์ด ์๋ก ๋ค๋ฅธ Rect๋ฅผ ์ฌ์ฉํ๋ฉด์ ์์ด์ฝ์ ๋๋ฌ๋ ๋ฐ์ํ์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค. NativePaint์์ ์ค์ ์ฌ์ฉํ ์ขํ๋ฅผ ์บ์ํ๊ณ ํํธ ํ
์คํธ์์๋ ๋์ผํ ๊ฐ์ ์ฌ์ฉํ๋๋ก ํต์ผํ๋ค.
๋น ๋ฅธ ์ด๋ ์งํ ์บ๋ฆญํฐ๊ฐ ๋ฐ๋ฅ์ด๋ ์ง์ค๋ฉํธ๋ฆฌ์ ๊ฒน์น๋ ํ์์ ๋์ฐฉ ์์น์ Z + 50 ์คํ์
์ ์ ์ฉํด ์ํํ๋ค.
์ ํฌ ์ค ํ๋ณต ์์ดํ
์ด๋ ๋ฒํ ์์ดํ
์ ๋น ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ธ๋ฒคํ ๋ฆฌ ์ฌ๋กฏ 4, 5๋ฅผ HUD ํต์ฌ๋กฏ๊ณผ ์ฐ๊ฒฐํ๋ค.
ํต์ฌ๋กฏ์ ๋ณ๋์ ์์ดํ
๋ณต์ฌ๋ณธ์ ๊ด๋ฆฌํ์ง ์๊ณ InventoryComponent์ ์ํ๋ฅผ ์กฐํํ๋ค.
InventoryComponent
โ ์ฌ๋กฏ 4, 5์ ์์ดํ
ID ๋ณด๊ด
QuickSlotBar
โ ์ฌ๋กฏ ์ํ ์กฐํ์ ์ํธ๋ฆฌ ๊ฐฑ์
QuickSlotEntry
โ ์์ด์ฝ, ์๋, ๋น ์ฌ๋กฏ ์ํ ํ์
๋น ์ฌ๋กฏ๋ ์ฌ๋ผ์ง์ง ์๊ณ ๋ฐฐ๊ฒฝ์ด ์ ์ง๋๋๋ก ์ฒ๋ฆฌํ๋ค. ํ๋ ์ด์ด ์ ์ฅ์์๋ ํ์ฌ ์ด๋ค ํค๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํญ์ ํ์ธํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๊ธฐ์๋ WBP_QuickSlotEntry ๋ด๋ถ๊ฐ ๋น CanvasPanel๋ฟ์ด๋ผ Desired Size๊ฐ 0x0์ผ๋ก ๊ณ์ฐ๋์ด HUD์ ํ์๋์ง ์์๋ค. Image_Icon๊ณผ Text_Count๋ฅผ ๋ฐฐ์นํ ๋ค ๊ฐ ์ํธ๋ฆฌ๊ฐ 64x64 ํฌ๊ธฐ๋ก ์ ์ ์์ฑ๋๋ ๊ฒ์ PIE์์ ํ์ธํ๋ค.
์ดํ ์ฅ์ ํ๋ ์, ์ฌ๋กฏ ๋ฒํธ, ์ํ ํ์๋ฅผ ๋ณ๋ ๋ ์ด์ด๋ก ๋๋ ๊ธฐ๋ฅ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ HUD ์คํ์ผ์ ํ์ฅํ ์ ์๋๋ก ์ ๋ฆฌํ๋ค.
๋ชจ๋ฅ๋ถ ๋ฉ๋ด์ ์ ์ฅ ๋ฒํผ์ด ๋ฐ์ํ์ง ์๋ ๋ฌธ์ ๋ฅผ ์ถ์ ํ ๊ฒฐ๊ณผ, InventoryComponent๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด ์ ์ฅ ๋ก์ง ์ ์ฒด๊ฐ ์ค๋จ๋๊ณ ์์๋ค.
์ ์ฅ์ ํต์ฌ ๋ฐ์ดํฐ์ธ ์์น์ HP๋ ์ธ๋ฒคํ ๋ฆฌ ์ ๋ฌด์ ๊ด๊ณ์์ด ์ ์ฅํ๊ณ , ์ธ๋ฒคํ ๋ฆฌ ๋ฐ์ดํฐ๋ง ์ปดํฌ๋ํธ๊ฐ ์์ ๋ ์ ํ์ ์ผ๋ก ๊ธฐ๋กํ๋๋ก ์ฑ ์์ ๋ถ๋ฆฌํ๋ค.
๋ชจ๋ฅ๋ถ ํ์ฑํ ์ ์๋ ์ ์ฅ์ด ์์ฑ๋์ง ์๋ ๋ฌธ์ ๋ ์์ ํ๋ค. Standalone ํ๊ฒฝ์์๋ ๊ถํ ์ฒดํฌ ๋๋ฌธ์ ํ๋ฆ์ด ๋งํ์ง ์๋๋ก ๋ถ๊ธฐํ๊ณ , ๋ฉํฐํ๋ ์ด ํ์ฅ ์์๋ ์๋ฒ RPC๋ก ๊ต์ฒดํ ์ ์๋ ์ง์ ์ ๋จ๊ฒผ๋ค.
๊ธฐ์กด์๋ ๋ชจ๋ ์ ์ฅ์ด RetrieveSave_Slot0 ํ๋๋ฅผ ๋ฎ์ด์ฐ๋ ๊ตฌ์กฐ์๋ค. ์ด๋ฅผ ์๋ ์ํ์ ํ๋ ์ด์ด ์๋ ์ ์ฅ์ผ๋ก ๋ถ๋ฆฌํ๋ค.
RetrieveSave_WorldState
โ ๋ชจ๋ฅ๋ถ ํ์ฑํ ์ํ ์๋ ์ ์ฅ
RetrieveSave_Slot0 ~ RetrieveSave_Slot4
โ ํ๋ ์ด์ด ์๋ ์ ์ฅ
๊ฐ ์ฌ๋กฏ์๋ ์ฌ๋กฏ ๋ฒํธ, ์ ์ฅ ์๊ฐ, ๋ชจ๋ฅ๋ถ ์ด๋ฆ์ ๊ธฐ๋กํ๋ค. UI์์๋ ๋์ ์ผ๋ก ์ฌ๋กฏ ๋ชฉ๋ก์ ์์ฑํ๊ณ , ์ ํ๋ ์ฌ๋กฏ์ ํ์ํ๋ฉฐ, ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์๋ ์ฌ๋กฏ์ ๋ฎ์ด์ธ ๋ ํ์ธ ํจ๋์ ๋ ธ์ถํ๋๋ก ๊ฐ์ ํ๋ค.
์ ์ ํญ์์ ๋ ์ํผ ๋ชฉ๋ก์ด ํ์๋์ง ์๋ ๋ฌธ์ ๋ CraftRecipeTable์ด ํ ๋น๋์ง ์์ ๋ฐ์ํ๋ค. ์ ์ UI๊ฐ ํ์ํ ๋ฐ์ดํฐ ํ
์ด๋ธ์ ์ง์ ์ฐธ์กฐํ๋๋ก ์ฐ๊ฒฐํด ์์กด์ฑ์ ๋ช
ํํ ํ๋ค.
๊ฐ ๋ ์ํผ ์ํธ๋ฆฌ์๋ RefreshDisplay()๋ฅผ ์ถ๊ฐํด ์ ์ ๊ฐ๋ฅ ์๋๊ณผ ์ ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ฆ์ ๋ณด์ฌ์ฃผ๋๋ก ํ๋ค.
์ ์ ๊ฐ๋ฅ
โ ๊ฐ์กฐ ์์์ผ๋ก ํ์
์ ์ ๋ถ๊ฐ
โ ํ๋ฆฐ ์์์ผ๋ก ํ์
์ ์ ๋ฒํผ ํด๋ฆญ
โ ์๋ ์ ํ ๋ค์ด์ผ๋ก๊ทธ ํ์
โ ์ ํํ ์๋๋งํผ ์ ์
๋ ์ํผ๊ฐ ๋ง์์ก์ ๋๋ฅผ ๋๋นํด ๊ฒ์๊ณผ โ์ ์ ๊ฐ๋ฅํ ํญ๋ชฉ๋ง ๋ณด๊ธฐโ ํํฐ๋ ์ถ๊ฐํ๋ค. ์ ์ฅ ์ฌ๋กฏ์๋ ์ ํ ํ์ดํ๋ฅผ ํ์ํ๊ณ , ๋ฎ์ด์ฐ๊ธฐ ์ ์๋ ํ์ธ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋ ธ์ถํด ์ค์๋ฅผ ๋ฐฉ์งํ๋ค.
์ธ๋ฒคํ ๋ฆฌ์๋ ์ฌ๋ฃ ํญ์ ํ์ฅํ๊ณ , UI ์๋ ๊ตฌ์ฑ ๊ณผ์ ์์ ๋จ์ TRASH_ ์์ ฏ์ ๊ฐ๋ณ ์ ๊ฑฐ์ ์์ ฏ ํธ๋ฆฌ ์ฌ๊ตฌ์ฑ์ผ๋ก ์ ๋ฆฌํ๋ค.
-์ค๋ ์์ ์ ๊ณตํต์ ์ ๊ธฐ๋ฅ ๊ตฌํ๋ณด๋ค ์ํ์ ๊ธฐ์ค์ ํ๋๋ก ํต์ผํ๊ณ , ํ๋ ์ด์ด์๊ฒ ๊ทธ ์ํ๋ฅผ ๋ช ํํ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด์๋ค.
- ์๋๋งต์ ๋ฏธ๋๋งต๊ณผ ๋ชฉ์ ์ด ๋ค๋ฅด๋ฏ๋ก ๋ณ๋ ์์ด์ฝ ์ ์ฑ ์ด ํ์ํ๊ณ , World Partition ํ๊ฒฝ์์๋ ๋ฐํ์ ์กํฐ๋ง ๋ฏฟ์ง ์๊ณ ์ ์ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ฅผ ์ค๋นํด์ผ ํ๋ค. ๋ ๋๋ง๊ณผ ํํธ ํ ์คํธ์ฒ๋ผ ๊ฐ์ ํ๋ฉด์ ๋ค๋ฃจ๋ ๋ก์ง์ ๋ฐ๋์ ๊ฐ์ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ๋ ๋ค์ ํ์ธํ๋ค.
- ์ ์ฅ ์์คํ ์์๋ ํ์ ๋ฐ์ดํฐ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ๋ฉด์ ์ผ๋ถ ์ปดํฌ๋ํธ๊ฐ ์์ด๋ ํต์ฌ ๊ธฐ๋ฅ์ด ์ค๋จ๋์ง ์๋๋ก ๋ง๋ค์๋ค. ๋จ์ผ ์ฌ๋กฏ์ ๋ฉํฐ์ฌ๋กฏ ๊ตฌ์กฐ๋ก ์ ํํ๊ณ ์๋ ์ํ์ ํ๋ ์ด์ด ์ ์ฅ์ ๋ถ๋ฆฌํ๋ ๊ธฐ๋ฅ ํ์ฅ๋ ์์ฐ์ค๋ฌ์์ก๋ค.
- UI๋ ๋ณด์ด๋ ์ฅ์์ด ์๋๋ผ ๊ธฐ๋ฅ์ ์ผ๋ถ์๋ค. ๋น ํต์ฌ๋กฏ, ์ ์ฅ ์ฌ๋กฏ ์ ํ ํ์, ๋ฎ์ด์ฐ๊ธฐ ํ์ธ, ์ ์ ๊ฐ๋ฅ ์ฌ๋ถ, ๊ฒ์๊ณผ ํํฐ์ฒ๋ผ ์์ ํผ๋๋ฐฑ์ด ๋ชจ์ฌ ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ ํ๋ฆ์ ๋ง๋ ๋ค.
- ๊ฒฐ๊ตญ ์ค๋์ ๋น ๋ฅธ ์ด๋, ์ ์ฅ, ์ ์, HUD๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ๊ตฌํํ ๊ฒ์ด ์๋๋ผ, ํ๋ ์ด์ด๊ฐ ํ์ํ๊ณ ์ค๋นํ๊ณ ๋ค์ ์ด์ด์ ํ๋ ์ดํ ์ ์๋ ํ๋์ ๊ฒฝํ์ผ๋ก ์ฐ๊ฒฐํ ๋ ์ด์๋ค.