โœ๏ธToday I Learned

๐Ÿ“… 2025-11-14

  • 2์ฃผ์ฐจ ์ž‘์—… ์ •๋ฆฌ

2์ฃผ์ฐจ ์ž‘์—… ์ •๋ฆฌ

๐ŸŽฏ ํ•ต์‹ฌ ๊ตฌํ˜„ ๋‚ด์šฉ

1. ๋ถ€ํŒจ๋„ ์‹œ์Šคํ…œ ์—ฐ๋™

  • ์ธ๋ฒคํ† ๋ฆฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ€ํŒจ๋„ ๊ด€๋ จ ๊ตฌํ˜„
    • ๋ถ€ํŒจ๋„ ๋งค๋‹ˆ์ € ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ตฌ๋… (OnDecayTick ๋ฐ”์ธ๋”ฉ)
    • OnDecayTick() ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๊ตฌํ˜„ - 1์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœ
    • ConvertToDecayedItem() ํ•จ์ˆ˜๋กœ ๋งŒ๋ฃŒ๋œ ์•„์ดํ…œ์„ ๋ถ€ํŒจ๋ฌผ๋กœ ๋ณ€ํ™˜
    • UpdateExpirationTime() ํ•จ์ˆ˜๋กœ ์•„์ดํ…œ ์Šคํƒ ์‹œ ๋งŒ๋ฃŒ ์‹œ๊ฐ ํ‰๊ท ๊ฐ’ ๊ณ„์‚ฐ
    • ๋ถ€ํŒจ๋ฌผ ์•„์ดํ…œ ์ •๋ณด ์บ์‹ฑ (CachedDecayedItemInfo)

2. ์ธ๋ฒคํ† ๋ฆฌ ์‹œ์Šคํ…œ ๋ฆฌํŒฉํ† ๋ง

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฐœ์„ 

    • ๊ธฐ์กด ์Šฌ๋กฏ ๊ตฌ์กฐ๋ฅผ FItemInstance ๊ตฌ์กฐ์ฒด ๊ธฐ๋ฐ˜์œผ๋กœ ์ „๋ฉด ์ˆ˜์ •
    • ๋งŒ๋ฃŒ ์‹œ๊ฐ„(ExpirationTime) ํ•„๋“œ ์ถ”๊ฐ€ ๋ฐ ํ™œ์šฉ
    • ์˜ค๋ž˜๋œ ์ค‘๋ณต ํ”„๋กœํผํ‹ฐ ์ œ๊ฑฐ
  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

    • AddItem ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ ์™„๋ฃŒ
    • TransferItem ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
    • ์†Œ๋ชจํ’ˆ ์•„์ดํ…œ ์‚ฌ์šฉ ์‹œ GameplayAbility ํ™œ์„ฑํ™” ์—ฐ๋™
    • ์„œ๋ฒ„ ๋„คํŠธ์›Œํฌ ๊ฐฑ์‹  (ForceNetUpdate ์ฃผ์„ ์ฒ˜๋ฆฌ - ํ…Œ์ŠคํŠธ ์ค‘)

3. UI ์‹œ์Šคํ…œ ๊ฐœ์„ 

  • HUD ์ดˆ๊ธฐํ™” ๋ฐ ๋™๊ธฐํ™”
    • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ HUD ์ดˆ๊ธฐํ™” ๊ตฌํ˜„
    • ํด๋ผ์ด์–ธํŠธ HUD ์—…๋ฐ์ดํŠธ ๋ฌธ์ œ ํ•ด๊ฒฐ โœ…
  • ์ธ๋ฒคํ† ๋ฆฌ UI ๊ธฐ๋Šฅ
    • ToggleInventory ํ•จ์ˆ˜ ๊ตฌํ˜„
    • ๊ฐ€๋ฐฉ ์‚ฌ์ด์ฆˆ ํ™•์žฅ ์‹œ ๋™์  ์Šฌ๋กฏ ์ถ”๊ฐ€ UI ๊ตฌํ˜„
  • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๊ฐœ์„ 
    • FSlotStructMaster ๊ด€๋ จ ์œ„์ ฏ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ
    • ์Šฌ๋กฏ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

4. ์ตœ์ ํ™” ๋ฐ ๋ฆฌํŒฉํ† ๋ง

  • ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์ฒ˜๋ฆฌ ๊ฐ„์†Œํ™” (HandleInventoryChanged())
  • OnInventoryInitialized ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์ถ”๊ฐ€
  • ๋ถ€ํŒจ๋„ ๋งค๋‹ˆ์ € ์บ์‹ฑ์œผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”

TSInventoryMasterComponent ์™„์„ฑ๋„ ํ‰๊ฐ€

๐Ÿ“Š ์ „์ฒด ์™„์„ฑ๋„: ์•ฝ 73%

์„ธ๋ถ€ ๋ถ„์„:

