Post

2026-07-13 TIL (96์ผ์ฐจ)

2026-07-13 TIL (96์ผ์ฐจ)

๐Ÿ“ TIL โ€” 2026.07.13 (์ผ) : EOS ํด๋ผ์ด์–ธํŠธ ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ํ™•์ •๊ธฐ

ํ•œ ์ค„ ์š”์•ฝ

DeviceID ์ต๋ช… ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•˜๋‹ค ์–ธ๋ฆฌ์–ผ ์—”์ง„ ์Šคํ†ก ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ•œ๊ณ„๋ฅผ ํ™•์ธํ•˜๊ณ , EAS(์—ํ”ฝ ๊ณ„์ • ์„œ๋น„์Šค) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋„๋ฉ”์ธ ์ธ์ฆ ์—†์ด๋„ ์ดˆ์•ˆ(Draft) ๋ชจ๋“œ๋กœ ๋™์ž‘ํ•จ์„ ๋ฐœ๊ฒฌํ•˜์—ฌ accountportal(๋ธŒ๋ผ์šฐ์ € ๋กœ๊ทธ์ธ) ๋ฐฉ์‹์œผ๋กœ ์ตœ์ข… ํ™•์ •ํ•จ. ์Šค์ฝ”ํ”„(Scope) ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊นŒ์ง€ ์žก์•„๋‚ด์–ด ๋กœ๊ทธ์ธ ํ”Œ๋กœ์šฐ ์™„์„ฑ.

์˜ค๋Š˜์˜ ๋ชฉํ‘œ

  • ํŒ€์›์—๊ฒŒ .exe๋งŒ ๋ฐฐํฌํ•˜๋ฉด ๋ณ„๋„ ๋„๊ตฌ(DevAuthTool) ์—†์ด ์•Œ์•„์„œ ๋กœ๊ทธ์ธ๋˜๊ณ  ๋ฐฉ ์ƒ์„ฑ/์ฐธ๊ฐ€๊ฐ€ ๋˜๋Š” ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ.
  • ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ํ›„๋ณด: DeviceID(์ต๋ช…, ์ฐฝ ์—†์Œ) vs accountportal(์—ํ”ฝ ๊ณ„์ •, ๋ธŒ๋ผ์šฐ์ € ์ฐฝ)

์ง„ํ–‰ ๋‚ด์šฉ (์‹œ๊ฐ„์ˆœ)

1. INI ์ž๋ฆฌํ‘œ์‹œ์ž ์‚ฌ๊ณ  โ†’ EOS ์ดˆ๊ธฐํ™” ์‹คํŒจ ๋””๋ฒ„๊น…

  • ํ˜„์ƒ: ์ฒซ ์‹คํ–‰์—์„œ ClientCredentials.ClientId must be an ANSI string between 1 and 64 in length + EOS_NotConfigured ์—๋Ÿฌ ๋ฐœ์ƒ.
  • ์›์ธ: DefaultEngine.ini์˜ Artifacts์— ์‹ค์ œ ์ž๊ฒฉ์ฆ๋ช… ๋Œ€์‹  ํ•œ๊ธ€ ์ž๋ฆฌํ‘œ์‹œ์ž(โ€œํด๋ผ์šฉ_ClientIdโ€)๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด์žˆ์—ˆ์Œ.
  • ๋ถ„์„: EOS ์ดˆ๊ธฐํ™”๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์กฐ์šฉํžˆ Null(LAN) ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ ํด๋ฐฑ(Fallback)ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋กœ๊ทธ๋กœ ํ™•์ธ. (FindSessions ์‹œ์ž‘ (LAN=1)์ด ๊ทธ ์ฆ๊ฑฐ)
  • ๊ตํ›ˆ: LAN=0/1 ๋กœ๊ทธ ํ•œ ์ค„์ด ํ˜„์žฌ ์–ด๋–ค ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ ๋Œ๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ํ™•์‹คํ•œ ์ง€ํ‘œ๋‹ค.

2. DeviceID ๋กœ๊ทธ์ธ ์‹œ๋„์™€ ์ขŒ์ดˆ

