Background games redeemer ko KR - Rudokhvist/ArchiSteamFarm GitHub Wiki

๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ฒŒ์ž„ ๋“ฑ๋ก๊ธฐ

๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ฒŒ์ž„ ๋“ฑ๋ก๊ธฐ๋Š” ASF์˜ ํŠน๋ณ„ํ•œ ๋‚ด์žฅ๊ธฐ๋Šฅ์œผ๋กœ, ์ฃผ์–ด์ง„ Steam ํ‚ค(์™€ ์ด๋ฆ„)์˜ ์ง‘ํ•ฉ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํŠนํžˆ ๋“ฑ๋กํ•  ํ‚ค๊ฐ€ ๋งŽ์•„์„œ ์ „์ฒด ํ‚ค ๋“ฑ๋ก์™„๋ฃŒ ์ „์— RateLimited ์ƒํƒœ ๊ฐ€ ๋  ๊ฒƒ์ด ํ™•์‹คํ•œ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ฒŒ์ž„ ๋“ฑ๋ก๊ธฐ๋Š” ํ•œ๊ฐœ์˜ ๋ด‡ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋„๋ก ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, RedeemingPreferences๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ•„์š”ํ•˜๋‹ค๋ฉด redeem ๋ช…๋ น์–ด ์™€ ํ•จ๊ป˜ ํ˜น์€ ๋Œ€์‹ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋Š” ํŒŒ์ผ๊ณผ IPC์˜ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ

ASF๋Š” config ๋””๋ ‰ํ† ๋ฆฌ์˜ BotName.keys๋ผ๋Š” ํŒŒ์ผ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ BotName์€ ์‚ฌ์šฉํ•˜๋Š” ๋ด‡์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๊ฒŒ์ž„์˜ ์ด๋ฆ„๊ณผ ํ‚ค๊ฐ€ ํƒญ ๋ฌธ์ž๋กœ ์„œ๋กœ ๊ตฌ๋ถ„๋˜๊ณ  ์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๋๋‚˜๋Š” ๊ณ ์ •๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํƒญ์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋‹ค๋ฉด ์ฒซ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ๊ฒŒ์ž„์˜ ์ด๋ฆ„์œผ๋กœ, ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์€ ํ‚ค๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ, ์ค‘๊ฐ„์˜ ๋ชจ๋“  ๊ฒƒ์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

POSTAL 2    ABCDE-EFGHJ-IJKLM
Domino Craft VR 12345-67890-ZXCVB
A Week of Circus Terror POIUY-KJHGD-QWERT
Terraria    ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค   ์ด๊ฒƒ๋„๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค    ZXCVB-ASDFG-QWERT

๋Œ€์‹ , ํ‚ค๋งŒ ์žˆ๋Š” ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์€ ์ค„๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ASF๋Š” ์ •ํ™•ํ•œ ์ด๋ฆ„์„ ์ฑ„์›Œ๋„ฃ๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Steam์˜ ์‘๋‹ต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Steam์— ๋“ฑ๋ก๋˜๋Š” ํŒจํ‚ค์ง€๋Š” ํ™œ์„ฑํ™” ๋˜๋Š” ๊ฒŒ์ž„์˜ ๋…ผ๋ฆฌ๋ฅผ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ‚ค ํƒœ๊ทธ๋˜์ง€ ํ‚ค์— ์ด๋ฆ„์„ ์ง์ ‘ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ์ •ํ™•ํ•œ ๊ฒŒ์ž„์ด๋ฆ„์„ ๋ณผ ์ˆ˜๋„ ์žˆ๊ณ  Humble Indie Bundle 18 ๊ฐ™์€ ์ง€์ •๋œ ํŒจํ‚ค์ง€ ์ด๋ฆ„, ๋˜๋Š” Half-Life 4๊ฐ™์€ ์™„์ „ํžˆ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์ž ์žฌ์ ์œผ๋กœ ์•…์˜์ ์ธ ์ด๋ฆ„์ด ๋‚˜ํƒ€๋‚  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ABCDE-EFGHJ-IJKLM
12345-67890-ZXCVB
POIUY-KJHGD-QWERT
ZXCVB-ASDFG-QWERT

์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•œ ํ˜•์‹๊ณผ ์ƒ๊ด€์—†์ด ASF๋Š” ๋ด‡ ์‹œ์ž‘์‹œ๋‚˜ ์ดํ›„์˜ ์‹คํ–‰๋™์•ˆ ํ‚ค ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ๊ตฌ๋ฌธ๋ถ„์„๊ณผ ์ž˜๋ชป๋œ ํ•ญ๋ชฉ์˜ ์ƒ๋žต์ด ๋๋‚˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๊ฐ์ง€๋œ ๊ฒŒ์ž„์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋˜๋ฉฐ, BotName.keys ํŒŒ์ผ์€ config ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