โœ… ์™„์ „ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ (์•ฝ 65%)

  1. ๋„คํŠธ์›Œํฌ ๋ฆฌํ”Œ๋ฆฌ์ผ€์ด์…˜ (100%)

    • DOREPLIFETIME ์„ค์ • ์™„๋ฃŒ
    • OnRep ์ฝœ๋ฐฑ ๊ตฌํ˜„
    • Server RPC (Validate + Implementation) ์™„๋ฒฝ ๊ตฌํ˜„
  2. ์ธ๋ฒคํ† ๋ฆฌ ๊ด€๋ฆฌ (95%)

    • ํ•ซํ‚ค/์žฅ๋น„/๊ฐ€๋ฐฉ ์ธ๋ฒคํ† ๋ฆฌ ์ดˆ๊ธฐํ™” โœ…
    • AddItem (์Šคํƒ ์ฒ˜๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ๋กœ์ง ํฌํ•จ) โœ…
    • RemoveItem โœ…
    • ์Šฌ๋กฏ ์กฐํšŒ/๊ฒ€์ฆ ํ•จ์ˆ˜ โœ…
  3. ์•„์ดํ…œ ์ด๋™ ์‹œ์Šคํ…œ (100%)

    • Internal_TransferItem (์Šคํƒ ์ฒ˜๋ฆฌ, ๊ตํ™˜) โœ…
    • ํƒ€์ž… ๊ฒ€์ฆ (CanPlaceItemInSlot) โœ…
    • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ง€์› โœ…
  4. ๊ฐ€๋ฐฉ ํ™•์žฅ ์‹œ์Šคํ…œ (100%)

    • ExpandBagInventory โœ…
    • ๊ฐ€๋ฐฉ ์•„์ดํ…œ ์‚ฌ์šฉ ๋กœ์ง โœ…
    • OnBagSizeChanged ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ โœ…
  5. ๋ถ€ํŒจ๋„ ์‹œ์Šคํ…œ ์—ฐ๋™ (100%)

    • OnDecayTick ์ฝœ๋ฐฑ โœ…
    • ConvertToDecayedItem โœ…
    • UpdateExpirationTime โœ…
    • ๋ถ€ํŒจ๋ฌผ ์บ์‹ฑ โœ…
  6. ์•„์ดํ…œ ์‚ฌ์šฉ (90%)

    • Internal_UseItem โœ…
    • GAS ์—ฐ๋™ (Ability ํ™œ์„ฑํ™”) โœ…
    • ๊ฐ€๋ฐฉ ์•„์ดํ…œ ํŠน์ˆ˜ ์ฒ˜๋ฆฌ โœ…

โš ๏ธ ๋ถ€๋ถ„ ๊ตฌํ˜„/TODO ํ•ญ๋ชฉ (์•ฝ 8%)

  1. ์žฅ๋น„ ์‹œ์Šคํ…œ (30%)

    • Equipment ์ธ๋ฒคํ† ๋ฆฌ ๊ตฌ์กฐ โœ…
    • ์Šฌ๋กฏ ํƒ€์ž… ๊ฒ€์ฆ โœ…
    • โŒ ์‹ค์ œ ์žฅ์ฐฉ/ํ•ด์ œ ๋กœ์ง (TODO ์ฃผ์„๋งŒ ์กด์žฌ)
    • โŒ ์žฅ๋น„ ํšจ๊ณผ ์ ์šฉ (์Šคํƒฏ, ๋Šฅ๋ ฅ์น˜ ๋ณ€ํ™” ๋“ฑ)
  2. ์›”๋“œ ์•„์ดํ…œ ๋“œ๋กญ (20%)

    • ServerDropItemToWorld RPC ๊ตฌ์กฐ โœ…
    • โŒ ์Šคํฐ ๋งค๋‹ˆ์ € ์—ฐ๋™ (TODO ์ฃผ์„)
  3. ๋„คํŠธ์›Œํฌ ์ตœ์ ํ™” (50%)

    • โš ๏ธ ForceNetUpdate() ์ „๋ถ€ ์ฃผ์„ ์ฒ˜๋ฆฌ
    • ์˜๋„์ ์ธ์ง€ ํ…Œ์ŠคํŠธ ์ค‘์ธ์ง€ ๋ถˆ๋ช…ํ™•