๋ชฉํ‘œ๋Š” โ€œ์ฐฝ ์—†๋Š” ์™„์ „ ์ž๋™ ๋กœ๊ทธ์ธโ€์ด์—ˆ์œผ๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ•œ๊ณ„๋กœ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•จ.

  • ์‹œ๋„ ๋‚ด์—ญ:
    • Dev Portal: GameClient ์ •์ฑ…์„ Custom์œผ๋กœ ์ „ํ™˜, Sessions ๊ถŒํ•œ ์ˆ˜๋™ ๊ตฌ์„ฑ.
    • INI: bUseEAS=false, bUseEOSConnect=true
    • ์ฝ”๋“œ: FOnlineAccountCredentials์— deviceid, externalauth ๋“ฑ ์—ฌ๋Ÿฌ ํƒ€์ž… ๋ฌธ์ž์—ด ์‹œ๋„ โ†’ ์ „๋ถ€ External Auth Token Type not specified ์‹คํŒจ.
  • ์—”์ง„ ์†Œ์Šค ์ง์ ‘ ๋ถ„์„ (UserManagerEOS.cpp) ๊ฒฐ๊ณผ:
    1. Login()์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ CallEOSConnectLogin() ๊ฒฝ๋กœ๋กœ ์ •์ƒ ๋ถ„๊ธฐํ•˜๊ณ  ์žˆ์—ˆ์Œ.
    2. ํ•˜์ง€๋งŒ CallEOSConnectLogin()์€ Type ๋ฌธ์ž์—ด์„ ์ฝœ๋ก ์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” externalauth:<์™ธ๋ถ€ํƒ€์ž…> ํ˜•์‹์„ ๊ฐ•์ œ ์š”๊ตฌํ•จ.
    3. ๊ฒฐ์ •์  ์›์ธ: ํŒŒ์ผ ์ „์ฒด์— deviceid ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ 0๊ฑด. ์ฆ‰, ์Šคํ†ก(๊ธฐ๋ณธ) ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” DeviceID๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ง„์ž…์  ์ž์ฒด๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š์Œ.
  • ์šฐํšŒ ์‹œ๋„ ๋ฐ ํฌ๊ธฐ: SDK ์ง์ ‘ ํ˜ธ์ถœ(EOS_Connect_CreateDeviceId)์„ ์œ„ํ•ด IOnlineSubsystemEOS::GetEOSPlatformHandle()์„ ์“ฐ๋ ค ํ–ˆ์œผ๋‚˜, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„๋ถ€๊ฐ€ Private์œผ๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ์–ด ์ž‘์—…๋Ÿ‰ ๋Œ€๋น„ ๋ฆฌ์Šคํฌ๊ฐ€ ํฌ๋‹ค๊ณ  ํŒ๋‹จ.
  • ๊ตํ›ˆ & ๋ณด์ถฉ: ์Šคํ†ก OSS EOS ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ Connect(NoEAS) ๊ฒฝ๋กœ๋Š” Steam ๋“ฑ โ€˜ํƒ€ ํ”Œ๋žซํผ์˜ ๋„ค์ดํ‹ฐ๋ธŒ ํ† ํฐโ€™ ์—ฐ๋™์„ ์ „์ œ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ DeviceID ๋กœ๊ทธ์ธ์„ ์›ํ•œ๋‹ค๋ฉด ์ปค์Šคํ…€ C++ ๋ž˜ํผ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, Redpoint Games์˜ EOS ํ”Œ๋Ÿฌ๊ทธ์ธ(๋ฌด๋ฃŒ) ๊ฐ™์€ ์„œ๋“œํŒŒํ‹ฐ ํ™•์žฅ์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