IPC

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํ‚ค ํŒŒ์ผ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ•จ๊ป˜, ASF๋Š” ASF-ui๋ฅผ ํฌํ•จํ•œ ์–ด๋– ํ•œ IPC ๋„๊ตฌ์—์„œ๋„ ์‹คํ–‰๊ฐ€๋Šฅํ•œ GamesToRedeemInBackground **ASF API ๋์ **์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IPC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํƒญ ๋ฌธ์ž ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ง€์ • ๊ตฌ๋ถ„๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์ ˆํ•œ ๊ตฌ๋ฌธ๋ถ„์„์„ ์ง์ ‘ ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ์™„์ „ํžˆ ์‚ฌ์šฉ์žํ™”๋œ ์ž์‹ ๋งŒ์˜ ํ‚ค ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋“ฑ ๋” ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.


๋Œ€๊ธฐ์—ด

๊ฒŒ์ž„์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ASF๋Š” ๋ด‡์ด Steam ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ  ๋Œ€๊ธฐ์—ด์ด ๋น„์–ด์žˆ์ง€ ์•Š๋Š” ํ•œ ๊ณ„์† ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋Œ€๊ธฐ์—ด์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก์„ ์‹œ๋„ํ•˜๊ณ  RateLimited ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์€ ํ‚ค๋Š” ๋Œ€๊ธฐ์—ด์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” config ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. NoDetail, BadActivationCode, DuplicateActivationCode ๋“ฑ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐBotName.keys.used ํŒŒ์ผ์—, ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ BotName.keys.unused ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Steam ๋„คํŠธ์›Œํฌ๋Š” ํ‚ค์— ๋Œ€ํ•ด ์˜๋ฏธ์žˆ๋Š” ๊ฒŒ์ž„์ด๋ฆ„์˜ ํšŒ์‹ ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ASF๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒŒ์ž„ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ •์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์„œ ํ‚ค๋ฅผ ํƒœ๊ทธ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๊ณ„์ •์ด RateLimited ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์ฟจ๋‹ค์šด์ด ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ๋Œ€๊ธฐ์—ด์ด ์ž„์‹œ๋กœ ํ•œ์‹œ๊ฐ„๋™์•ˆ ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„์—, ๋ฉˆ์ถ”์—ˆ๋˜ ๊ณณ์—์„œ ์ „์ฒด ๋Œ€๊ธฐ์—ด์ด ๋นŒ๋•Œ๊นŒ์ง€ ๊ณผ์ •์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.


์˜ˆ์‹œ

100๊ฐœ์˜ ํ‚ค ๋ชฉ๋ก์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. ์ฒซ๋ฒˆ์งธ๋กœ ASF config ๋””๋ ‰ํ† ๋ฆฌ์— BotName.keys.new ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ํŒŒ์ผ์ด์–ด์„œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋ฅผ ํ•˜๋ฉด ์•ˆ๋˜๋ฏ€๋กœ, ASF๊ฐ€ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ž๋งˆ์ž ๊ฐ€์ ธ๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ผ์— .new ํ™•์žฅ์ž๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค.

์ด์ œ ํŒŒ์ผ์„ ์—ด์–ด์„œ 100๊ฐœ์˜ ํ‚ค๋ฅผ ์—ฌ๊ธฐ์— ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด ํ˜•์‹๋„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •์„ ํ•˜๊ณ  ๋‚˜๋ฉด BotName.keys.new ํŒŒ์ผ์€ ์ •ํ™•ํ•˜๊ฒŒ 100์ค„(ํ˜น์€ ๋งˆ์ง€๋ง‰ ์ค„๋ฐ”๊ฟˆ์œผ๋กœ 101์ค„)์ด๊ณ , ๋ชจ๋“  ์ค„์€ ๊ฒŒ์ž„์ด๋ฆ„\tํ‚ค\n์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ \t๋Š” ํƒญ ๋ฌธ์ž๋ฅผ, \n๋Š” ์ค„๋ฐ”๊ฟˆ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ASF๊ฐ€ ๊ฐ€์ ธ๊ฐ€๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ BotName.keys.new ํŒŒ์ผ์„ BotName.keys ์œผ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ค€๋น„๊ฐ€ ๋์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ์ˆœ๊ฐ„, ASF๋Š” ์žฌ์‹œ์ž‘ ์—†์ด ์ž๋™์œผ๋กœ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋ชจ๋“  ๊ฒŒ์ž„์ด ๊ตฌ๋ฌธ๋ถ„์„๋˜์–ด ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋˜๋ฉด ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