โŒ ๋ฏธ๊ตฌํ˜„ ๊ธฐ๋Šฅ (์•ฝ 27%)

  1. ์ปจํ…Œ์ด๋„ˆ/์ƒ์ž ์‹œ์Šคํ…œ (0%)

    • ์Šคํฌ๋Ÿผ ๋ฉ”๋ชจ์—์„œ "๋‹ค์Œ ํ•  ์ผ"๋กœ ์–ธ๊ธ‰
    • ํ˜„์žฌ ํ”Œ๋ ˆ์ด์–ด ์ธ๋ฒคํ† ๋ฆฌ๋งŒ ๊ตฌํ˜„๋จ
    • ์ปจํ…Œ์ด๋„ˆ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง ํ•„์š”
  2. ๋‚ด๊ตฌ๋„ ์‹œ์Šคํ…œ (0%)

    • ItemData.h์— ๋ฐ์ดํ„ฐ๋Š” ์กด์žฌ
    • ์ธ๋ฒคํ† ๋ฆฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‚ด๊ตฌ๋„ ๊ฐ์†Œ/๋ณต๊ตฌ ๋กœ์ง ์—†์Œ
    • ์žฅ๋น„/๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ๋‚ด๊ตฌ๋„ ์ฒ˜๋ฆฌ ํ•„์š”
  3. ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ํด๋ผ์ด์–ธํŠธ ํ”ผ๋“œ๋ฐฑ (40%)

    • ์„œ๋ฒ„ ์ธก ๊ฒ€์ฆ์€ ์ž˜ ๋˜์–ด ์žˆ์Œ
    • โŒ ํด๋ผ์ด์–ธํŠธ๋กœ์˜ ์‹คํŒจ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ถ€์กฑ
    • โŒ ์ธ๋ฒคํ† ๋ฆฌ ๊ฐ€๋“ ์ฐธ, ์ด๋™ ๋ถˆ๊ฐ€ ๋“ฑ์˜ UI ์•Œ๋ฆผ ์—†์Œ
  4. ์ถ”๊ฐ€ ํ•„์š” ๊ธฐ๋Šฅ

    • โŒ ์•„์ดํ…œ ์ •๋ ฌ ๊ธฐ๋Šฅ
    • โŒ ๋น ๋ฅธ ์ด๋™ (๋”๋ธ”ํด๋ฆญ ๋“ฑ)
    • โŒ ์•„์ดํ…œ ๋ถ„ํ•  UI

๐Ÿ’ก ์ข…ํ•ฉ ํ‰๊ฐ€

ํ˜„์žฌ ์ƒํƒœ: ์•ฝ 73% ์™„์„ฑ

  • ํ•ต์‹ฌ ํ”Œ๋ ˆ์ด์–ด ์ธ๋ฒคํ† ๋ฆฌ: 95% ์™„์„ฑ (๋งค์šฐ ์ž˜ ๊ตฌํ˜„๋จ)
  • ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๋„คํŠธ์›Œํฌ: 90% ์™„์„ฑ (ForceNetUpdate ์ฃผ์„ ์ฒ˜๋ฆฌ ํ™•์ธ ํ•„์š”)
  • ํ™•์žฅ ์‹œ์Šคํ…œ: 30% ์™„์„ฑ (๊ตฌ์กฐ๋งŒ ์žˆ๊ฑฐ๋‚˜ TODO)

๋‹ค์Œ ๋‹จ๊ณ„ ๊ถŒ์žฅ์‚ฌํ•ญ:
1. ๐Ÿ”ด ์šฐ์„ : ์ปจํ…Œ์ด๋„ˆ/์ƒ์ž ์ธ๋ฒคํ† ๋ฆฌ ๊ตฌํ˜„ (๊ณ„ํš๋œ ์ž‘์—…)
2. ๐ŸŸก ์ค‘์š”: ์žฅ๋น„ ์‹œ์Šคํ…œ ์™„์„ฑ (TODO ํ•ด๊ฒฐ)
3. ๐ŸŸก ์ค‘์š”: ์›”๋“œ ๋“œ๋กญ ์Šคํฐ ๋งค๋‹ˆ์ € ์—ฐ๋™
4. ๐ŸŸข ๊ฐœ์„ : ForceNetUpdate ์ฃผ์„ ์ฒ˜๋ฆฌ ์˜๋„ ํ™•์ธ
5. ๐ŸŸข ์žฅ๊ธฐ: ๋‚ด๊ตฌ๋„ ์‹œ์Šคํ…œ, ์—๋Ÿฌ ํ”ผ๋“œ๋ฐฑ UI

๊ฐ•์ :

  • ์ฝ”๋“œ ๊ตฌ์กฐ๊ฐ€ ๊น”๋”ํ•˜๊ณ  ๋ชจ๋“ˆํ™”๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์Œ
  • ๋„คํŠธ์›Œํฌ ๋ฆฌํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ๊ฐ€ ํƒ„ํƒ„ํ•จ
  • ๋ถ€ํŒจ๋„ ๊ฐ™์€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ๋„ ์ž˜ ํ†ตํ•ฉ๋จ

๊ฐœ์„ ์ :

  • TODO ํ•ญ๋ชฉ๋“ค ํ•ด๊ฒฐ ํ•„์š”
  • ํด๋ผ์ด์–ธํŠธ UX ๊ด€๋ จ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ถ”๊ฐ€ ํ•„์š”

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

์ฝ”๋“œ๋ž‘ ์ด๋ฒˆ์ฃผ ์Šคํฌ๋Ÿผ ๋‚ด์šฉ์œผ๋กœ AI๋ฅผ ์ด์šฉํ•ด ์™„์„ฑ๋„๋ฅผ ํ‰๊ฐ€ํ•ด๋ดค๋‹ค.
2์ฃผ์ฐจ๊นŒ์ง€ ํ•œ ์ž‘์—…์„ ์ •๋ฆฌํ•ด๋ณด๋‹ˆ ์–ด๋А ๋ถ€๋ถ„์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ• ์ง€ ํ•œ ๋ˆˆ์— ๋ณด์ธ๋‹ค.


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