3. ๋ฐฉํ–ฅ ์ „ํ™˜: EAS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ ์„ฑ๊ณต (๋„๋ฉ”์ธ ์—†์ด!)

  • ํ˜„์ƒ: ์ด์ „์—๋Š” ๋„๋ฉ”์ธ ์ธ์ฆ(DNS TXT ๋ ˆ์ฝ”๋“œ)์—์„œ ๋ง‰ํ˜”๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Œ.
  • ํ•ด๊ฒฐ: ๋ธŒ๋žœ๋“œ ์„ค์ •์„ โ€˜๋ฏธ์™„์„ฑโ€™์œผ๋กœ ๋‘๊ณ ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ + ๊ถŒํ•œ + ์—ฐ๋™ ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•จ์„ ํ™•์ธ.
  • ์ตœ์ข… ์ƒํƒœ: ๊ถŒํ•œ โœ… (Basic Profile๋งŒ) / ์—ฐ๋™๋œ ํด๋ผ์ด์–ธํŠธ โœ… (GameClient๋งŒ) / ๋ธŒ๋žœ๋“œ ์„ค์ • ๋ฏธ๊ตฌ์„ฑ(์ดˆ์•ˆ)
  • ๊ฒฐ๊ณผ: โ€˜์ดˆ์•ˆ(Draft) ๋ชจ๋“œโ€™์—์„œ๋Š” ๋„๋ฉ”์ธ ์ธ์ฆ์ด๋‚˜ ๋ธŒ๋žœ๋“œ ๋ฆฌ๋ทฐ ์—†์ด๋„ ๋กœ๊ทธ์ธ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ฐ€๋กœ ์œ ์ €์—๊ฒŒ โ€œํ™•์ธ๋˜์ง€ ์•Š์€ ์•ฑโ€ ๋…ธ๋ž€์ƒ‰ ๊ฒฝ๊ณ  ํŽ˜์ด์ง€๊ฐ€ ํ•˜๋‚˜ ๋œจ์ง€๋งŒ(๊ณ„์† ์ง„ํ–‰ ๊ฐ€๋Šฅ), ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ถœ์‹œ ์ „์—๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์œผ๋ฉด ๋จ)

4. ์Šค์ฝ”ํ”„ ๋ถˆ์ผ์น˜ โ€” friends_list 403 ์—๋Ÿฌ

  • ํ˜„์ƒ: accountportal ๋กœ๊ทธ์ธ ์ฐฝ๊นŒ์ง€ ๋„๋‹ฌํ–ˆ์œผ๋‚˜ โ€œํด๋ผ์ด์–ธํŠธ์— ๋‹ค์Œ์˜ ๋ฒ”์ฃผ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค: friends_listโ€ ์—๋Ÿฌ ๋ฐœ์ƒ.
  • ์›์ธ: ์—๋””ํ„ฐ GUI(Project Settings)๋กœ ์„ค์ •์„ ์ €์žฅํ•˜๋ฉด์„œ AuthScopeFlags์— BasicProfile, FriendsList, Presence 3๊ฐœ๊ฐ€ ์ž๋™ ๊ธฐ๋ก๋จ. EAS ์•ฑ ์„ค์ •์—์„œ๋Š” BasicProfile๋งŒ ํ—ˆ์šฉํ–ˆ์œผ๋ฏ€๋กœ ์š”์ฒญ > ํ—ˆ์šฉ ์ƒํƒœ๊ฐ€ ๋˜์–ด ํŠ•๊น€.
  • ํ•ด๊ฒฐ: INI ํŒŒ์ผ์—์„œ ๋ฐฐ์—ด์„ ๋น„์šฐ๊ณ  ํ•˜๋‚˜๋งŒ ๋ช…์‹œ์ ์œผ๋กœ ๋“ฑ๋ก.

    1
    2
    
    !AuthScopeFlags=ClearArray
    +AuthScopeFlags=BasicProfile
    

๊ตํ›ˆ: ๊ฒŒ์ž„์ด ์š”์ฒญํ•˜๋Š” ์Šค์ฝ”ํ”„์™€ EAS ์•ฑ์ด ํ—ˆ์šฉํ•˜๋Š” ์Šค์ฝ”ํ”„๋Š” 100% ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋กœ๊ทธ์ธ ํ›„ SDK๊ฐ€ ์ž๋™์œผ๋กœ ์นœ๊ตฌ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋‹ค ๋ฐœ์ƒํ•˜๋Š” insufficient_scopes 403 Warning์€ ๋กœ๊ทธ์ธ์€ ์„ฑ๊ณตํ•œ ์ƒํƒœ์ด๋ฏ€๋กœ ๋ฌด์‹œํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.)

5. ๋กœ๊ทธ์ธ ์„ฑ๊ณต & ๋™์ž‘ ํ”Œ๋กœ์šฐ ์ •๋ฆฌ