BotName.keys ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  IPC API ๋์ ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์›ํ•œ๋‹ค๋ฉด ๋‘ ๊ฒฝ์šฐ๋ฅผ ์กฐํ•ฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ์ข€ ์ง€๋‚˜๋ฉด BotName.keys.used์™€ BotName.keys.unused ํŒŒ์ผ์ด ์ƒ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ๋“ฑ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, BotName.keys.unused๋ฅผ BotName2.keys ํŒŒ์ผ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ฒซ๋ฒˆ์งธ ๋ด‡์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ‚ค๋ฅผ ๋‹ค๋ฅธ ๋ด‡์— ์ œ๊ณตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ˜น์€ ๋ฏธ์‚ฌ์šฉ ํ‚ค๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์— ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์„œ ๋ณด๊ด€ํ•ด ๋‘˜ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๊ธฐ ๋‚˜๋ฆ„์ž…๋‹ˆ๋‹ค. ASF๋Š” ๋Œ€๊ธฐ์—ด์„ ๊ณ„์† ๊ฒ€ํ† ํ•˜๋ฉฐ, ์ƒˆ ํ•ญ๋ชฉ์ด used์™€ unused ํŒŒ์ผ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํŒŒ์ผ๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋Œ€๊ธฐ์—ด์— ์™„์ „ํžˆ ๋นŒ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋Œ€๊ธฐ์—ด์ด ์™„์ „ํžˆ ๋น„๊ธฐ ์ „์— ์ € ํŒŒ์ผ์— ์ ‘๊ทผํ•ด์•ผ๋งŒ ํ•œ๋‹ค๋ฉด, ๋จผ์ € ๊ฒฐ๊ณผ๋ฌผ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ ๋“ฑ์œผ๋กœ ์ด๋™ํ•˜๊ณ , ๊ทธ๋‹ค์Œ์— ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์‹ญ์‹œ์˜ค. ASF๋Š” ๋‹น์‹ ์ด ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ์—๋„ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค ์ผ๋ถ€์˜ ์†์‹ค์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹น์‹ ์ด ํ‚ค๊ฐ€ 3๊ฐœ ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ์€ ํ›„ ์‚ญ์ œ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋™์•ˆ ASF๋Š” ๋‹น์‹ ์ด ์‚ญ์ œํ•œ ํŒŒ์ผ์— 4๊ฐœ์˜ ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋†“์ณ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์ € ํŒŒ์ผ๋“ค์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํŒŒ์ผ์„ ์ฝ๊ธฐ ์ „์— ASF config ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์˜ฎ๊ธฐ์‹ญ์‹œ์˜ค. ํ˜น์€ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”๋„ ๋ฉ๋‹ˆ๋‹ค.

๋Œ€๊ธฐ์—ด์— ๊ฒŒ์ž„์ด ์žˆ์„ ๋•Œ์—๋„ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ฒŒ์ž„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ASF๋Š” ์ด๋ฏธ ์ง„ํ–‰์ค‘์ธ ๋Œ€๊ธฐ์—ด์— ์ •์ƒ์ ์œผ๋กœ ๊ฒŒ์ž„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋น„๊ณ 

๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ‚ค ๋“ฑ๋ก๊ธฐ๋Š” OrderedDictionary๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ์ด๋‚˜ IPC API ํ˜ธ์ถœ์— ๋ช…์‹œ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค์˜ ์ˆœ์„œ๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€, ํ•œ ํ‚ค๋Š” ๋ชฉ๋ก์—์„œ ๊ทธ๋ณด๋‹ค ์œ„์— ์žˆ๋Š” ํ‚ค์— ์ง์ ‘ ์ข…์†์„ฑ์„ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชฉ๋ก์˜ ์•„๋ž˜์— ์žˆ๋Š” ํ‚ค์—๋Š” ํ•ด๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์ž„ G๋ฅผ ๋จผ์ € ํ™œ์„ฑํ™” ํ•ด์•ผํ•˜๋Š” DLC D๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ๊ฒŒ์ž„ G๊ฐ€ ํ•ญ์ƒ DLC D๋ณด๋‹ค ์•ž์ชฝ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, DLC D๊ฐ€ A, B, C์— ์ข…์†๋˜์–ด ์žˆ๋‹ค๋ฉด, 3๊ฐœ ๋ชจ๋‘๊ฐ€ ์•ž์ชฝ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(3๊ฐœ๊ฐ€ ์„œ๋กœ ์ข…์†์„ฑ์ด ์—†๋‹ค๋ฉด ์ˆœ์„œ๋Š” ์ƒ๊ด€์—†์Œ)

์œ„ ๋‚ด์šฉ์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ „์ฒด ๋Œ€๊ธฐ์—ด์„ ๊ฒ€ํ† ํ•œ ๋’ค์—๋Š” ํ™œ์„ฑํ™”๊ฐ€ ๊ฐ€๋Šฅํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  DLC๊ฐ€ DoesNotOwnRequiredApp ์ƒํƒœ๊ฐ€ ๋˜์–ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์„ ํ”ผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด DLC๋Š” ํ•ญ์ƒ ๊ธฐ๋ณธ๊ฒŒ์ž„์˜ ๋’ค์— ์žˆ๋„๋ก ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