ํ”„๋กœ์„ธ์Šค์ธ์ฆ ๋ฐฉ์‹์ฐฝ ํ‘œ์‹œ๋น„๊ณ 
๋ฐ๋””์„œ๋ฒ„TrustedServer ์ž๊ฒฉ์ฆ๋ช…์—†์Œ์„œ๋ฒ„๋Š” ๋กœ๊ทธ์ธ ๊ฐœ๋… ์ž์ฒด๊ฐ€ ์—†์Œ. (User required ํ•ด์ œ)
ํด๋ผ ์ตœ์ดˆ ์‹คํ–‰accountportal (๋ธŒ๋ผ์šฐ์ €)1ํšŒ ๋œธ์—ํ”ฝ ๊ณ„์ • ๋กœ๊ทธ์ธ
ํด๋ผ ์žฌ์‹คํ–‰persistentauth (์ €์žฅ ํ† ํฐ)์—†์Œํ…Œ์ŠคํŠธ ํ™•์‹ค์„ฑ์„ ์œ„ํ•ด ์ดํ›„ ์ •์ฑ… ๋ณ€๊ฒฝ์œผ๋กœ ์ œ๊ฑฐํ•จ

6. ์œ ๋ น ์„ธ์…˜ ๋ฌธ์ œ (Ghost Sessions)

  • ํ˜„์ƒ: ๋ฐฉ ๋ชฉ๋ก์— โ€˜CrazyRoo Room 4/4 0msโ€™๊ฐ€ 2๊ฐœ์”ฉ ๋‚จ์•„์žˆ๋Š” ํ˜„์ƒ ๋ฐœ์ƒ.
  • ์›์ธ: ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•˜๋ฉด DestroySession์ด ์‹คํ–‰๋˜์ง€ ์•Š์•„ EOS ๋ฐฑ์—”๋“œ์— ์„ธ์…˜/์ฐธ๊ฐ€ ์Šฌ๋กฏ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์Œ.
  • ํ•ด๊ฒฐ:
    • ์ž”์—ฌ UnrealEditor ํ”„๋กœ์„ธ์Šค ํ™•์ธ ๋ฐ ์ข…๋ฃŒ ํ›„ ๋Œ€๊ธฐ.
    • Deinitialize() ๋“ฑ ์ •์ƒ ์ข…๋ฃŒ ๊ฒฝ๋กœ์— DestroySession(NAME_GameSession) ์ถ”๊ฐ€.

๋ณด์ถฉ: EOS ๋ฐฑ์—”๋“œ๋Š” ํ•˜ํŠธ๋น„ํŠธ(Heartbeat) ํ†ต์‹ ์ด ๋Š๊ธฐ๋ฉด ์ž๋™์œผ๋กœ ์„ธ์…˜์„ ์ฒญ์†Œํ•˜์ง€๋งŒ, ํƒ€์ž„์•„์›ƒ๊นŒ์ง€ ๋ณดํ†ต ์ˆ˜ ๋ถ„(2~3๋ถ„)์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘ ํฌ๋ž˜์‹œ๋กœ ์ธํ•œ ์œ ๋ น ์„ธ์…˜์€ ์ด ํƒ€์ž„์•„์›ƒ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

7. ๋กœ๊ทธ์ธ UX ๋ณ€๊ฒฝ: ํ•ญ์ƒ ๋ฌผ์–ด๋ณด๊ธฐ

  • ํ˜„์ƒ: persistentauth ์ž๋™ ๋กœ๊ทธ์ธ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋งค ์‹คํ–‰๋งˆ๋‹ค accountportal์„ ๋„์šฐ๋„๋ก ํ๋ฆ„ ๋ณ€๊ฒฝ.
  • ๋น„๊ณ : ๋‹จ, ๋ธŒ๋ผ์šฐ์ €์— ์—ํ”ฝ ์›น ๋กœ๊ทธ์ธ ์ฟ ํ‚ค๊ฐ€ ์‚ด์•„์žˆ์œผ๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์—†์ด โ€˜๋™์˜โ€™ ํ™”๋ฉด๋งŒ ์ง€๋‚˜๊ฐ€๊ฒŒ ๋จ. ์ด๋Š” ๊ฒŒ์ž„์ด ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋‹จ์˜ ์บ์‹œ ์˜์—ญ์ž„.

์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ํ•ต์‹ฌ

  1. OSS ์ถ”์ƒํ™”์˜ ๊ฒฝ๊ณ„: IOnlineIdentity::Login()์˜ ์ž๊ฒฉ์ฆ๋ช… ๋ฌธ์ž์—ด ํ•ด์„์€ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งˆ๋‹ค ๊ทœ์น™์ด ๋‹ค๋ฅด๋‹ค. ๋ง‰ํžˆ๋ฉด ์ถ”์ธกํ•˜์ง€ ๋ง๊ณ  ์—”์ง„ ์†Œ์Šค์—์„œ ์—๋Ÿฌ ๋ฌธ์ž์—ด์„ ์ง์ ‘ ๊ฒ€์ƒ‰ํ•˜๋ผ.
  2. EAS ์ดˆ์•ˆ(Draft) ๋ชจ๋“œ์˜ ์œ ์šฉ์„ฑ: ๋„๋ฉ”์ธ ์ธ์ฆ์ด๋‚˜ ๋ธŒ๋žœ๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ์—†์–ด๋„ ๊ถŒํ•œ๊ณผ ์—ฐ๋™ ํด๋ผ์ด์–ธํŠธ๋งŒ ๊ตฌ์„ฑํ•˜๋ฉด ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ์šฉ ๋กœ๊ทธ์ธ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.
  3. ๋ช…์‹œ์ ์ธ ์„ธ์…˜ ์ •๋ฆฌ: EOS ์„ธ์…˜์€ ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ ์‹œ ๋ฐฑ์—”๋“œ์— ์œ ๋ น์œผ๋กœ ๋‚จ๋Š”๋‹ค. ์ •์ƒ ์ข…๋ฃŒ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋ฐ˜๋“œ์‹œ DestroySession์„ ์‹ฌ์–ด๋‘์ž.

๋‹ค์Œ ํ•  ์ผ

  • ์œ ๋ น ๋ฐฉ ์†Œ๋ฉธ ํ™•์ธ ํ›„, ๋กœ์ปฌ ์„œ๋ฒ„ + ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐฉ ์ƒ์„ฑ/์ฐธ๊ฐ€ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ์ง„ํ–‰.
  • ํ˜„์žฌ ์ฝ”๋“œ/INI ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„ ์žฌํŒจํ‚ค์ง• โ†’ AWS EC2 ์—…๋กœ๋“œ โ†’ CreateSession ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ.
  • [์ค‘์š”] ํด๋ผ [๋ฐฉ ์ƒ์„ฑ] โ†’ AWS ์ ‘์† ์‹œ ClientTravel ์ฃผ์†Œ๊ฐ€ EC2์˜ โ€˜ํผ๋ธ”๋ฆญ IPโ€™์ธ์ง€ ๊ฒ€์ฆ. (NAT ํ™˜๊ฒฝ์ธ EC2 ํŠน์„ฑ์ƒ ์‚ฌ์„ค IP๊ฐ€ ์ฐํžŒ๋‹ค๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์˜ค๋ฒ„๋ผ์ด๋“œ ์ฝ”๋“œ ์ถ”๊ฐ€ ํ•„์š”)
  • Game Default Map = TitleMap ์„ค์ • ํ›„ ํด๋ผ ํŒจํ‚ค์ง• โ†’ ์ธ์ž ์—†์ด exe ์‹คํ–‰ ๊ฒ€์ฆ โ†’ ํŒ€์› ๋ฐฐํฌ.
  • Secret์ด ํฌํ•จ๋œ DefaultEngine.ini์˜ Git ์ปค๋ฐ‹ ์ •์ฑ… ๊ฒฐ์ • (๋ถ„๋ฆฌ/ignore ์ฒ˜๋ฆฌ ํ›„ ํ•„์š”์‹œ Secret ์žฌ๋ฐœ๊ธ‰).
  • ๋กœ๋น„ ์ด๋ฆ„ ํ‘œ์‹œ: PlayerState->GetPlayerName()์œผ๋กœ ์—ํ”ฝ ๋‹‰๋„ค์ž„์ด ์ •์ƒ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ง€๋Š”์ง€ ํ™•์ธ.
This post is licensed under CC BY 4.0 by the author.