-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Configuration ko KR
์ด ํ์ด์ง๋ ASF ํ๊ฒฝ์ค์ ์ ๋ํ ๋ด์ฉ์
๋๋ค. ์ด๋ config ๋๋ ํ ๋ฆฌ์ ๋ํ ์์ ํ ์ค๋ช
์ด๋ฉฐ, ASF๋ฅผ ๋น์ ์ ์
๋ง์ ๋ง๊ฒ ์กฐ์ ํ๊ฒ ํด์ค๋๋ค.
- ์๊ฐ
- ์น ๊ธฐ๋ฐ ํ๊ฒฝ์ค์ ์์ฑ๊ธฐ(ConfigGenerator)
- ASF-ui ์ค์
- ์๋ ํ๊ฒฝ์ค์
- ์ผ๋ฐ ํ๊ฒฝ์ค์
- ๋ด ํ๊ฒฝ์ค์
- ํ์ผ ๊ตฌ์กฐ
- JSON ๋งคํ
- ํธํ์ฑ ๋งคํ
- ํ๊ฒฝ์ค์ ํธํ์ฑ
- ์๋ ์ฌ์์
ASF ํ๊ฒฝ์ค์ ์ ๋๊ฐ์ ์ฃผ์ ๋ถ๋ถ์ผ๋ก ๋๋์ด์ง๋๋ค. ์ผ๋ฐ(ํ๋ก์ธ์ค) ํ๊ฒฝ์ค์ ๊ณผ ๋ชจ๋ ๋ด์ ํ๊ฒฝ์ค์ ์
๋๋ค. ๋ชจ๋ ๋ด์ ๊ฐ๊ฐ ๋ด์ด๋ฆ.json์ด๋ผ๋ ์ด๋ฆ์ ๋ด ํ๊ฒฝ์ค์ ํ์ผ์ ๊ฐ์ง๋๋ค. ๋ด์ด๋ฆ์ ๋ด์ ์ด๋ฆ์
๋๋ค. ASF ์ผ๋ฐ(ํ๋ก์ธ์ค) ์ค์ ์ ASF.json์ด๋ผ๋ ๋จ์ผ ํ์ผ์
๋๋ค.
๋ด์ ASF ํ๋ก์ธ์ค์ ์ฐธ์ฌํ๋ ๋จ์ผ ์คํ ๊ณ์ ์ ๋๋ค. ์ ์์ ์ผ๋ก ์๋ํ๊ธฐ ์ํด์ ASF๋ ์ต์ํ ํ๋ ์ด์์ ์ ์๋ ๋ด ์ธ์คํด์ค๊ฐ ํ์ํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ํ๋ ๋ด ์ธ์คํด์ค์ ๊ฐ์์ ํ์ ์์ต๋๋ค. ์ํ๋ ๋งํผ ๋ด(์คํ ๊ณ์ )์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ASF๋ ํ๊ฒฝ์ค์ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํ์ฌ JSON ํ์์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋์๊ฒ ์น์ํ๊ณ , ์ฝ์ ์ ์์ผ๋ฉฐ ํ๋ก๊ทธ๋จ์ ์ค์ ํ ์ ์๋ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ํ์์ ๋๋ค. ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. ASF๋ฅผ ์ค์ ํ๊ธฐ ์ํด JSON์ ์ ํ์๋ ์์ต๋๋ค. ์ด๋ค ์ข ๋ฅ์ bash ์คํฌ๋ฆฝํธ๋ก ASF ํ๊ฒฝ์ค์ ์ ๋๋์์ฑํ๊ธธ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ์ธ๊ธํ์ ๋ฟ์ ๋๋ค.
์ค์ ์ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ ์ ์์ต๋๋ค. ์ ํฌ์ **Web ๊ธฐ๋ฐ ConfigGenerator**๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ ASF์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ๋ก์ปฌ ์ฑ์ ๋๋ค. ASF ๋ด์์ ์ง์ ์ค์ ์ ์งํํ ์ ์๋ ์ ํฌ์ ASF-ui IPC ํ๋ก ํธ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์๋์ ๋ช ์๋ ๊ณ ์ ๋ JSON ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๊ธฐ๋ง ํ๋ฉด ์ธ์ ๋ ์ง ์ค์ ํ์ผ์ ์ง์ ์๋์ผ๋ก ์์ฑํ ์๋ ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ค์ ๊ณง์ด์ด ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ํฌ **Web ๊ธฐ๋ฐ ConfigGenerator**์ ๋ชฉ์ ์ ASF ์ค์ ํ์ผ ์์ฑ์ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ์ ์นํ์ ์ธ ํ๋ก ํธ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ์น ๊ธฐ๋ฐ ํ๊ฒฝ์ค์ ์์ฑ๊ธฐ๋ 100% ํด๋ผ์ด์ธํธ ๊ธฐ๋ฐ์
๋๋ค. ์ฆ ์
๋ ฅํ ์ธ๋ถ๋ด์ฉ์ ๋ค๋ฅธ ์ด๋๋ก๋ ๋ณด๋ด์ง์ง ์๊ณ ๋ก์ปฌ์์๋ง ์ฒ๋ฆฌ๋๋ค๋ ๋ป์
๋๋ค. ์ด๋ ๊ฒ ํด์ ๋ณด์์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๊ณ index.html ํ์ผ์ ๋น์ ์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ฉด ์คํ๋ผ์ธ ์ผ๋ก ์๋ํ ์๋ ์์ต๋๋ค.
์น ๊ธฐ๋ฐ ํ๊ฒฝ์ค์ ์์ฑ๊ธฐ๋ ํฌ๋กฌ๊ณผ ํ์ด์ดํญ์ค์์ ์ ์์๋๋จ์ ๊ฒ์ฆํ์์ต๋๋ค. ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ๋ฅํ ๋๋ถ๋ถ์ ์ ๋ช ํ ์น ๋ธ๋ผ์ฐ์ ์์๋ ์ ์์ ์ผ๋ก ์๋ํ ๊ฒ์ ๋๋ค.
์ฌ์ฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ ์ ํ ํญ์ ์ ํํด์ ์์ฑ์ ์ํ๋ ASF ๋๋ ๋ด ํ๊ฒฝ์ค์ ์ ์ ํํฉ๋๋ค. ASF ๋ฒ์ ๊ณผ ํ๊ฒฝ์ค์ ํ์ผ์ ๋ฒ์ ์ด ๋ง๋์ง ๋ค์ํ๋ฒ ํ์ธ ํ, ๋ชจ๋ ์ธ๋ถ๋ด์ฉ์ ์
๋ ฅํ๊ณ "๋ค์ด๋ก๋" ๋ฒํผ์ ๋๋ฆ
๋๋ค. ์ด ํ์ผ์ ASF์ config ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊น๋๋ค. ํ์ํ๋ค๋ฉด ๊ธฐ์กด์ ํ์ผ์ ๋ฎ์ด์ฐ๊ธฐ ํฉ๋๋ค. ๋งค ์ต์ข
์์ ๋ง๋ค ์ด๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ํ๊ฒฝ์ค์ ์์ ๊ฐ๋ฅํ ์ต์
์ ๋ํ ์ค๋ช
์ ์ด ์น์
์ ๋๋จธ์ง ๋ถ๋ถ์ ์ฐธ๊ณ ํ์ญ์์ค.
์ ํฌ์ ASF-ui IPC ์ธํฐํ์ด์ค๋ก๋ ASF๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ด๊ธฐ ์ค์ ์ ์์ฑํ ์ดํ ASF๋ฅผ ๋ค์ ์ค์ ํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๋ ์ฐ์ํ ๋ฐฉ๋ฒ์ ๋๋ค. Web ๊ธฐ๋ฐ ConfigGenerator๊ฐ ์ค์ ์ ์ ์ ์ผ๋ก ์์ฑํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ์ด ๋ฐฉ์์ ์ค์ ์ ๊ทธ ์๋ฆฌ์์(in-place) ๋ฐ๋ก ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ASF-ui๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ํฌ IPC ์ธํฐํ์ด์ค๊ฐ ํ์ฑํ๋์ด ์์ด์ผ ํฉ๋๋ค. IPC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฏ๋ก, ์ง์ ๋นํ์ฑํํ์ง ์๋ ํ ๋ฐ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ์คํํ ํ, ASF์ **IPC ์ฃผ์**๋ก ์ด๋ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํ๋ค๋ฉด, ๊ทธ๊ณณ์์ ASF ์ค์ ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ํฌ ConfigGenerator๋ ASF-ui ์ค ํ๋๋ฅผ ์ฌ์ฉํ์๊ธธ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ด ํจ์ฌ ์ฝ๊ณ JSON ๊ตฌ์กฐ์์ ์ค์ํ์ง ์๋๋ก ๋ณด์ฅํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ์ด๋ค ์ด์ ๋ก๋ ์ด๋ฅผ ์ํ์ง ์์ผ์ ๋ค๋ฉด, ์ง์ ์๋์ผ๋ก ์ฌ๋ฐ๋ฅธ ์ค์ ์ ์์ฑํ์ค ์๋ ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ตฌ์กฐ๋ก ์์ํ๋ ค๋ฉด ์๋์ JSON ์์๋ฅผ ํ์ธํ์ธ์. ํด๋น ๋ด์ฉ์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ค์ ์ ๊ธฐ๋ณธ ํ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ํฌ ํ๋ก ํธ์๋๋ฅผ ์ ํ ์ฌ์ฉํ์ง ์์ผ์๋ ๊ฒฝ์ฐ, ์ค์ ํ์ผ์ด ์ ํจํ์ง(valid) ํ์ธํ์ธ์. ASF๋ ํ์ฑํ ์ ์๋ ํ์ผ์ ๋ก๋๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ์ ํจํ JSON์ด๋ผ ํ๋๋ผ๋, ASF๊ฐ ์๊ตฌํ๋ ๋๋ก ๋ชจ๋ ์์ฑ์ด ์ฌ๋ฐ๋ฅธ ํ์ ์ ๊ฐ์ง๊ณ ์๋์ง๋ ๋ฐ๋์ ํ์ธํด์ผ ํฉ๋๋ค. ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์ ์ฌ๋ฐ๋ฅธ JSON ๊ตฌ์กฐ์ ๋ํด์๋, JSON ๋งคํ ์น์ ๊ณผ ์๋์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ผ๋ฐ ํ๊ฒฝ์ค์ ์ ASF.json ํ์ผ์ ๋ค์ด์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
{
"AutoRestart": true,
"Blacklist": [],
"CommandPrefix": "!",
"ConfirmationsLimiterDelay": 10,
"ConnectionTimeout": 90,
"CurrentCulture": null,
"Debug": false,
"DefaultBot": null,
"FarmingDelay": 15,
"FilterBadBots": true,
"GiftsLimiterDelay": 1,
"Headless": false,
"IdleFarmingPeriod": 8,
"InventoryLimiterDelay": 4,
"IPC": true,
"IPCPassword": null,
"IPCPasswordFormat": 0,
"LicenseID": null,
"LoginLimiterDelay": 10,
"MaxFarmingTime": 10,
"MaxTradeHoldDuration": 15,
"MinFarmingDelayAfterBlock": 60,
"OptimizationMode": 0,
"PluginsUpdateList": [],
"PluginsUpdateMode": 0,
"ShutdownIfPossible": false,
"SteamMessagePrefix": "/me ",
"SteamOwnerID": 0,
"SteamProtocols": 7,
"UpdateChannel": 1,
"UpdatePeriod": 24,
"WebLimiterDelay": 300,
"WebProxy": null,
"WebProxyPassword": null,
"WebProxyUsername": null
}๋ชจ๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ true์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ์ํ ๋ ASF๊ฐ ์๋์ผ๋ก ์ฌ์์ํ ์ง๋ฅผ ์ ์ํฉ๋๋ค. UpdatePeriod ํน์ update ๋ช
๋ น์ผ๋ก ์ํ๋๋ ASF์
๋ฐ์ดํธ๋, ASF.json ํ๊ฒฝ์ค์ ๋ณ๊ฒฝ, restart ๋ช
๋ น ๋ฑ ASF๊ฐ ์ฌ์์์ ํ์๋ก ํ๋ ๋ช๊ฐ์ง ์ด๋ฒคํธ๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก, ์ฌ์์์ ๋ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์๋ก์ด ํ๋ก์ธ์ค์ ์์ฑ๊ณผ ํ์ฌ ํ๋ก์ธ์ค์ ์ข
๋ฃ์
๋๋ค. ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ์ด ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ธ true๋ก ์ ์งํ์
๋ ๊ด์ฐฎ์ต๋๋ค. ํ์ง๋ง ์ง์ ์์ฑํ ์คํฌ๋ฆฝํธ๋ dotnet์ ํตํด ASF๋ฅผ ์คํ ์ค์ด๋ผ๋ฉด, ํ๋ก์ธ์ค ์์์ ์์ ํ ์ง์ ์ ์ดํ๊ณ ์ถ์ผ์ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ก (์ฌ์์๋) ASF ํ๋ก์ธ์ค๊ฐ ์คํฌ๋ฆฝํธ์ foreground๊ฐ ์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋๊ฐ์์ ์กฐ์ฉํ ์คํ ์ค์ด๊ณ , ๊ธฐ์กด ASF ํ๋ก์ธ์ค์ ํจ๊ป ์คํฌ๋ฆฝํธ๊ฐ ์ข
๋ฃ๋์ด๋ฒ๋ฆฌ๋ ์ํฉ์ ๋ฐฉ์งํ๊ณ ์ถ์ ๋์
๋๋ค. ์ ํ๋ก์ธ์ค๊ฐ ๋์ด์ ์ง๊ณ ์ฐจ์ผ๋ ํ๋ก์ธ์ค๊ฐ ์๋๋ผ๋ ์ฌ์ค์ด ํนํ ์ค์ํฉ๋๋ค. ํ์ค ์ฝ์ ์
๋ ฅ์ ์ฌ์ฉํ์ง ๋ชปํ ์๋ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์ด ์์ฑ๊ฐ์ false๋ก ์ค์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ฅผ ์ฌ์์ํ๋ ๊ฒ์ ๋น์ ์ด๋ผ๋ ๊ฒ์ ๋ช
์ฌํ์ญ์์ค. ์
๋ฐ์ดํธ ํ ๋ฑ ์ ํ๋ก์ธ์ค๋ฅผ ๋ณ๋ ๋์ ์ข
๋ฃ๋ง ํ๋ ๊ฒ์ ๊ฝค ์ค์ํฉ๋๋ค. ๋น์ ์ด ์ถ๊ฐํ ๋
ผ๋ฆฌ๊ตฌ์กฐ๊ฐ ์๋ค๋ฉด ๋น์ ์ด ๋ค์ ์์ํ๊ธฐ ์ ๊น์ง ์๋์ ๋ฉ์ถ๊ฒ์
๋๋ค. ASF๋ ํญ์ ์ฑ๊ณต(0) ๋๋ ์ฑ๊ณต์๋(0์ด์ธ์ ๊ฐ) ๋ฑ์ ์ ์ ํ ์ค๋ฅ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์ข
๋ฃํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ์คํจํ๋ ๊ฒฝ์ฐ ASF๋ฅผ ์๋์ผ๋ก ์ฌ์์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ ์ ํ ๋
ผ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์ถ๊ฐํ ์ ์๊ณ , ์ ์ด๋ ํฅํ์ ๋ถ์์ ์ํ log.txt์ ์์ฑํฉ๋๋ค. restart ๋ช
๋ น์ ์ด ์์ฑ๊ฐ์ด ์ด๋ป๊ฒ ์ค์ ๋์ด์๋์ง์ ์๊ด์์ด ํญ์ ASF๋ฅผ ์ฌ์์ํจ์ ๋ช
์ฌํ์ญ์์ค. ์ด ์์ฑ๊ฐ์ ๊ธฐ๋ณธ ํ๋์ ์ ์ํ์ง๋ง restart ๋ช
๋ น์ ํญ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์์ํฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋นํ์ฑํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ํ์ฑํ ์ํ๋ก ์ ์งํด์ผ ํฉ๋๋ค.
ImmutableHashSet<uint> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ๋น์ด์์ต๋๋ค. ์ด๋ฆ์์ ์ ์ ์๋ฏ, ์ด ์ ์ญ(global) ์ค์ ์์ฑ์ ASF์ ์๋ ํ๋ฐ ํ๋ก์ธ์ค์์ ์์ ํ ๋ฌด์ํ appID(๊ฒ์)๋ฅผ ์ ์ํฉ๋๋ค. ๋ถํํ๋ Steam์ ์ฌ๋ฆ/๊ฒจ์ธ ํ ์ธ ๋ฐฐ์ง๋ฅผ "์นด๋ ํ๋ ๊ฐ๋ฅ"์ผ๋ก ๋ถ๋ฅํ๋ ๊ฑธ ์ข์ํฉ๋๋ค. ์ด๋ ASF ํ๋ก์ธ์ค๋ฅผ ํผ๋์์ผ์ ์ฌ๋ฆ/๊ฒจ์ธ ํ ์ธ ๋ฐฐ์ง๋ ๋์ฌ์ง์ด์ผ ํ ์ ํจํ ๊ฒ์์ผ๋ก ๋ฏฟ๊ฒํฉ๋๋ค. ์ด๋ ํ ๋ธ๋๋ฆฌ์คํธ๋ ์๋ค๋ฉด ASF๋ ์ค์ ๋ก๋ ๊ฒ์์ด ์๋ ๊ฒ์์ ๋์ฌ์ง๋๋ผ๊ณ ๊ฒฐ๊ตญ ๋งค๋ฌ๋ ค์์ ๊ฒ์ด๊ณ , ์ผ์ด๋์ง ์์ ์นด๋ ํ๋์ ๋ฌดํํ ๊ธฐ๋ค๋ฆด ๊ฒ์
๋๋ค. ASF์ ๋ธ๋๋ฆฌ์คํธ๋ ์ด๋ฌํ ๋ฐฐ์ง๋ฅผ ๋์ฌ์ฉ์ด ์๋์ผ๋ก ํ์ํ์ฌ ์ด๋ค ๊ฒ์ ๋์ฌ์ง์์ง ๊ฒฐ์ ํ ๋ ์ด๋ค์ ์กฐ์ฉํ ๋ฌด์ํ๊ณ ํจ์ ์ ๋น ์ง์ง ์๊ฒ ํ๋ ค๋ ๋ชฉ์ ์
๋๋ค.
ASF๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฐ์ง ๋ธ๋๋ฆฌ์คํธ๋ฅผ ํฌํจํฉ๋๋ค โ ASF ์ฝ๋์ ํ๋์ฝ๋ฉ๋์ด ์์ด ์์ ์ด ๋ถ๊ฐ๋ฅํ SalesBlacklist, ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ ์๋๋ ์ผ๋ฐ Blacklist์
๋๋ค. SalesBlacklist๋ ASF ๋ฒ์ ๊ณผ ํจ๊ป ์
๋ฐ์ดํธ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ฆด๋ฆฌ์ค ์์ ๊ธฐ์ค์ ๋ชจ๋ "๋ฌธ์ ์๋(bad)" appID๋ฅผ ํฌํจํฉ๋๋ค. ๋ฐ๋ผ์ ์ต์ ASF๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ์ฌ๊ธฐ์ ์ ์ํ๋ Blacklist๋ฅผ ๋ณ๋๋ก ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ ์ฃผ ๋ชฉ์ ์ ASF ๋ฆด๋ฆฌ์ค ์์ ์ ์๋ ค์ง์ง ์์ ์๋ก์ด ๋์ฌ์ง์ง ๋ง์์ผ ํ appID๋ฅผ ๋น์ ์ด ๊ด๋ฆฌํ ์ ์๊ฒํ๋ ๊ฒ์
๋๋ค. ํ๋์ฝ๋ฉ๋ SalesBlacklist๋ ์ต๋ํ ๋น ๋ฅด๊ฒ ์
๋ฐ์ดํธ๋๋ฏ๋ก, ์ต์ ASF ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ์ง์ Blacklist๋ฅผ ์
๋ฐ์ดํธํ ํ์๋ ์์ต๋๋ค. ํ์ง๋ง Blacklist๊ฐ ์๋ค๋ฉด, Valve๊ฐ ์๋ก์ด ์ธ์ผ ๋ฐฐ์ง๋ฅผ ์ถ์ํ ๋ "๊ณ์ ์๋ํ๋๋ก" ํ๋ ค๋ฉด ASF๋ฅผ ์
๋ฐ์ดํธํ ์๋ฐ์ ์๊ฒ ๋ฉ๋๋ค โ ์ ๋ ์ฌ๋ฌ๋ถ์ด ํญ์ ์ต์ ASF ์ฝ๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ๊ณ ์ถ์ง ์์ผ๋ฉฐ, ๊ทธ๋์ ์ด๋ค ์ด์ ๋ก๋ ์ ASF ๋ฆด๋ฆฌ์ค์ ์๋ก์ด ํ๋์ฝ๋ฉ๋ SalesBlacklist๋ก ์
๋ฐ์ดํธํ๊ณ ์ถ์ง ์๊ฑฐ๋ ์
๋ฐ์ดํธํ ์ ์๋ ์ํฉ์์๋ ๊ธฐ์กด ASF๋ฅผ ๊ณ์ ์คํํ๊ณ ์ถ์ ๋, ์ง์ ASF๋ฅผ "๊ณ ์น " ์ ์๋๋ก ์ด ์์ฑ์ด ์กด์ฌํ๋ ๊ฒ์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
๋ด ๋จ์(bot-based) ๋ธ๋๋ฆฌ์คํธ๋ฅผ ์ฐพ๊ณ ๊ณ์๋ค๋ฉด, fb, fbadd, fbrm **๋ช
๋ น์ด**๋ฅผ ํ์ธํด๋ณด์ธ์.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ !์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF ๋ช
๋ น์ด ์ ์ฌ์ฉ๋๋ ๋์๋ฌธ์ ๊ตฌ๋ฌธ์ด ํ์ํ ์ ๋์ฌ๋ฅผ ์ ์ํฉ๋๋ค. ์ฆ, ASF๊ฐ ๋น์ ์ ๋ง์ ๋ฃ๊ฒํ๋ ค๋ฉด ๋ชจ๋ ASF ๋ช
๋ น์ด์ ์์ ์ด๊ฒ์ ๋ถ์ฌ์ผ ํฉ๋๋ค. ASF์ ๋ช
๋ น์ด ์ ๋์ฌ๋ฅผ ์์ ๋ ค๊ณ ์ด ๊ฐ์ null ํน์ ๋น ๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ช
๋ น์ด๋ฅผ ์ผ๋ฐ ์๋ณ์์ ํจ๊ป ์
๋ ฅํด์ผ ํฉ๋๋ค. ํ์ง๋ง ASF๋ CommandPrefix ์์ด ์์ํ๋ ๋ฉ์์ง๋ฅผ ํ์ฑํ๋๋ฐ ์ต์ ํ๋์ด์์ง ์์์ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ASF์ ์ฑ๋ฅ์ ์ ์ฌ์ ์ผ๋ก ์ค์ด๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ์๋์ ์ผ๋ก ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ASF๋ ASF ๋ช
๋ น์ด๊ฐ ์๋๋๋ผ๋ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ฝ์ด์ ์๋ตํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ๊ฐ์ธ !๊ฐ ์ซ๋ค๋ฉด / ๊ฐ์ ์ด๋ค ๋ช
๋ น์ด ์ ๋์ฌ(CommandPrefix)๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ผ๊ด์ฑ์ ์ํ์ฌ CommandPrefix๋ ASF ํ๋ก์ธ์ค ์ ์ฒด์ ์ํฅ์ ์ค๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 10์
๋๋ค. ASF๋ ๋ฑ๋ก์ ํ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์์ฒญ์ ๊ฐ์ ธ์ค๋ ๋๊ฐ์ ์ฐ์๋ 2๋จ๊ณ ์ธ์ฆ ํ์ธ ์ฌ์ด์ ์ ์ด๋ ConfirmationsLimiterDelay์ด์ ๊ฐ๊ฒฉ์ ๋ก๋๋ค. ์ด๋ ASF 2๋จ๊ณ ์ธ์ฆ ์์ 2faok ๋ช
๋ น์ด ๋ฑ์ด๋ ๋ค์ํ ๊ฑฐ๋๊ด๋ จ ๋์์ ์ํํ ๋ ์์ฒญ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ํ
์คํธ์ ๋ฐ๋ผ ์ค์ ๋์์ผ๋ฉฐ ๋ฌธ์ ๋ฅผ ๋ฐ์ํ๋ ค๋ ๊ฒ์ด ์๋๋ฉด ์ด๋ณด๋ค ๋ฎ์ถฐ์๋ ์๋ฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 90์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF๊ฐ ์ํํ๋ ๋ค์ํ ๋คํธ์ํฌ ํ๋์ ํ์์์์ ์ด๋จ์๋ก ์ ์ํฉ๋๋ค. ํนํ, ConnectionTimeout์ HTTP์ IPC ์์ฒญ์ ํ์์์์ ์ ์ํ๊ณ , ConnectionTimeout / 10์ ์คํจํ heartbeat ์ต๋ ์ซ์๋ฅผ, ConnectionTimeout / 30์ ์ต์ด Steam ๋คํธ์ํฌ ์ฐ๊ฒฐ์์ฒญ์ ํ์ฉ๋๋ ๋ถ๋จ์ ์ซ์๋ฅผ ์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 90์ ๋๋ค์์ ์ฌ์ฉ์์๊ฒ ์ ํฉํ์ง๋ง, ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด๋ PC ์ฌ์์ด ๋ค์ ๋๋ฆฐ ํธ์ด๋ผ๋ฉด ์ด ์์น๋ฅผ ๋ ๋๊ฒ(์: 120) ๋๋ฆฌ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค. ๋ ํฐ ๊ฐ์ด ๋๋ฆฌ๊ฑฐ๋ ํน์ ์ ์์ด ๋ถ๊ฐ๋ฅํ Steam ์๋ฒ๋ฅผ ๋ง์ ์ฒ๋ผ ๊ณ ์น๋ ๊ฒ์ ์๋์ ๋ช
์ฌํ์ญ์์ค. ์ผ์ด๋์ง ์์ ์ผ์ ๋ฌดํํ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๊ทธ๋ฅ ๋ค์์ ๋ค์ ์๋ํ ๊ฒ์
๋๋ค. ์ด ๊ฐ์ ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด ๋คํธ์ํฌ ์ด์๋ฅผ ํ์งํ๋๋ฐ ๊ทน๋์ ์ง์ฐ๊ณผ ์ ์ฒด์ ์ธ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ASF๊ฐ ํ์ฑ์ค์ธ ์ ํจํ ์์ฒญ๋ ์ทจ์ํ๊ฒ๋์ด ์ ์ฒด์ ์ธ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ์ ํ์ํฌ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฐ์ ๊ธฐ๋ณธ๊ฐ๋ณด๋ค ๋ฎ๊ฒ ์ค์ ํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ฌด๋ฐ ์ด์ ์ด ์์ต๋๋ค. Steam ์๋ฒ๋ ์ข
์ข
๋งค์ฐ ๋๋ ค์ง ๋๊ฐ ์์ผ๋ฉฐ, ASF ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ด ํ์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์์ ์ ์ด๋ผ๋ ๋ฏฟ์๊ณผ Steam ๋คํธ์ํฌ๊ฐ ์ฐ๋ฆฌ์ ์์ฒญ์ ์ฃผ์ด์ง ํ์์์ ๋ด์ ์ฒ๋ฆฌํ์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ์์ฌ ์ฌ์ด์ ๊ท ํ์ ์
๋๋ค. ์ด์๋ฅผ ๋ ๋นจ๋ฆฌ ํ์งํ๊ณ ASF๊ฐ ๋ ๋นจ๋ฆฌ ์ฌ์ฐ๊ฒฐ/๋ฐ์ํ๊ธธ ์ํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ด๋ฉด ๋ฉ๋๋ค.(ํน์ ์์ฃผ ์ด์ง ๋ฎ์๊ฐ, 60 ์ ๋๋ฉด ASF๊ฐ ์ฐธ์์ฑ์ด ์ฝ๊ฐ ์์ด์ง๋๋ค.) ๋ฐ๋๋ก ASF๊ฐ ์์ฒญ ์คํจ, heartbeat ์์ค, Steam ์ฐ๊ฒฐ ๋๊น๊ณผ ๊ฐ์ ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ค๋ฉด, ์ด๊ฒ์ด ์ฌ๋ฌ๋ถ์ ๋คํธ์ํฌ๊ฐ ์๋๋ผ Steam ์์ฒด ๋ฌธ์ ๋ผ๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ ๋๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค. ํ์์์์ ๋๋ฆฌ๋ฉด ASF๊ฐ ๋ "์ธ๋ด์ฌ ์๊ฒ" ๋์ํ์ฌ ๋ฐ๋ก ์ฌ์ฐ๊ฒฐ์ ์๋ํ์ง ์๊ฒ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ์์ฑ์ ๋๋ ค์ผ ํ ์ ์๋ ์์ ์ํฉ์ผ๋ก๋, Steam์ด ์์ ํ ์๋ฝํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์กฑํ 2๋ถ ์ด์ ๊ฑธ๋ฆฌ๋ ๋งค์ฐ ํฐ ๊ฑฐ๋ ์ ์(trade offer)์ ASF๊ฐ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ ํ์์์์ ์ฆ๊ฐ์ํค๋ฉด ASF๋ ๋ ์ฐธ์์ฑ์ด ์๊ฒ๋๊ณ ๊ฑฐ๋๊ฐ ์ฑ์ฌ๋์ง ์์์ ์ต์ด ์์ฒญ์ ์ค๋จํ๋ ๊ฒฐ์ ์ ํ๊ธฐ ์ ์ ๋ ์ค๋ ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ์ํฉ์ ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ๋ ๋ง์ ์๊ฐ์ด ํ์ํ ๋งค์ฐ ๋๋ฆฐ ๊ธฐ๊ธฐ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋งค์ฐ ๋๋ฌธ ๊ฒฝ์ฐ๋ก CPU/๋คํธ์ํฌ ๋์ญํญ์ ๊ฑฐ์ ๋ณดํ๋ฅ์ ๊ฒช์ง ์์ง๋ง ์ธ๊ธํด๋ ๊ฐ๋ฅ์ฑ์ ์ฌ์ ํ ์์ต๋๋ค.
์์ฝํ์๋ฉด, ๊ธฐ๋ณธ๊ฐ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ์ ํ์ง๋ง, ํ์์ ๋ฐ๋ผ ๋๋ฆด ์๋ ์์ต๋๋ค. ํ์ง๋ง ํ์์์์ ํฌ๊ฒ ์ก๋๋ค๊ณ ํด์ ์ ์์ด ๋ถ๊ฐ๋ฅํ Steam ์๋ฒ๋ฅผ ๋ง์ ์ฒ๋ผ ๊ณ ์น ์๋ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ๊ฐ๋ณด๋ค ํ์ฐธ ํฌ๊ฒํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ASF๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์์ฒด์ ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ คํ๊ณ , ๊ฐ๋ฅํ๋ค๋ฉด ๊ทธ ์ธ์ด๋ก ๋ฒ์ญ๋ ๋ฌธ์์ด์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ASF๋ฅผ ๊ฑฐ์ ๋ชจ๋ ๋์ค์ ์ธ์ด๋ก ํ์งํ ํ๋ ค๊ณ ๋
ธ๋ ฅ์ค์ธ ์ปค๋ฎค๋ํฐ ๋๋ถ์ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ค ์ด์ ๋ก๋ OS๋ฅผ ๋ชจ๊ตญ์ด๋ก ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด, ์ด ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ผ๋ก ๋์ ์ฌ์ฉํ๊ธธ ์ํ๋ ์ ํจํ ์ธ์ด๋ฅผ ๊ณ ๋ฅผ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฐ๋ฅํ ๊ตญ๊ฐ ๋ฐ ์ธ์ด ๋ฆฌ์คํธ๋ MSDN ์ ๋ฐฉ๋ฌธํ์ฌ Language tag๋ฅผ ์ฐพ์๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ASF๋ "en-GB"์ ๊ฐ์ ํน์ ๋ฌธํ๊ถ(culture)๋ฟ๋ง ์๋๋ผ "en"๊ณผ ๊ฐ์ ์ค๋ฆฝ์ ์ธ(neutral) ๋ฌธํ๊ถ๋ ๋ชจ๋ ํ์ฉํ๋ค๋ ์ ์ ์ฐธ๊ณ ํ์๋ฉด ์ข์ต๋๋ค. ํ์ฌ ๋ฌธํ๊ถ(culture)์ ์ง์ ํ๋ฉด ํตํ/๋ ์ง ํ์ ๋ฑ ๋ฌธํ๊ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋ค๋ฅธ ๋์์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ค์ดํฐ๋ธ๊ฐ ์๋(non-native) ๋ฌธํ๊ถ์ ์ ํํ์ฌ ํด๋น ์ธ์ด ํน์ ์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ํ๋ ค๋ฉด ์ถ๊ฐ ๊ธ๊ผด/์ธ์ด ํฉ์ด ํ์ํ ์ ์๋ค๋ ์ ์ ์ฐธ๊ณ ํ์ธ์. ์ผ๋ฐ์ ์ผ๋ก ASF๋ฅผ ๋ชจ๊ตญ์ด๊ฐ ์๋๋ผ ์์ด๋ก ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ด ์์ฑ๊ฐ์ ํ์ฉํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋๋ฒ๊ทธ ๋ชจ๋์์ ์คํํด์ผ ํ๋ ์ง๋ฅผ ์ ์ํฉ๋๋ค. ๋๋ฒ๊ทธ ๋ชจ๋์์ ASF๋ config ๋๋ ํ ๋ฆฌ ์์ ํน๋ณํ debug ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ASF์ Steam ์๋ฒ๊ฐ์ ๋ชจ๋ ํต์ ์ ๊ธฐ๋กํฉ๋๋ค. ๋๋ฒ๊ทธ ์ ๋ณด๋ ๋คํธ์ํน๊ณผ ์ผ๋ฐ์ ์ธ ASF ์์
ํ๋ฆ๊ณผ ๊ด๋ จ๋ ๋ถ์พํ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ด๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ, ์ผ๋ถ ํ๋ก๊ทธ๋จ ๋ฃจํด์ ํจ์ฌ ๋ ์์ธํด์ง๋๋ค. ์๋ฅผ ๋ค์ด WebBrowser๋ ์ผ๋ถ ์์ฒญ์ด ์ ์คํจํ๋์ง ์ ํํ ์ด์ ๋ฅผ ํ์ํ๋๋ฐ, ์ด ํญ๋ชฉ์ด ์ผ๋ฐ ASF ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์์ฒญํ์ง ์๋ ํ ASF๋ฅผ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ์คํํ์ง ๋ง์ญ์์ค. ASF๋ฅผ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ์คํํ๋ฉด ์ฑ๋ฅ ๊ฐ์ ๋ฐ ์์ ์ฑ์ ๋ถ์ ์ ์ํฅ์ ์ฃผ๊ณ , ์ฌ๋ฌ ๊ณณ์์ ํจ์ฌ ๋ ์์ธํด์ง๋ฏ๋ก ํน์ ์ด์๋ฅผ ๋๋ฒ๊ทธํ๊ธฐ ์ํด์ ๋ฌธ์ ๋ฅผ ์ฌ์์ฐํ๊ฑฐ๋ ์์ฒญ ์คํจ์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ ๋ฑ ์ค์ง ์๋ํ์๋๋ง ์งง๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์คํ์ ์ํด์๋ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋ง์ ์๋ก์ด ์ค๋ฅ, ์ด์, ์์ธ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์
๋๋ค. ASF, Steam๊ณผ ์ด์ํ๋์ ๋ชจ๋ ์ง์ ๋ถ์ํ๋ ค๋ฉด ์ด์ ๋ํ ์ถฉ๋ถํ ์ง์์ด ์๋์ง ํ์ธํ์ญ์์ค.
๊ฒฝ๊ณ : ์ด ๋ชจ๋๋ฅผ ํ์ฑํํ๋ฉด (๋คํธ์ํฌ ๋ก๊น
์ผ๋ก ์ธํด) Steam ๋ก๊ทธ์ธ์ ์ฌ์ฉํ๋ ๋ก๊ทธ์ธ ์ ๋ณด ๋ฐ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ์ ์ฌ์ ์ผ๋ก ๋ฏผ๊ฐํ ์ ๋ณด๊น์ง ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ํด๋น ๋ฐ์ดํฐ๋ debug ๋๋ ํฐ๋ฆฌ์ ํ์ค log.txt(์ด ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํด ์๋์ ์ผ๋ก ํจ์ฌ ์์ธํ๊ฒ ๊ธฐ๋ก๋๋๋ก ๋์ด ์์) ์์ชฝ ๋ชจ๋์ ๊ธฐ๋ก๋ฉ๋๋ค. ASF๊ฐ ์์ฑํ debug ์ฝํ
์ธ ๋ฅผ ์ด๋ ํ ๊ณต๊ฐ๋ ์ฅ์์๋ ๊ฒ์ํด์๋ ์ ๋ฉ๋๋ค. ASF ๊ฐ๋ฐ์๋ ํญ์ ์ด๋ฅผ ๋ณธ์ธ์ ์ด๋ฉ์ผ์ด๋ ๋ค๋ฅธ ๋ณด์์ด ํ๋ณด๋ ์ฅ์๋ก ์ ์กํ๋๋ก ์๋ดํ ๊ฒ์
๋๋ค. ์ ํฌ๋ ์ด๋ฌํ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ํ์ฉํ์ง ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ๋ถ์ด ๊ฒช๊ณ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ debug ๋ฃจํด์ ์ผ๋ถ๋ก ๊ธฐ๋ก๋ ๋ฟ์
๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ASF ๋ก๊น
์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก๋ ๋ณ๊ฒฝํ์ง ์์ผ์๊ธธ ๊ถ์ฅ๋๋ฆฌ์ง๋ง, ๊ฑฑ์ ๋์ ๋ค๋ฉด ํด๋น ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ ํ ๊ฐ๋ ค์(redact) ์ ๊ณตํ์
๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๊ฐ๋ฆฌ๊ธฐ(redact)ํ๋ค๋ ๊ฒ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์๋ฅผ ๋ค์ด ๋ณํ(*) ๋ฑ์ผ๋ก ๋์ฒดํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฏผ๊ฐํ ์ค์ ์์ ์ญ์ ํ๋ ๊ฒ์ ์์ ํด์ผ ํฉ๋๋ค. ํด๋น ์ค์ด ์กด์ฌํ๋ค๋ ์ฌ์ค ์์ฒด๊ฐ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ ์ ์์ผ๋ฏ๋ก ๋ณด์กด๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ผ๋ถ ์๋๋ฆฌ์ค์์ ASF๋ ํน์ ์์
์ ์ฒ๋ฆฌํ ์ฑ
์์ด ์๋ "๊ธฐ๋ณธ ๋ด(default bot)"์ด๋ผ๋ ๊ฐ๋
์ผ๋ก ๋์ํฉ๋๋ค โ ์๋ฅผ ๋ค์ด ๋์ ๋ด์ ์ง์ ํ์ง ์์์ ๋์ IPC ๋ช
๋ น์ด๋ ์ธํฐ๋ํฐ๋ธ ์ฝ์์ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ์ต๋๋ค. ์ด ์์ฑ์ ์ด๋ฌํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ ๊ธฐ๋ณธ ๋ด์ ์ฌ๊ธฐ์ BotName์ ์
๋ ฅํ์ฌ ์ง์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ง์ ํ ๋ด์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ธฐ๋ณธ๊ฐ์ธ null์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ASF๋ ๋์ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌํ์ ๋ ๊ฐ์ฅ ๋จผ์ ๋ฑ๋ก๋ ๋ด์ ์ ํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ค์ ์์ฑ์ IPC ๋ฐ ์ธํฐ๋ํฐ๋ธ ์ฝ์ ๋ช
๋ น์์ [Bots] ์ธ์๋ฅผ ์๋ตํ๊ณ , ์ด๋ฌํ ํธ์ถ์ ๋ํด ํญ์ ๋์ผํ ๋ด์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 15์
๋๋ค. ASF๊ฐ ์๋ํ๋ ค๋ฉด, ํ์ฌ ํ๋ฐ ์ค์ธ ๊ฒ์์์ ์นด๋๊ฐ ๋ชจ๋ ๋๋กญ๋์๋์ง๋ฅผ FarmingDelay๋ถ๋ง๋ค ํ์ธํฉ๋๋ค. ์ด ์์ฑ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ๊ณผ๋ํ ์์ Steam ์์ฒญ์ด ์ ์ก๋ ์ ์๊ณ , ๋ฐ๋๋ก ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด ํด๋น ํ์ดํ์ด ์์ ํ ํ๋ฐ๋์์์๋ ์ต๋ FarmingDelay๋ถ ๋์ ASF๊ฐ ๊ณ์ "ํ๋ฐ ์ค"์ธ ์ํ๋ก ๋จ์์์ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ์ถฉ๋ถํ ์ ํฉํ์ง๋ง, ๋ง์ ๋ด์ ์ด์ ์ค์ด๋ผ๋ฉด ์ ์ก๋๋ Steam ์์ฒญ์ ์ค์ด๊ธฐ ์ํด 30๋ถ ์ ๋๋ก ๋๋ฆฌ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก ASF๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ(event-based) ๋ฐฉ์์ ์ฌ์ฉํ์ฌ Steam ์์ดํ
์ด ๋๋กญ๋ ๋๋ง๋ค ๊ฒ์ ๋ฐฐ์ง ํ์ด์ง๋ฅผ ํ์ธํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก ์ ํด์ง ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ํ์ธํ ํ์์กฐ์ฐจ ์์ต๋๋ค. ํ์ง๋ง Steam ๋คํธ์ํฌ๋ฅผ ์์ ํ ์ ๋ขฐํ์ง๋ ์๊ธฐ ๋๋ฌธ์, ์ต๊ทผ FarmingDelay๋ถ ๋์ ์นด๋ ๋๋กญ ์ด๋ฒคํธ๋ฅผ ํตํด ํ์ธํ์ง ๋ชปํ๋ค๋ฉด(์: Steam ๋คํธ์ํฌ๊ฐ ์์ดํ
๋๋กญ์ ์ ๋๋ก ์๋ ค์ฃผ์ง ์์ ๊ฒฝ์ฐ ๋ฑ) ์ด์จ๋ ๊ฒ์ ๋ฐฐ์ง ํ์ด์ง๋ฅผ ํ์ธํฉ๋๋ค. Steam ๋คํธ์ํฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋ค๊ณ ๊ฐ์ ํ ๋, ์ด ๊ฐ์ ์ค์ด๋๋ผ๋ ํ๋ฐ ํจ์จ์ ์ ํ ๊ฐ์ ๋์ง ์์ผ๋ฉฐ, ์คํ๋ ค ๋คํธ์ํฌ ๋ถํ๋ง ํฌ๊ฒ ์ฆ๊ฐ์ํต๋๋ค โ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ธ 15๋ถ์์ ๋๋ฆฌ๋ ๊ฒ๋ง ๊ถ์ฅ๋ฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ true์
๋๋ค. ์ด ์์ฑ์ ์๋ ค์ ธ ์๊ณ ์
์์ ์ธ ๊ฒ์ผ๋ก ํ์๋ ์ฌ์ฉ์(bad actor)๋ก๋ถํฐ ๋ฐ์ ๊ฑฐ๋ ์ ์์ ASF๊ฐ ์๋์ผ๋ก ๊ฑฐ๋ถํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด, ASF๋ ํ์ํ ๋๋ง๋ค ์ ํฌ ์๋ฒ์ ํต์ ํ์ฌ ๋ธ๋๋ฆฌ์คํธ์ ๋ฑ๋ก๋ Steam ์๋ณ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค. ๋ชฉ๋ก์ ์๋ ๋ด๋ค์ ์ ํฌ๊ฐ ASF ์ด๋์
ํฐ๋ธ์ ์ ํดํ๋ค๊ณ ๋ถ๋ฅํ ์ฌ๋๋ค์ด ์ด์ํ๋ ๊ฒ์ผ๋ก, ์ ํฌ์ **ํ๋ ๊ฐ๋ น**์ ์๋ฐํ๊ฑฐ๋, **PublicListing**๊ณผ ๊ฐ์ด ์ ํฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ ๋ฐ ๋ฆฌ์์ค๋ฅผ ์
์ฉํ์ฌ ๋ค๋ฅธ ์ฌ๋์ ์ฐฉ์ทจํ๊ฑฐ๋, ์๋ฒ์ DDoS ๊ณต๊ฒฉ์ ๊ฐํ๋ ๋ฑ ๋
ธ๊ณจ์ ์ธ ๋ฒ์ฃ ํ์๋ฅผ ์ ์ง๋ฅด๋ ๊ฒฝ์ฐ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. ASF๋ ์ ์ฒด ์ปค๋ฎค๋ํฐ๊ฐ ๋ฒ์ฐฝํ ์ ์๋๋ก ์ฌ์ฉ์ ๊ฐ์ ์ ๋ฐ์ ์ธ ๊ณต์ ์ฑ, ์ ์ง์ฑ, ํ๋ ฅ์ ๋งค์ฐ ์ค์ํ๊ฒ ์ฌ๊ธฐ๊ธฐ ๋๋ฌธ์, ์ด ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ์ ํฌ๊ฐ ์ ํดํ๋ค๊ณ ๋ถ๋ฅํ ๋ด๋ค์ ์ ๊ณต๋๋ ์๋น์ค์์ ํํฐ๋ง๋ฉ๋๋ค. ์ ํฌ์ ์
์ฅ์ ๋์ํ์ง ์์ ์๋์ ์ผ๋ก ์ด๋ฌํ ๋ด๋ค์ด ํ๋ํ๋๋ก(๊ณ์ ์ ์
์ฉ๋นํ๋ ๊ฒ๊น์ง ํฌํจํ์ฌ) ํ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ๊ฐ๋ ฅํ ์ด์ ๊ฐ ์๋ค๋ฉด, ์ด ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์งํ์
์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 1์
๋๋ค. ASF๋ ๋ฑ๋ก์ ํ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ๋๊ฐ์ ์ฐ์๋ ์ ๋ฌผ/ํค/๋ผ์ด์ผ์ค ์ฒ๋ฆฌ(๋ฑ๋ก) ์์ฒญ ์ฌ์ด์ ์ ์ด๋ GiftsLimiterDelay์ด์ ๊ฐ๊ฒฉ์ ๋ก๋๋ค. ๊ทธ ์ธ์๋, owns **๋ช
๋ น์ด**์์ ๋ฐ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ๋ชฉ๋ก ์์ฒญ์ ๋ํ ์ ์ญ(global) ์ ํ ์ฅ์น๋ก๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์์ฑ์ ๋ณ๊ฒฝํ ๊ฐ๋ ฅํ ์ด์ ๊ฐ ์๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์งํ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ headless ๋ชจ๋์์ ์คํํด์ผ ํ๋ ์ง๋ฅผ ์ ์ํฉ๋๋ค. headless ๋ชจ๋์ผ ๋, ASF๋ ์์ ์ด ์๋ฒ๋ ๋ค๋ฅธ ๋น๋ํํ(non-interactive) ํ๊ฒฝ์์ ์คํ ์ค์ด๋ผ๊ณ ๊ฐ์ฃผํ๋ฉฐ, ๋ฐ๋ผ์ ์ฝ์ ์
๋ ฅ์ ํตํด ์ด๋ ํ ์ ๋ณด๋ ์ฝ์ผ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ํ์ ์ ์์ฒญ๋๋ ์ธ๋ถ์ ๋ณด(2FA ์ฝ๋, SteamGuard ์ฝ๋, ๋น๋ฐ๋ฒํธ ๋ฑ ASF ์๋์ ํ์ํ ๊ณ์ ์๊ฒฉ ์ฆ๋ช
๋ฐ ๊ธฐํ ๋ณ์)๋ฟ๋ง ์๋๋ผ, ์ธํฐ๋ํฐ๋ธ ๋ช
๋ น ์ฝ์๊ณผ ๊ฐ์ ๊ทธ ์ธ ๋ชจ๋ ์ฝ์ ์
๋ ฅ๋ ํฌํจ๋ฉ๋๋ค. ๋ค์ ๋งํด, Headless ๋ชจ๋๋ ASF ์ฝ์์ ์ฝ๊ธฐ ์ ์ฉ(read-only)์ผ๋ก ๋ง๋๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค. ์ด ์ค์ ์ ์ฃผ๋ก ์๋ฒ์์ ASF๋ฅผ ์ด์ํ๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด 2FA ์ฝ๋๋ฅผ ์์ฒญํ๋ ๋์ , ASF๋ ํด๋น ๊ณ์ ์ ์ ์ง์์ผ ์์
์ ์กฐ์ฉํ ์ค๋จํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฒ์์ ASF๋ฅผ ์ด์ ์ค์ด๋ฉฐ ASF๊ฐ non-headless ๋ชจ๋์์๋ ์ ์์ ์ผ๋ก ์๋ํ๋ค๋ ๊ฒ์ ์ฌ์ ์ ํ์ธํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด, ์ด ์์ฑ์ ๋นํ์ฑํ๋ ์ํ๋ก ์ ์งํ์
์ผ ํฉ๋๋ค. headless ๋ชจ๋์์๋ ๋ชจ๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ด ๊ฑฐ๋ถ๋๋ฉฐ, ๊ณ์ ์ด ์์ ์ค์ ์ด๋ ํ ์ฝ์ ์
๋ ฅ์ด๋ผ๋ ํ์๋ก ํ๋ค๋ฉด ์คํ๋์ง ์์ต๋๋ค. ์ด๋ ์๋ฒ์ ์ ์ฉํ๋ฐ, ์ฌ์ฉ์๊ฐ ์๊ฒฉ ์ฆ๋ช
์ ์ ๊ณตํ ๋๊น์ง (๋ฌดํ์ ) ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ์๊ฒฉ ์ฆ๋ช
์ ์๊ตฌ๋ฐ์์ ๋ ASF๊ฐ ๊ณ์ ๋ก๊ทธ์ธ ์๋๋ฅผ ์ค๋จํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ๋ชจ๋๋ฅผ ํ์ฑํํ๋ฉด ํ์ํ ์ฝ์ ์
๋ ฅ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํตํด ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด: ASF-ui(ASF API)๋ฅผ ํตํ๊ฑฐ๋, input ๋ช
๋ น์ด๋ฅผ ํตํด์์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ false๋ก ๋์ญ์์ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 8์
๋๋ค. ASF๊ฐ ๋์ฌ์ง์ ๊ฒ์ด ์๋ค๋ฉด ์ฃผ๊ธฐ์ ์ผ๋ก IdleFarmingPeriod ์๊ฐ๋ง๋ค ๊ณ์ ์ ์๋ก์ด ๋์ฌ์ง์ ๊ฒ์์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ฒ๋ ์ ๊ฒ์์ ๋ํด ์ด์ผ๊ธฐ ํ ๋๋ ํ์์์ต๋๋ค. ASF๋ ๋ฐฐ์ง ํ์ด์ง๋ฅผ ์๋์ผ๋ก ํ์ธํ ๋งํผ ๋๋ํฉ๋๋ค. IdleFarmingPeriod๋ ์ฃผ๋ก ์ด๋ฏธ ๊ฐ๊ณ ์๋ ์ค๋๋ ๊ฒ์์ ํธ๋ ์ด๋ฉ ์นด๋๊ฐ ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ํ ๊ฒ์
๋๋ค. ์ด๊ฒฝ์ฐ ์๋ฌด๋ฐ ์๋ฆผ๋ ์์ด์ ์ด๊ฒ์ ์๊ธฐ ์ํด์๋ ASF๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฐ์ง ํ์ด์ง๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. 0๊ฐ์ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํฉ๋๋ค. ๋ค์๋ ํจ๊ป ํ์ธํด๋ณด์ธ์: FarmingPreferences์ ShutdownOnFarmingFinished ์ค์ .
๊ธฐ๋ณธ๊ฐ์ด 4์ธ byte ํ์
์
๋๋ค. ASF๋ ์๋ ์ ํ(rate-limit)์ ๊ฑธ๋ฆฌ์ง ์๋๋ก, ์ฐ์๋๋ ๋ ์น ์ธ๋ฒคํ ๋ฆฌ ์์ฒญ ์ฌ์ด์ ์ต์ InventoryLimiterDelay์ด์ ๊ฐ๊ฒฉ์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค โ ์ด๋ ์๋ฅผ ๋ค์ด ์ธ๋ฒคํ ๋ฆฌ ์๋ฆผ์ ์ฝ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋ค๋ฅธ ์ฌ์ฉ์์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋ํํฐ ํ๋ฌ๊ทธ์ธ์์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด ์์ฑ์ ์์ ์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ ์ฌ์ฉ๋์ง ์๋๋ฐ, ASF๊ฐ ์ด๋ฅผ ์ํด ํจ์ฌ ๋ ํจ์จ์ ์ธ ๋ด๋ถ ๋คํธ์ํฌ ํธ์ถ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ loot๋ transfer์ ๊ฐ์ ๋ช
๋ น์ด์๋ ์ด๋ ํ ์ํฅ๋ ๋ฏธ์น์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 4๋ 100๊ฐ ์ด์์ ์ฐ์๋ ๋ด ์ธ์คํด์ค์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ฝ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์ค์ ๋์์ผ๋ฉฐ, ๋๋ถ๋ถ(์ ๋ถ๋ ์๋๋๋ผ๋)์ ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์ํฌ ๊ฒ์
๋๋ค. ํ์ง๋ง ๋ด์ ์๊ฐ ๋งค์ฐ ์ ๋ค๋ฉด ์ด ๊ฐ์ ์ค์ด๊ฑฐ๋ ์ฌ์ง์ด 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ผ์ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ASF๋ ๋๋ ์ด๋ฅผ ๋ฌด์ํ๊ณ Steam ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ฝ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ค๋ง ์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด Steam์ด ์ฌ๋ฌ๋ถ์ IP๋ฅผ ์ผ์์ ์ผ๋ก ์ฐจ๋จํ๊ฒ ๋ฉ๋๋ค, ๊ทธ๋ ๊ฒ ๋๋ฉด ์ด๋ ํ ํธ์ถ๋ ํ ์ ์๊ฒ ๋๋ ์ฃผ์ํ์ธ์. ๋ง์ ์ธ๋ฒคํ ๋ฆฌ ์์ฒญ์ ๋ฐ์์ํค๋ ๋ค์์ ๋ด์ ์ด์ ์ค์ด๋ผ๋ฉด ์ด ๊ฐ์ ๋๋ ค์ผ ํ ์๋ ์์ง๋ง, ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋์ ํด๋น ์์ฒญ์ ์ ์์ฒด๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์๋ํด๋ณด์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ true์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF ํ๋ก์ธ์ค์ ํจ๊ป ์์๋๋ IPC ์๋ฒ๋ฅผ ์ ์ํฉ๋๋ค. IPC๋ ๋ก์ปฌ HTTP ์๋ฒ๋ฅผ ๊ตฌ๋ํจ์ผ๋ก์จ, ASF-ui ์ฌ์ฉ์ ํฌํจํ ํ๋ก์ธ์ค ๊ฐ ํต์ (inter-process communication)์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ ํฌ ASF-ui๋ฅผ ํฌํจํ์ฌ ASF์ ์ฐ๋๋๋ ์๋ํํฐ IPC๋ฅผ ์ฌ์ฉํ ๊ณํ์ด ์๋ค๋ฉด, ์ด ์ต์
์ ์์ ํ๊ฒ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด, ํ์ฑํ๋ ์ํ(๊ธฐ๋ณธ ์ต์
)๋ก ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ IPC๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ API ํธ์ถ์ ๋ํ ํ์ ์ํธ๋ฅผ ์ ์ํ๊ณ , ์ถ๊ฐ ๋ณด์์๋จ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ๋น ๊ฐ์ด ์๋๊ฒ์ผ๋ก ์ค์ ๋๋ฉด ๋ชจ๋ IPC ์์ฒญ์ ์ฌ๊ธฐ์ ๋ช
์๋ ์ํธ๋ก ์ค์ ๋ ์ถ๊ฐ์ ์ธ password ์์ฑ๊ฐ์ ์๊ตฌํ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ null์ ์ํธ์๊ตฌ๋ฅผ ๊ฑด๋๋ฐ์ด์ ASF๊ฐ ๋ชจ๋ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ์ด ์ต์
์ ํ์ฑํํ๋ฉด ๋ด์ฅ๋ IPC ๋-๋ฌด์์๊ณต๊ฒฉ ๋ฉ์ปค๋์ฆ์ ํ์ฑํํฉ๋๋ค. ์ด๋ ๋งค์ฐ ์งฆ์ ์๊ฐ๋์ ๋๋ฌด ๋ง์ ์น์ธ๋์ง ์์ ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ํน์ IP ์ฃผ์๋ฅผ ์ผ์์ ์ผ๋ก ์ฐจ๋จํฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ IPCPassword ์์ฑ์ ํ์(format)์ ์ ์ํ๋ฉฐ, ๋ด๋ถ์ ์ผ๋ก EHashingMethod ํ์
์ ์ฌ์ฉํฉ๋๋ค. ๋ ์์๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด ๋ณด์(Security) ์น์
์ ์ฐธ๊ณ ํ์ธ์. IPCPassword ์์ฑ์ด ์ค์ ๋ก ์ผ์นํ๋ IPCPasswordFormat์ ๋ง๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์ ๋งํด, IPCPasswordFormat์ ๋ณ๊ฒฝํ๋ฉด IPCPassword๋ ๋ชฉํ๋ก๋ง ์ผ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฏธ ํด๋น ํ์์ด์ด์ผ ํฉ๋๋ค. ๋ฌด์จ ์ผ์ ํ๊ณ ์๋์ง ์์ง ๋ชปํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ 0์ ์ ์งํ์ญ์์ค.
๊ธฐ๋ณธ๊ฐ์ด null์ธ Guid? ํ์
์
๋๋ค. ์ด ์์ฑ์ ์ ํฌ **์คํฐ์(sponsor)**๊ฐ ์ ๋ฃ ๋ฆฌ์์ค๊ฐ ํ์ํ ์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ASF๋ฅผ ๊ฐํํ ์ ์๊ฒ ํด์ค๋๋ค. ํ์ฌ๋ก์๋, ์ด๋ฅผ ํตํด ItemsMatcher ํ๋ฌ๊ทธ์ธ์ MatchActively ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๊ฐ ๋ฐ ์ผํ์ฑ ๋ฑ๊ธ์ ์ ๊ณตํ๊ณ , ์์ ์๋ํ์ ์ฆ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ GitHub ์ด์ฉ์ ๊ถ์ฅ๋๋ฆฌ์ง๋ง, ํ์ฌ ์ด์ฉ ๊ฐ๋ฅํ ๋ค๋ฅธ ๋ชจ๋ **ํ์ ๋ฐฉ๋ฒ**๋ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ์ํ์ฌ ํน์ ๊ธฐ๊ฐ ๋์ ์ ํจํ ์๋ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ ๋ฐฉ๋ฒ์ **์ด ๊ฒ์๋ฌผ**์ ์ฐธ๊ณ ํ์ธ์.
์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ , ASF ์คํฐ์(sponsor)๋ผ๋ฉด **์ฌ๊ธฐ**์์ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค. ์ ์ ํ์ธ์ ์ํด GitHub์ผ๋ก ๋ก๊ทธ์ธํด์ผ ํ๋ฉฐ, ์ฝ๊ธฐ ์ ์ฉ(read-only)์ ๊ณต๊ฐ ์ ๋ณด์ธ ์ฌ์ฉ์ ์ด๋ฆ(username)๋ง ์์ฒญํฉ๋๋ค. LicenseID๋ f6a0529813f74d119982eb4fe43a9a24์ ๊ฐ์ด 32์๋ฆฌ์ 16์ง์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ณธ์ธ์ LicenseID๋ฅผ ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ณต์ ํ์ง ์๋๋ก ์ฃผ์ํ์ธ์. ์ด๋ ๊ฐ์ธ ๋จ์๋ก ๋ฐ๊ธ๋๋ฏ๋ก, ์ ์ถ๋ ๊ฒฝ์ฐ ์ทจ์๋ ์ ์์ต๋๋ค. ํน์๋ผ๋ ์ค์๋ก ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ค๋ฉด, ๊ฐ์ ๊ณณ์์ ์๋ก ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ธ ASF ๊ธฐ๋ฅ์ ํ์ฑํํ๊ณ ์ถ์ ๊ฒ์ด ์๋๋ผ๋ฉด, ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๊ธ๋ฐ๊ฑฐ๋ ์ ๊ณตํ ํ์๋ ์์ต๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 10์
๋๋ค. ASF๋ ๋ฑ๋ก์ ํ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ๋๊ฐ์ ์ฐ์๋ ์ฐ๊ฒฐ ์๋ ์ฌ์ด์ ์ ์ด๋ LoginLimiterDelay์ด์ ๊ฐ๊ฒฉ์ ๋ก๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 10์ 100๊ฐ ์ด์์ ๋ด ์ธ์คํด์ค๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์ค์ ๋์์ผ๋ฉฐ, ๋๋ถ๋ถ(์ ๋ถ๋ ์๋๋๋ผ๋)์ ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์ํฌ ๊ฒ์
๋๋ค. ํ์ง๋ง ๋ด์ ์๊ฐ ๋งค์ฐ ์ ๋ค๋ฉด ์ด ๊ฐ์ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๊ฑฐ๋, ์ฌ์ง์ด 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ผ์ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ASF๋ ๋๋ ์ด๋ฅผ ๋ฌด์ํ๊ณ Steam์ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ค๋ง ๋ด์ด ๋๋ฌด ๋ง์ ์ํ์์ ์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด Steam์ด ์ฌ๋ฌ๋ถ์ IP๋ฅผ ์ผ์์ ์ผ๋ก ์ฐจ๋จํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด InvalidPassword/RateLimitExceeded ์ค๋ฅ์ ํจ๊ป ๋ก๊ทธ์ธ ์์ฒด๊ฐ ์์ ํ ๋ถ๊ฐ๋ฅํด์ง๋ฉฐ, ์ด๋ ASF๋ฟ๋ง ์๋๋ผ ์ผ๋ฐ Steam ํด๋ผ์ด์ธํธ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํนํ ๋์ผํ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ Steam ํด๋ผ์ด์ธํธ/๋๊ตฌ์ ํจ๊ป ๊ณผ๋ํ ์์ ๋ด์ ์ด์ ์ค์ด๋ผ๋ฉด, ๋ก๊ทธ์ธ์ ๋ ๊ธด ์๊ฐ์ ๊ฑธ์ณ ๋ถ์ฐ์ํค๊ธฐ ์ํด ์ด ๊ฐ์ ๋๋ ค์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ฐธ๊ณ ๋ก, ์ด ๊ฐ์ SendTradePeriod์์์ ๊ฑฐ๋(trade)์ ๊ฐ์ด ASF๊ฐ ์์ฝํ(scheduled) ๋ชจ๋ ์์
์์ ๋ถํ ๋ถ์ฐ(load-balancing) ๋ฒํผ๋ก๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 10์
๋๋ค. ์์๋ค์ํผ Steam์ด ํญ์ ์ ์์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ ์๋๋ฉฐ, ์ค์ ๋ก ๊ฒ์์ ํ๋ ์ด ์ค์์๋ ํ๋ ์ดํ์์ด ๊ธฐ๋ก๋์ง ์๋ ๋ฑ ์ด์ํ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ASF๋ ํ ๊ฒ์์ ์๋ก๋ชจ๋๋ก ์ต๋ MaxFarmingTime ์๊ฐ๋์ ๋์ฌ์ง์ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ์๋ ์์ ํ ๋์ฌ๋ฅผ ์ง์๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ์ด๋ ์ด๋ฌํ ์ด์ ์ํฉ์ด ๋ฐ์ํ์ ๋ ํ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ฉ์ถ์ง ์๋๋ก ํ๊ธฐ ์ํด ํ์ํ๋ฉฐ, Steam์ด ์ด๋ค ์ด์ ๋ก๋ ASF์ ์งํ์ ๋ง๋ ์๋ก์ด ๋ฐฐ์ง๋ฅผ ์ถ์ํ ๊ฒฝ์ฐ(์ฐธ๊ณ : Blacklist)์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 10์๊ฐ์ด๋ฉด ํ ๊ฒ์์ ๋ชจ๋ Steam ์นด๋๋ฅผ ๋๋กญํ๋ ๋ฐ ์ถฉ๋ถํ ๊ฒ์
๋๋ค. ์ด ์์ฑ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ์ ์์ ์ธ ๊ฒ์์ด ๊ฑด๋๋ฐ์ด์ง ์ ์๊ณ (์ค์ ๋ก ํ๋ฐ์ ์ต๋ 9์๊ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์ ์์ ์ธ ๊ฒ์๋ ์์ต๋๋ค), ๋ฐ๋๋ก ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด ํ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ฉ์ถ ์ ์์ต๋๋ค. ์ด ์์ฑ์ ํ๋์ ํ๋ฐ ์ธ์
์์ ๋จ์ผ ๊ฒ์์๋ง ์ํฅ์ ๋ฏธ์น๋ฉฐ(๋ฐ๋ผ์ ์ ์ฒด ๋๊ธฐ์ด์ ๋ชจ๋ ๊ฑฐ์น ํ ASF๋ ํด๋น ํ์ดํ๋ก ๋ค์ ๋์์ต๋๋ค), ์ด ํ๋ ์ดํ์์ด ์๋๋ผ ASF ๋ด๋ถ์ ํ๋ฐ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋ฏ๋ก, ์ฌ์์ ์ดํ์๋ ASF๋ ํด๋น ํ์ดํ๋ก ๋ค์ ๋์์จ๋ค๋ ์ ์ ์ฐธ๊ณ ํ์ธ์. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 15์
๋๋ค. ์ด ์์ฑ์ ์ ํฌ๊ฐ ์์ฉํ ์ ์๋ ๊ฑฐ๋ ๋ณด๋ฅ(trade hold)์ ์ต๋ ๊ธฐ๊ฐ(์ผ ๋จ์)์ ์ ์ํฉ๋๋ค โ ASF๋ ๊ฑฐ๋(trading) ์น์
์ ์ ์๋ ๋๋ก MaxTradeHoldDuration์ผ์ ์ด๊ณผํ์ฌ ๋ณด๋ฅ ์ค์ธ ๊ฑฐ๋๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ์ด ์ต์
์ TradingPreferences๊ฐ SteamTradeMatcher๋ก ์ค์ ๋ ๋ด์๋ง ์๋ฏธ๊ฐ ์์ผ๋ฉฐ, Master/SteamOwnerID ๊ฑฐ๋๋ ๊ธฐ๋ถ(donation)์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๊ฑฐ๋ ๋ณด๋ฅ๋ ๋ชจ๋์๊ฒ ์ฑ๊ฐ์ ์กด์ฌ์ด๋ฉฐ, ๋๊ตฌ๋ ์ด๋ฅผ ๊ตณ์ด ์๋ํ๊ณ ์ถ์ดํ์ง ์์ต๋๋ค. ASF๋ ๊ด๋ํ ๊ท์น์ ๋ฐ๋ผ ์๋ํ๋ฉฐ ๊ฑฐ๋ ๋ณด๋ฅ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋๋ฅผ ๋๋ ๊ฒ์ ์งํฅํฉ๋๋ค โ ๊ทธ๋์ ์ด ์ต์
์ ๊ธฐ๋ณธ์ ์ผ๋ก 15๋ก ์ค์ ๋์ด ์์ต๋๋ค. ํ์ง๋ง ๊ฑฐ๋ ๋ณด๋ฅ์ ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ๊ฑฐ๋๋ฅผ ๊ฑฐ๋ถํ๊ณ ์ถ์ผ์๋ค๋ฉด, ์ฌ๊ธฐ์ 0์ ์ง์ ํ์๋ฉด ๋ฉ๋๋ค. ๊ฑฐ๋(trading) ์น์
์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ, ์๋ช
์ด ์งง์ ์นด๋๋ ์ด ์ต์
์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฉฐ ๊ฑฐ๋ ๋ณด๋ฅ ์ค์ธ ์ฌ์ฉ์์ ๋ํด ์๋์ผ๋ก ๊ฑฐ๋ถ๋๋ฏ๋ก, ๊ทธ๊ฒ ๋๋ฌธ์ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ ์ฒด์ ์ผ๋ก ๊ฑฐ๋ถํ ํ์๋ ์๋ค๋ ์ ์ ์ฐธ๊ณ ํ์ธ์. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 60์
๋๋ค. ์ด ์์ฑ์, ํ์ฌ ํ๋ฐ ์ค์ธ ASF๋ฅผ ๊ฒ์์ ์คํํ์ฌ ๊ฐ์ ๋ก ์ฐ๊ฒฐ ํด์ ์์ผฐ์ ๋ ๋ฐ์ํ๋ LoggedInElsewhere๋ก ์ธํด ์ด์ ์ ์ฐ๊ฒฐ์ด ๋๊ธด ๊ฒฝ์ฐ, ์นด๋ ํ๋ฐ์ ์ฌ๊ฐํ๊ธฐ ์ ๊น์ง ASF๊ฐ ๋๊ธฐํ ์ต์ ์๊ฐ(์ด ๋จ์)์ ์ ์ํฉ๋๋ค. ์ด ๋๋ ์ด๋ ์ฃผ๋ก ํธ์์ฑ ๋ฐ ์ค๋ฒํค๋ ๋ฌธ์ ๋ก ์กด์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, playing lock์ด ์๊ฐ์ ์ผ๋ก ํ๋ ธ๋ค๋ ์ด์ ๋ง์ผ๋ก ASF๊ฐ ๋ค์ ๊ณ์ ์ ์ ์ ํด๋ฒ๋ ค ์ด์ ์ถฉ๋ํ์ง ์๊ณ ๋ ๊ฒ์์ ์ฌ์์ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ธ์
์ ๋ค์ ๊ฐ์ ธ์ค๋ฉด LoggedInElsewhere ์ฐ๊ฒฐ ํด์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์, ASF๋ ์ ์ฒด ์ฌ์ฐ๊ฒฐ ์ ์ฐจ๋ฅผ ๋ค์ ๊ฑฐ์ณ์ผ ํ๋ฉฐ, ์ด๋ ๊ธฐ๊ธฐ์ Steam ๋คํธ์ํฌ์ ์ถ๊ฐ์ ์ธ ๋ถ๋ด์ ์ค๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฅํ๋ค๋ฉด ์ถ๊ฐ์ ์ธ ์ฐ๊ฒฐ ํด์ ๋ฅผ ํผํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ฐ์ 60์ด๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, ํฐ ๋ฒ๊ฑฐ๋ก์ ์์ด ๊ฒ์์ ์ฌ์์ํ๊ธฐ์ ์ถฉ๋ถํ ์๊ฐ์
๋๋ค. ํ์ง๋ง ์ด ๊ฐ์ ๋๋ฆฌ๋ ๊ฒ์ด ์ ์ฉํ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์์ฃผ ๋๊ธฐ๊ณ ASF๊ฐ ๋๋ฌด ๋นจ๋ฆฌ ๊ณ์ ์ ๋ค์ ์ ์ ํด๋ฒ๋ ค์, ๊ฒฐ๊ตญ ์ฌ๋ฌ๋ถ์ด ์ง์ ์ฌ์ฐ๊ฒฐ ๊ณผ์ ์ ๋ค์ ๊ฑฐ์ณ์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ์์ฑ์๋ ์ต๋ 255๊น์ง ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ธ ๋ชจ๋ ์ํฉ์ ์ถฉ๋ถํ ๊ฐ์
๋๋ค. ์ ๋ด์ฉ์ ๋ํด, ๋๋ ์ด๋ฅผ ์ค์ด๊ฑฐ๋ 0 ๊ฐ์ ์ฌ์ฉํด ์์ ์์จ ์๋ ์์ง๋ง, ์์ ์ธ๊ธํ ์ด์ ๋ค๋ก ์ธํด ์ผ๋ฐ์ ์ผ๋ก๋ ๊ถ์ฅํ์ง ์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ ๋ฐํ์ ์ค ASF๊ฐ ์ ํธํ ์ต์ ํ ๋ชจ๋๋ฅผ ์ ์ํฉ๋๋ค. ํ์ฌ ASF๋ ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค โ MaxPerformance๋ผ๊ณ ๋ถ๋ฆฌ๋ 0, ๊ทธ๋ฆฌ๊ณ MinMemoryUsage๋ผ๊ณ ๋ถ๋ฆฌ๋ 1์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ASF๋ ๊ฐ๋ฅํ ํ ๋ง์ ์์
์ ๋ณ๋ ฌ(๋์์)๋ก ์คํํ๋ ๊ฒ์ ์ ํธํ๋ฉฐ, ์ด๋ ๋ชจ๋ CPU ์ฝ์ด, ๋ค์ค CPU ์ค๋ ๋, ๋ค์ค ์์ผ, ๋ค์ค ์ค๋ ๋ํ ์์
์ ๊ฑธ์ณ ์์
์ ๋ถํ ๋ถ์ฐํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์๋ฅผ ๋ค์ด, ASF๋ ํ๋ฐํ ๊ฒ์์ ํ์ธํ ๋ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ง ํ์ด์ง๋ฅผ ์์ฒญํ๊ณ , ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์ค์ ๋ก ๋ช ๊ฐ์ ๋ฐฐ์ง ํ์ด์ง๊ฐ ์๋์ง ์ฝ์ด๋ค์ธ ๋ค์, ๋๋จธ์ง ํ์ด์ง๋ค์ ๋์์ ์์ฒญํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ค๋ฒํค๋๊ฐ ๋ฏธ๋ฏธํ๊ณ , ASF์ ๋น๋๊ธฐ(asynchronous) ์ฝ๋๋ก ์ธํ ์ด์ ์ CPU ์ฝ์ด๊ฐ ํ๋๋ฟ์ด๊ณ ์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋ ๋งค์ฐ ์ค๋๋ ํ๋์จ์ด์์๋ ํ์ธํ ์ ์์ผ๋ฏ๋ก, ๊ฑฐ์ ํญ์ ์ด ๋ฐฉ์์ ์ํ์๊ฒ ๋ ๊ฒ์
๋๋ค. ํ์ง๋ง ๋ง์ ์์
์ด ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ๋๋ ๋์, ASF ๋ฐํ์์ ์์ผ์ ์ด๋ฆฐ ์ํ๋ก ์ ์งํ๊ณ ์ค๋ ๋๋ฅผ ์ด์์๊ฒ ํ๋ฉฐ ์์
์ด ์ฒ๋ฆฌ๋๋๋ก ํ๋ ๋ฑ ์ด๋ฅผ ์ ์ง ๊ด๋ฆฌํด์ผ ํ๋ฉฐ, ์ด๋ก ์ธํด ๋๋๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ทน๋๋ก ์ ํ๋์ด ์๋ค๋ฉด, ์ด ์์ฑ์ 1(MinMemoryUsage)๋ก ์ ํํ์ฌ ASF๊ฐ ์ต๋ํ ์ ์ ์์
๋ง ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ๊ณ , ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ(synchronous) ๋ฐฉ์์ผ๋ก ์คํํ๊ฒ ํ ์ ์์ต๋๋ค. ์ด ์์ฑ์ **์ ๋ฉ๋ชจ๋ฆฌ ์ค์ (low-memory setup)**์ ์ฌ์ ์ ์ฝ์ด๋ณด์
จ๊ณ , ๋งค์ฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋ ๊ฐ์๋ฅผ ์ํด ์๋์ ์ผ๋ก ํฐ ์ฑ๋ฅ ํฅ์์ ํฌ๊ธฐํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์๋ง ์ ํ์ ๊ณ ๋ คํ์
์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์
์ ํจ์ฌ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด๋๋ฐ, **์ ๋ฉ๋ชจ๋ฆฌ ์ค์ (low-memory setup)**์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ ASF ์ฌ์ฉ๋์ ์ ํํ๊ฑฐ๋ ๋ฐํ์์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ํ๋ํ๋ ๋ฑ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌ์ฑํ ์ ์๋ ๊ฒฐ๊ณผ์ ๋นํด ๊ทธ๋ ์ต๋๋ค. ๋ฐ๋ผ์ MinMemoryUsage๋ ๋ค๋ฅธ (ํจ์ฌ ๋ ๋์) ์ต์
๋ค๋ก ๋ง์กฑ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ์ ๋, ๋ฐํ์์ ๋ค์ ์ปดํ์ผํ๊ธฐ ์ง์ ์ ์ตํ์ ์๋จ์ผ๋ก๋ง ์ฌ์ฉํ์
์ผ ํฉ๋๋ค. ์ด ์์ฑ์ ๋ณ๊ฒฝํ ๊ฐ๋ ฅํ ์ด์ ๊ฐ ์๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์งํ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
ImmutableHashSet<string> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ๋น์ด์์ต๋๋ค. ์ด ์์ฑ์ ์๋์ ์ ์๋ PluginsUpdateMode์ ๋ฐ๋ผ, ์๋ ์
๋ฐ์ดํธ ๋์์ผ๋ก ๊ณ ๋ ค๋ ๋ ๋ธ๋๋ฆฌ์คํธ ๋๋ ํ์ดํธ๋ฆฌ์คํธ๋ก ์ฒ๋ฆฌ๋ ํ๋ฌ๊ทธ์ธ ์ด์
๋ธ๋ฆฌ ์ด๋ฆ ๋ชฉ๋ก์ ์ ์ํฉ๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ ์์ ์ ์๋ PluginsUpdateList์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ํ๋ฌ๊ทธ์ธ ์
๋ฐ์ดํธ ๋ชจ๋๋ฅผ ์ ์ํฉ๋๋ค. ์ด ์์ฑ์ ์ง์ ํ๋ฉด ์ ์ธ๋ ํญ๋ชฉ์ ์ ์ธํ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ ์
๋ฐ์ดํธ๋ฅผ ์์ฝ๊ฒ ํ์ฑํ/๋นํ์ฑํํ ์ ์์ต๋๋ค.
- ๊ฐ
0์Whitelist๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ,PluginsUpdateList์ ์ ์๋ ํญ๋ชฉ์ ์ ์ธํ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. - ๊ฐ
1์Blacklist๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ,PluginsUpdateList์ ์ ์๋ ํญ๋ชฉ์ ์ ์ธํ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ํ์ฑํํฉ๋๋ค.
ASF ํ์ ์ฌ๋ฌ๋ถ์ ์์ ์ ์ํด, ์ ๋ขฐํ ์ ์๋ ๊ณณ์์ ์ ๊ณตํ๋ ํ๋ฌ๊ทธ์ธ์ ๋ํด์๋ง ์๋ ์ ๋ฐ์ดํธ๋ฅผ ํ์ฑํํ์๊ธธ ๋ค์ ํ๋ฒ ์๋ด๋๋ฆฝ๋๋ค. ์ ์ฑ ํ๋ฌ๊ทธ์ธ์ ์ด ์ค์ ๊ณผ ๋ฌด๊ดํ๊ฒ ์ค์ค๋ก๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์๊ฒฉ ๋ช ๋ น์ ์คํํ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์. ์ด๋ฌํ ์ด์ ๋ก ์ด ์ค์ ์ ์ค์ง ASF๊ฐ ์ ๊ณตํ๋ ํ๋ฌ๊ทธ์ธ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์๋ง ์ ์ฉ๋๋ฉฐ, ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ์ ์ ํ ๊ฒ์ฆํ๋์ง๋ ์ฌ์ ํ ์ง์ ํ์ธํ์ ์ผ ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ ์
๋ฐ์ดํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ASF ์
๋ฐ์ดํธ ๋ฃจํด์ธ UpdateChannel ๋ฐ **UpdatePeriod**์ ํจ๊ป ์ํ๋ฉ๋๋ค. update ๋ช
๋ น์ด์ ๊ฐ์ ํ์ค ASF ์
๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ๋ ์ ํ์ ํ๋ฌ๊ทธ์ธ ์
๋ฐ์ดํธ๋ฅผ ํจ๊ป ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ๋์ ASF ๋ฒ์ ์ ํจ๊ป ์
๋ฐ์ดํธํ์ง ์๊ณ ํ๋ฌ๊ทธ์ธ๋ง ์๋์ผ๋ก ์
๋ฐ์ดํธํ๊ณ ์ถ๋ค๋ฉด, updateplugins ๋ช
๋ น์ด๋ฅผ ํตํด ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค. ํ์ฑํํ๋ฉด, ASF๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ โ ์ฆ ๋ฑ๋ก๋ ๋ชจ๋ ๋ด์ด ์ ์ง๋ ๊ฒฝ์ฐ โ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ชจ๋ ๋ด ์ธ์คํด์ค์ ShutdownOnFarmingFinished๋ฅผ ํจ๊ป ์ ์ฉํ๋ฉด ํนํ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ง์ง๋ง ๋ด์ ํ๋ฐ์ด ๋๋ฌ์ ๋ ASF๊ฐ ์๋์ผ๋ก ์ข
๋ฃ๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋๋ค์์ ์ฌ์ฉ์๋ ์๋ฅผ ๋ค์ด IPC ์ฌ์ฉ ๋ฑ์ ์ํด ํ๋ก์ธ์ค๊ฐ ํญ์ ์คํ ์ค์ด๊ธธ ๊ธฐ๋ํ๋ฏ๋ก, ์ด ์ต์
์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ "/me "์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF๊ฐ ๋ณด๋ด๋ ๋ชจ๋ Steam ๋ฉ์์ง์ ๋ถ๋ ์ ๋์ฌ๋ฅผ ์ ์ํฉ๋๋ค. ASF๋ ๊ธฐ๋ณธ์ ์ผ๋ก "/me " ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ Steam ๋ํ์์ ๋ด ๋ฉ์์ง๋ฅผ ๋ค๋ฅธ ์์ผ๋ก ํ์ํ์ฌ ๊ตฌ๋ณํ๊ธฐ ์ฝ๋๋ก ํฉ๋๋ค. "/pre " ์ ๋์ฌ๋ ๋น์ทํ ํจ๊ณผ๋ฅผ ๋ด์ง๋ง ๋ค๋ฅธ ํ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ๋์ฌ๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ์๊ณ ๋ชจ๋ ASF ๋ฉ์์ง๋ฅผ ์ ํต์ ๋ฐฉ์์ผ๋ก ๋ณด๋ด๋ ค๋ฉด ์ด ์์ฑ๊ฐ์ ๋น ๋ฌธ์์ด์ด๋ null๋ก ์ค์ ํ ์๋ ์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ Steam ๋ฉ์์ง์๋ง ์ํฅ์ ์ค๋๋ค. IPC์ ๊ฐ์ ๋ค๋ฅธ ์ฑ๋์ ํตํด ๋์์ค๋ ์๋ต์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ASF ํ๋์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋๋๊ฒ๋ ์ข์ ์๊ฐ์
๋๋ค.
ulong ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF ํ๋ก์ธ์ค ์์ ์์ 64๋นํธ ํํ๋ก ๋ Steam ID๋ฅผ ์ ์ํฉ๋๋ค. ๋ด ์ธ์คํด์ค(์ผ๋ฐ ํ๊ฒฝ์ค์ ์ด ์๋๋๋ค)์ ์ฃผ์ธ(Master) ๊ถํ๊ณผ ๋งค์ ์ ์ฌํฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๋น์ ์์ ์ ๋ฉ์ธ Steam ๊ณ์ ์ ID๋ก ์ค์ ํฉ๋๋ค. ์ฃผ์ธ(Master) ๊ถํ์ ๋ด ์ธ์คํด์ค์ ๋ํ ์ ์ฒด ์ ์ด๋ฅผ ๊ฐ์ง๋ง, exit, restart ๋๋ update ๊ฐ์ ์ผ๋ฐ ํ๊ฒฝ์ ๋ช
๋ น์ด๋ SteamOwnerID ์ ์ฉ์
๋๋ค. ์ด๋ ์๋ฅผ ๋ค์ด ์น๊ตฌ๋ค์ ์ํด ๋ด์ ์คํํ๋ฉด์๋, exit ๋ช
๋ น์ด๋ก ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๋ ๋ฑ ASF ํ๋ก์ธ์ค๋ฅผ ์ง์ ์ ์ดํ์ง๋ ๋ชปํ๊ฒ ํ๊ณ ์ถ์ ๋ ํธ๋ฆฌํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 0์ ASF ํ๋ก์ธ์ค์ ์์ ์๊ฐ ์๋ค๋ ๊ฒ์ผ๋ก, ์ผ๋ฐ ASF ๋ช
๋ น์ ๋๊ตฌ๋ ์คํํ ์ ์๋ค๋ ๋ป์
๋๋ค. ์ด ์์ฑ์ Steam ์ฑํ
์๋ง ์ ์ฉ๋๋ค๋ ์ ์ ์ ์ํ์ธ์. **IPC**์ ์ธํฐ๋ํฐ๋ธ ์ฝ์์์๋ ์ด ์์ฑ์ด ์ค์ ๋์ด ์์ง ์๋๋ผ๋ ์ฌ์ ํ Owner ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 7์
๋๋ค. ์ด ์์ฑ๊ฐ์ ASF๊ฐ Steam ์๋ฒ์ ์ ์ํ ๋ ์ฌ์ฉํ Steam ํ๋กํ ์ฝ์ ์ ์ํฉ๋๋ค. ์ ์๋ ์๋์ ๊ฐ์ต๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํ๋กํ ์ฝ ์์ |
| 1 | TCP | Transmission Control Protocol |
| 2 | UDP | User Datagram Protocol |
| 4 | WebSocket | WebSocket |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด **JSON ๋งคํ**์ ํ์ธํด๋ณด์ธ์. ์ด๋ค ํ๋๊ทธ๋ ํ์ฑํํ์ง ์์ผ๋ฉด ์์(None) ์ต์
๊ณผ ๋์ผํ๋ฉฐ, ์ด๋ ์ ํจํ์ง ์์ ๊ฐ์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ASF๋ ๋ค์ดํ์(downtime) ๋ฐ ์ด์ ์ ์ฌํ Steam ๋ฌธ์ ์ ๋์ํ๊ธฐ ์ํ ์๋จ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ Steam ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ASF๊ฐ ํ๋ ๋๋ ๋ ๊ฐ์ ํน์ ํ๋กํ ์ฝ๋ง ์ฌ์ฉํ๋๋ก ์ ํํ๊ณ ์ถ์ ๋ ์ด ์์ฑ์ ๋ณ๊ฒฝํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์กฐ์น๋ ๋ค์ํ ์ํฉ์์ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐฉํ๋ฒฝ์์ UDP ํธ๋ํฝ์ ์ฐจ๋จํ๊ณ TCP ํธ๋ํฝ๋ง ํต๊ณผํ๋๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ํน์ WebProxy๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉฐ ์ด๋ฅผ Steam ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์๋ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ์
๋๋ค(์ด๋ WebSocket ํ๋กํ ์ฝ์์๋ง ์ง์๋ฉ๋๋ค).
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 1์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์๋ ์
๋ฐ์ดํธ(UpdatePeriod ๊ฐ 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ)๋ ์
๋ฐ์ดํธ ์๋ฆผ์์ ์ฌ์ฉํ ์
๋ฐ์ดํธ ์ฑ๋์ ์ ์ํฉ๋๋ค. ํ์ฌ ASF๋ ์ธ ๊ฐ์ง ์
๋ฐ์ดํธ ์ฑ๋์ ์ง์ํฉ๋๋ค โ None์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ 0, Stable์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ 1, ๊ทธ๋ฆฌ๊ณ PreRelease๋ผ๊ณ ๋ถ๋ฆฌ๋ 2์
๋๋ค. ์์ (Stable) ์ฑ๋์ ๊ธฐ๋ณธ ๋ฆด๋ฆฌ์ค ์ฑ๋๋ก, ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํด์ผ ํฉ๋๋ค. PreRelease ์ฑ๋์ Stable ๋ฆด๋ฆฌ์ค๋ฟ๋ง ์๋๋ผ, ์๋ก์ด ๊ธฐ๋ฅ์ ํ
์คํธํ๊ณ ๋ฒ๊ทธ ์์ ์ ํ์ธํ๊ฑฐ๋ ์์ ๋ ๊ฐ์ ์ฌํญ์ ๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ณ ๊ธ ์ฌ์ฉ์ ๋ฐ ๊ธฐํ ๊ฐ๋ฐ์ ์ ์ฉ์ pre-release๋ ํฌํจํฉ๋๋ค. PreRelease ๋ฒ์ ์๋ ์์ง ํจ์น๋์ง ์์ ๋ฒ๊ทธ, ๊ฐ๋ฐ ์ค์ธ ๊ธฐ๋ฅ, ๋๋ ์๋ก ์์ฑ๋ ๊ตฌํ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ค์ค๋ก๋ฅผ ๊ณ ๊ธ ์ฌ์ฉ์๋ผ๊ณ ์๊ฐํ์ง ์๋๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ 1(Stable) ์
๋ฐ์ดํธ ์ฑ๋์ ์ ์งํ์๊ธฐ ๋ฐ๋๋๋ค. PreRelease ์ฑ๋์ ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ๋ ๋ฒ์ ์๊ณ , ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ํผ๋๋ฐฑ์ ์ค ์ ์๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ฑ๋์
๋๋ค - ๊ธฐ์ ์ง์์ ์ ๊ณต๋์ง ์์ต๋๋ค. ๋ ์๊ณ ์ถ๋ค๋ฉด ASF์ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค. ๋ชจ๋ ๋ฒ์ ํ์ธ์ ์์ ํ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด UpdateChannel์ 0(์์(None))์ผ๋ก ์ค์ ํ ์๋ ์์ต๋๋ค. UpdateChannel์ 0์ผ๋ก ์ค์ ํ๋ฉด update ๋ช
๋ น์ ํฌํจํ ์
๋ฐ์ดํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ๋นํ์ฑํํฉ๋๋ค. ์๋์ UpdatePeriod ์ค๋ช
์์ ์ธ๊ธํ๋ ๋ชจ๋ ์ข
๋ฅ์ ๋ฌธ์ ์ ๋
ธ์ถ๋๋ฏ๋ก ์์(None) ์ฑ๋์ ํ์ง ์๊ธฐ๋ฅผ ๊ฐ๋ ฅํ๊ฒ ๊ถ๊ณ ํฉ๋๋ค.
์ง๊ธ ํ๊ณ ์๋ ๊ฒ์ด ๋ญ์ง ์๊ณ ์์ง ์๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋๋ ๊ฒ์ ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 24์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์๋ ์
๋ฐ์ดํธ๋ฅผ ์ํด ASF๊ฐ ์ผ๋ง๋ ์์ฃผ ํ์ธํ ์ง๋ฅผ ์ ์ํฉ๋๋ค. ์
๋ฐ์ดํธ๋ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ์ฌ๊ฐํ ๋ณด์ ํจ์น๋ฅผ ๋ฐ๊ธฐ์ํด์ ๋ฟ ์๋๋ผ ๋ฒ๊ทธ์์ , ์ฑ๋ฅ๊ฐ์ , ์์ ์ฑ ํฅ์ ๋ฑ์ ์ํด์๋ ์ค์ํฉ๋๋ค. 0๋ณด๋ค ํฐ ๊ฐ์ด ์ค์ ๋๋ฉด ASF๋ ์๋ก์ด ์
๋ฐ์ดํธ๊ฐ ๋์ค๋ฉด ์๋์ผ๋ก ๋ค์ด๋ก๋๋ฐ์ ๊ต์ฒดํ๊ณ ์ฌ์์(AutoRestart๊ฐ ํ์ฉ๋ ๊ฒฝ์ฐ)ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๊ธฐ ์ํด์ ASF๋ ๋งค UpdatePeriod ์๊ฐ๋ง๋ค ์ ์
๋ฐ์ดํธ๊ฐ GitHub repo์ ์๋์ง ํ์ธํฉ๋๋ค. 0 ๊ฐ์ ์๋ ์
๋ฐ์ดํธ๋ฅผ ๋นํ์ฑํ ํฉ๋๋ค. ํ์ง๋ง ์๋์ผ๋ก update ๋ช
๋ น์ ์คํํ ์๋ ์์ต๋๋ค. UpdateChannel์ ๋ฐ๋ผ UpdatePeriod๊ฐ ์ ์ ํ ์ค์ ๋๋๋ก ํ๋ ๊ฒ์๋ ๊ด์ฌ์ด ์์ผ์ค ์ ์์ต๋๋ค.
์
๋ฐ์ดํธ ๊ณผ์ ์์๋ ASF๊ฐ ์ฌ์ฉ ์ค์ธ ํด๋ ๊ตฌ์กฐ ์ ์ฒด๊ฐ ๊ฐฑ์ ๋์ง๋ง, config ๋๋ ํ ๋ฆฌ์ ์๋ ์ฌ์ฉ์ ๋ณธ์ธ์ ์ค์ ํ์ผ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค - ์ฆ, ASF ๋๋ ํ ๋ฆฌ ๋ด์ ์๋ ASF์ ๊ด๋ จ ์๋ ์ถ๊ฐ ํ์ผ๋ค์ ์
๋ฐ์ดํธ ๊ณผ์ ์์ ์์ค๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 24๋ ๋ถํ์ํ ํ์ธ๊ณผ ์ถฉ๋ถํ ์์ ํ๊ฐ์ ์ ์ ํ ๊ท ํ์ ์
๋๋ค.
์ด ์์ฑ๊ฐ์ ๋นํ์ฑํํ ๋ช
ํํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๋น์ ์์ ์ ์ํด์ ํฉ๋ฆฌ์ ์ธ UpdatePeriod ๊ธฐ๊ฐ์ผ๋ก ์๋ ์
๋ฐ์ดํธ๋ฅผ ํ์ฑํ์ํ๋ก ์ ์งํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ต์ ์ ์์ ASF ๋ฆด๋ฆฌ์ค๋ง ์ง์ํ๋ฉฐ, ์ต์ ๋ฒ์ ์๋ง ๋ณด์์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ง์ฝ ์ค๋๋ ASF ๋ฒ์ ์ ์ฌ์ฉํ๋ค๋ฉด, ์์ ๋ฒ๊ทธ๋ถํฐ ๊ธฐ๋ฅ ๊นจ์ง, ์ข
๊ตญ์๋ ์๊ตฌ์ ์ธ Steam ๊ณ์ ์ ์ง ๊น์ง ์จ๊ฐ ์ข
๋ฅ์ ์ด์์ ์ผ๋ถ๋ฌ ๋
ธ์ถํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์ ์ ์ํด์ ํญ์ ASF๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ ๊ฒ์ ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํฉ๋๋ค. ์๋ ์
๋ฐ์ดํธ๋ ๋ฌธ์ ๊ฐ ๋๋ ์ฝ๋๋ฅผ ์ผ์ด ์ปค์ง๊ธฐ ์ ์ ๋นํ์ฑํ ํ๊ฑฐ๋ ํจ์นํ์ฌ ๋ชจ๋ ์ข
๋ฅ์ ์ด์์ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๊ฒ ํฉ๋๋ค. ํ์ง ์๊ฒ ๋ค๋ฉด ๋ชจ๋ ๋ณด์์ฑ ๋ณด์ฅ์ ๋ฒ๋ฆฌ๊ณ Steam ๋คํธ์ํฌ ๋ฟ ์๋๋ผ ์์ ์ Steam ๊ณ์ ์๋ ์ ์ฌ์ ์ผ๋ก ํด๋ก์ธ ์ ์๋ ์ฝ๋๋ฅผ ์คํํ๋ ์ํ์ ๊ฐ์ํ๋ ๊ฒ์
๋๋ค.
ushort ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 300์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋์ผํ Steam ์น์๋น์ค์ ์ ์กํ ๋๊ฐ์ ์ฐ์ํ ์์ฒญ๊ฐ์ ์ต์ ์ง์ฐ์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ ์ํฉ๋๋ค. ์ด ์ง์ฐ์ ์ฃผ์ด์ง ์๊ฐ์ ๋ณด๋ด์ง ์์ฒญ์ ์ ์ฒด ๊ฑด ์์ ๋ฐ๋ฅธ ๋ฑ๋ก ํ์ฑํ ์ ํ์ ํฌํจํด์ Steam์ด ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ AkamaiGhost ์๋น์ค์ ํํ๋ก ํ์ํฉ๋๋ค. ๋ณดํต ์ํฉ์์ akamai ์ฐจ๋จ์ ์ ์ผ์ด๋์ง ์์ง๋ง, ๊ฑฐ๋ํ๊ณ ์ง์์ ์ธ ์ผ๋ จ์ ์์ฒญ์ผ๋ก ๋งค์ฐ ๋ถํ๊ฐ ์ฌํ๋ค๋ฉด ๋งค์ฐ ์งง์ ์๊ฐ๋์ ๋งค์ฐ ๋ง์ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ฐจ๋จ์ด ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ASF๊ฐ steamcommunity.com, api.steampowered.com ๊ทธ๋ฆฌ๊ณ store.steampowered.com์ ๊ฐ์ Steam ์น์๋น์ค์ ์ ๊ทผํ๋ ์ ์ผํ ๋๊ตฌ๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ค์ ํ์์ต๋๋ค. ๋์ผํ ์น์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉ์ค์ด๋ผ๋ฉด ๊ทธ ๋๊ตฌ์ WebLimiterDelay์ ์ ์ฌํ ๊ธฐ๋ฅ์ด ์๋์ง๋ฅผ ํ์ธํ๊ณ , ์ ์ชฝ ๋ชจ๋๋ฅผ ๊ธฐ๋ณธ๊ฐ์ ๋๋ฐฐ์ธ 600 ์ ๋๋ก ์ค์ ํ์ฌ์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ค ๊ฒฝ์ฐ์์๊ฑด ํ๊ฐ์ ์์ฒญ์ด 300 ms์ ๋์ง ์์ ๊ฒ์
๋๋ค.
์ผ๋ฐ์ ์ผ๋ก WebLimiterDelay๋ฅผ ๊ธฐ๋ณธ๊ฐ๋ณด๋ค ๋ฎ์ถ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅ๋์ง ์์ต๋๋ค. IP ๊ด๋ จ ์ฐจ๋จ์ผ๋ก ์ด์ด์ง ์ ์์ผ๋ฉฐ, ์ด ์ค ์ผ๋ถ๋ ์๊ตฌ์ ์ผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์๋ฒ์์ ๋จ์ผ ASF ์ธ์คํด์ค๋ฅผ ์คํํ๋๋ฐ๋ ์ถฉ๋ถํ๊ณ , ์๋ณธ Steam ํด๋ผ์ด์ธํธ์ ํจ๊ป ASF๋ฅผ ์ ์์ ์ธ ์๋๋ฆฌ์ค๋๋ก ์ฌ์ฉํ๋๋ฐ๋ ์ถฉ๋ถํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ ํ๋ฉฐ, ๊ฐ์ ์กฐ์ ํด์ผ ํ๋ค๋ฉด ๋ฎ์ถ์ง ๋ง๊ณ ๋๋ฆฌ๊ธฐ๋ง ํด์ผ ํฉ๋๋ค. ์ฆ, ๋จ์ผ IP์์ ๋จ์ผ Steam ๋๋ฉ์ธ์ผ๋ก ๋ณด๋ด์ง๋ ๋ชจ๋ ์์ฒญ์ ์ ์ฒด ์ซ์๋ ์ ๋ 300 ms ๋น 1๊ฐ ์์ฒญ์ ์ด๊ณผํด์๋ ์๋ฉ๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ์ ๋ด๋ถ http ๊ด๋ จ ํต์ , ํนํ github.com, api.steampowered.com, steamcommunity.com, store.steampowered.com๊ณผ ๊ฐ์ ์๋น์ค์ ์ฌ์ฉ๋ ์น ํ๋ก์ ์ฃผ์๋ฅผ ์ ์ํฉ๋๋ค. ์ด ์ค์ ์ ์ผ๋ฐ(๋ด์ ๊ตญํ๋์ง ์๋) ํต์ ๋ฟ๋ง ์๋๋ผ, ํด๋น ๋ด์ WebProxy ์ค์ ์์ฑ์ด ์ง์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ๋ด๋ณ ํต์ ์๋ ์ ์ฉ๋ฉ๋๋ค. ASF ์์ฒญ์ ํ๋ก์๋ฅผ ํตํด ์ ๋ฌํ๋ ๊ฒ์ ๋ค์ํ ์ข
๋ฅ์ ๋ฐฉํ๋ฒฝ, ํนํ ์ค๊ตญ์ ๋ง๋ฆฌ๋ฐฉํ๋ฒฝ์ ์ฐํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ์๋์ ๊ฐ์ uri ๋ฌธ์์ด๋ก ์ ์๋ฉ๋๋ค.
URI ๋ฌธ์์ด์ ์คํด(ํ๋กํ ์ฝ)(์ง์ ํ์: http/https/socks4/socks4a/socks5), ํธ์คํธ, ๊ทธ๋ฆฌ๊ณ ์ ํ ์ฌํญ์ธ ํฌํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ค์์ ์์ ํ uri ๋ฌธ์์ด์ ์์์ ๋๋ค.
"http://contoso.com:8080".
ํ๋ก์๊ฐ ์ธ์ฆ์ ํ์๋ก ํ๋ฉด, WebProxyUsername๊ณผ WebProxyPassword๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ด ํ์๊ฐ ์๋ค๋ฉด ์ด ์์ฑ๊ฐ์ ์ค์ ํ๋ ๊ฒ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
๋ด๋ถ Steam ๋คํธ์ํฌ ํต์ (CM)๋ ํ๋ก์๋ก ์ฐํ์ํค๊ณ ์ ํ๋ค๋ฉด, ๋ด์ SteamProtocols ์์ฑ์ ์ค์ง websocket ์ ์ก๋ง ํ์ฉํ๋ ๊ฐ, ์ฆ 4๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ํ๋ก์๋ก๋ websocket๋ง ์ง์๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋์ WebProxy ๊ธฐ๊ธฐ์์ ์ง์ํ๋ ๊ธฐ๋ณธ, digest, NTLM, Kerberos ์ธ์ฆ์ ์ฌ์ฉ๋๋ ์ํธ ํ๋๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ก์๊ฐ ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช
์ ํ์๋ก ํ์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ์ ์๋ฌด๊ฒ๋ ๋ฃ์ ํ์๊ฐ ์์ต๋๋ค. WebProxy๊ฐ ์ฌ์ฉ๋ ๋ ์ด ์ต์
์ ์ฌ์ฉ๋ ์๋ฏธ๊ฐ ์๊ณ , ๊ทธ์ธ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋์ WebProxy ๊ธฐ๊ธฐ์์ ์ง์ํ๋ ๊ธฐ๋ณธ, digest, NTLM, Kerberos ์ธ์ฆ์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์์ด๋ฆ ํ๋๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ก์๊ฐ ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช
์ ํ์๋ก ํ์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ์ ์๋ฌด๊ฒ๋ ๋ฃ์ ํ์๊ฐ ์์ต๋๋ค. WebProxy๊ฐ ์ฌ์ฉ๋ ๋ ์ด ์ต์
์ ์ฌ์ฉ๋ ์๋ฏธ๊ฐ ์๊ณ , ๊ทธ์ธ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
๋น์ ์ด ์ด๋ฏธ ์๋ค์ํผ, ๋ชจ๋ ๋ด์ ์์ ๋ง์ ์ค์ ์ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค. ์๋๋ ๊ธฐ๋ณธ์ด ๋๋ JSON๊ตฌ์กฐ์ ์์์
๋๋ค. 1.json, main.json, primary.json ๋๋ AnythingElse.json ๋ฑ ๋ด์ ์ด๋ฆ์ ์ง๋ ๊ฒ๋ถํฐ ์์ํด์ ํ๊ฒฝ์ค์ ์ผ๋ก ๋์ด๊ฐ๋๋ค.
์ฃผ์: ๋ด์ ASF๋ก ๋ช
๋ช
ํ ์ ์์ต๋๋ค. ASF๋ ์ผ๋ฐ ํ๊ฒฝ์ค์ ์ ์ํ ์์ฝํค์๋์
๋๋ค. ๋ํ ์ (.)์ผ๋ก ์์ํ๋ ๋ชจ๋ ํ๊ฒฝ์ค์ ํ์ผ์ ๋ฌด์ํฉ๋๋ค.
๋ด ํ๊ฒฝ์ค์ ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ต๋๋ค.
{
"AcceptGifts": false,
"BotBehaviour": 0,
"CompleteTypesToSend": [],
"CustomGamePlayedWhileFarming": null,
"CustomGamePlayedWhileIdle": null,
"Enabled": false,
"FarmingOrders": [],
"FarmingPreferences": 0,
"GamesPlayedWhileIdle": [],
"GamingDeviceType": 1,
"HoursUntilCardDrops": 3,
"LootableTypes": [1, 3, 5],
"MachineName": null,
"MatchableTypes": [5],
"OnlineFlags": 0,
"OnlineStatus": 1,
"PasswordFormat": 0,
"RedeemingPreferences": 0,
"RemoteCommunication": 3,
"SendTradePeriod": 0,
"SteamLogin": null,
"SteamMasterClanID": 0,
"SteamParentalCode": null,
"SteamPassword": null,
"SteamTradeToken": null,
"SteamUserPermissions": {},
"TradeCheckPeriod": 60,
"TradingPreferences": 0,
"TransferableTypes": [1, 3, 5],
"UseLoginKeys": true,
"UserInterfaceMode": 0,
"WebProxy": null,
"WebProxyPassword": null,
"WebProxyUsername": null
}๋ชจ๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค. ํ์ฑํ ๋์ด์์ผ๋ฉด ASF๋ ์๋์ผ๋ก ๋ด์ผ๋ก ๋ณด๋ด์ง๋ ๋ชจ๋ Steam ์ ๋ฌผ(์๋ ๊ธฐํํธ์นด๋ ํฌํจ)์ ์๋ฝํ๊ณ ๋ฑ๋กํฉ๋๋ค. SteamUserPermissions์์ ์ ์๋ ์ฌ์ฉ์ ์ด์ธ์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ์ ๋ฌผ๋ ํฌํจ๋ฉ๋๋ค. ์ด๋ฉ์ผ ์ฃผ์๋ก ๋ณด๋ธ ์ ๋ฌผ์ ํด๋ผ์ด์ธํธ๋ก ์ง์ ์ ๋ฌ๋์ง ์์์ ๋ช
์ฌํ์ญ์์ค. ASF๋ ๋น์ ์ ๋์ ์์ด๋ ๊ทธ๊ฒ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ด ์ต์
์ ๋ถ๊ณ์ ์ ๊ถ์ฅํฉ๋๋ค. ์ฃผ ๊ณ์ ์ ๋ชจ๋ ์ ๋ฌผ์ ์๋์ผ๋ก ๋ฑ๋กํ์ง๋ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ง ์๋์ง ๋ถํ์คํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ false๋ฅผ ์ ์งํ์ญ์์ค.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ค์ํ ์ด๋ฒคํธ ๋ฐ์์ ASF ๋ด์ ํ๋์ ์๋์ ๊ฐ์ด ์ ์ํฉ๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํน๋ณํ ๋ด ๋์ ์์, ๋ฌด๋ํ ๊ธฐ๋ณธ ์ค์ |
| 1 | ์ ํจํ์ง ์์ ์น๊ตฌ์ด๋ ๊ฑฐ์ (RejectInvalidFriendInvites) | ASF๋ ์ ํจํ์ง ์์ ์น๊ตฌ ์ด๋๋ฅผ ๊ฑฐ์ ํฉ๋๋ค.(๋ฌด์ ์๋) |
| 2 | ์ ํจํ์ง ์์ ๊ฑฐ๋ ๊ฑฐ์ (RejectInvalidTrades) | ASF๋ ์ ํจํ์ง ์์ ๊ฑฐ๋ ์ ์์ ๊ฑฐ์ ํฉ๋๋ค.(๋ฌด์ ์๋) |
| 4 | ์ ํจํ์ง ์์ ๊ทธ๋ฃน ์ด๋ ๊ฑฐ์ (RejectInvalidGroupInvites) | ASF๋ ์ ํจํ์ง ์์ ๊ทธ๋ฃน ์ด๋๋ฅผ ๊ฑฐ์ ํฉ๋๋ค.(๋ฌด์ ์๋) |
| 8 | ๋ณด๊ดํจ ์๋ฆผ ํด์ (DismissInventoryNotifications) | ASF๊ฐ ๋ชจ๋ ๋ณด๊ดํจ ์๋ฆผ์ ์๋์ผ๋ก ํด์ ํฉ๋๋ค. |
| 16 | ๋ฐ์ ๋ฉ์์ง ์ฝ์์ํ๋ก ํ์(MarkReceivedMessagesAsRead) | ASF๊ฐ ๋ชจ๋ ๋์ฐฉํ ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ์ฝ์ ์ํ๋ก ํ์ํฉ๋๋ค. |
| 32 | ๋ด ๋ฉ์์ง ์ฝ์์ํ๋ก ํ์ (MarkBotMessagesAsRead) | ASF๊ฐ (๊ฐ์ ์ธ์คํด์ค์์ ์คํ ์ค์ธ) ๋ค๋ฅธ ASF ๋ด์ผ๋ก๋ถํฐ ์จ ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ์ฝ์ ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค. |
| 64 | ๋ค์ด์ค๋ ๊ฑฐ๋ ํ์ฑ ๋นํ์ฑํ (DisableIncomingTradesParsing) | ASF๊ฐ ๋ค์ด์ค๋ ๊ฑฐ๋ ์ ์(trade offer)์ ์ ๋ ์ฒ๋ฆฌํ์ง ์๋๋ก ํฉ๋๋ค. |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด **json mapping**์ ์ฐธ๊ณ ํ์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ด ํ๋๊ณผ ๊ด๋ จ๋ ๋ค์ํ ์๋ํ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ ํ ๋ ์ด ์์ฑ์ ์์ ํ๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์ค์ ์ ASF๊ฐ ๋น์นจํด์ (non-invasive) ๋ชจ๋๋ก ์คํ๋๋๋ก ๋์ด ์์ผ๋ฉฐ, ์ด๋ ์ฌ์ฉ์์ ์์ฌ์ ๋ฐํ์ง ์๋ ์ ์ตํ ์๋ํ๋ง์ ํ์ฉํฉ๋๋ค.
์ ํจํ์ง ์์ ์น๊ตฌ ์ด๋๋ SteamUserPermissions์ ์ ์๋ ๊ฐ์กฑ ๊ณต์ (FamilySharing) ์ด์์ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ์๋ ์ฌ๋์ผ๋ก ๋ถํฐ ์จ ์น๊ตฌ ์ด๋์
๋๋ค. ์์ํ์๋ ๋๋ก ๋ณดํต ๋ชจ๋์์ ASF๋ ์ด ์ด๋๋ฅผ ๋ฌด์ํ๊ณ ์ด๋ฅผ ๋ฐ์๋ค์ผ์ง ๋ง์ง ์ ํ๊ถ์ ๋น์ ์๊ฒ ์ค๋๋ค. ์ ํจํ์ง ์์ ์น๊ตฌ์ด๋ ๊ฑฐ์ (RejectInvalidFriendInvites)์ ์ด๋ฌํ ์ด๋๋ฅผ ์๋์ผ๋ก ๊ฑฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ ์ ์ผ๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋น์ ์ ์น๊ตฌ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ ์ต์
์ ๋ง์ต๋๋ค. ๋น์ ์ด SteamUserPermissions์ ์ ์ํ ์ฌ๋๋ค์ ์ ์ธํ๊ณ ๊ทธ๋ฐ ์์ฒญ์ ๋ชจ๋ ๊ฑฐ๋ถํฉ๋๋ค. ๋ชจ๋ ์น๊ตฌ ์ด๋๋ฅผ ์์ ํ ๊ฑฐ๋ถํ๋ ค๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์ด ์ต์
์ ํ์ฑํํด์๋ ์๋ฉ๋๋ค.
์ ํจํ์ง ์์ ๊ฑฐ๋ ์ ์์ ๋ด์ฅ๋ ASF ๋ชจ๋์์ ์๋ฝ๋์ง ์๋ ์ ์์
๋๋ค. ASF๊ฐ ์๋์ผ๋ก ์๋ฝํ๋ ค๊ณ ํ๋ ๊ฑฐ๋ ํ์์ ๋ช
์์ ์ ์๋ ๊ฑฐ๋ ํญ๋ชฉ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ ํจํ ๊ฑฐ๋๋ ๋ค๋ฅธ ์ค์ , ํนํ TradingPreferences์๋ ์ ์๋์ด ์์ต๋๋ค. RejectInvalidTrades๋ ๋ชจ๋ ์ ํจํ์ง ์์ ๊ฑฐ๋ ์ ์์ ๋ฌด์ํ๋ ๋์ ๊ฑฐ๋ถํฉ๋๋ค. ASF์์ ์๋์ผ๋ก ์๋ฝํ์ง ์๋ ๋ชจ๋ ๊ฑฐ๋ ์ ์์ ์์ ํ ๊ฑฐ๋ถํ๋ ค๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์ด ์ต์
์ ํ์ฑํ ํด์๋ ์๋ฉ๋๋ค.
์ ํจํ์ง ์์ ๊ทธ๋ฃน ์ด๋๋ SteamMasterClanID ๊ทธ๋ฃน์ด ์๋ ๊ทธ๋ฃน์์ ์จ ์ด๋์
๋๋ค. ์์ํ์๋๋๋ก ๋ณดํต ๋ชจ๋์์ ASF๋ ์ด๋ฌํ ๊ทธ๋ฃน ์ด๋๋ฅผ ๋ฌด์ํ๊ณ , ํน์ Steam ๊ทธ๋ฃน์ ๊ฐ์
ํ ์ง ๋ง์ง๋ฅผ ์ค์ค๋ก ์ ํ๋๋ก ํฉ๋๋ค. ์ ํจํ์ง ์์ ๊ทธ๋ฃน์ด๋ ๊ฑฐ์ (RejectInvalidGroupInvites)์ ์ด๋ฌํ ๊ทธ๋ฃน ์ด๋๋ฅผ ์๋์ผ๋ก ๊ฑฐ์ ํ๊ณ , SteamMasterClanID๊ฐ ์๋ ๋ค๋ฅธ ๊ทธ๋ฃน์ด ๋น์ ์ ์ด๋ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ชจ๋ ๊ทธ๋ฃน ์ด๋๋ฅผ ์์ ํ ๊ฑฐ๋ถํ๋ ค๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์ด ์ต์
์ ํ์ฑํํด์๋ ์๋ฉ๋๋ค.
DismissInventoryNotifications๋ ์ ์์ดํ
์์ ์ ๋ํ Steam ์๋ฆผ์ด ๊ณ์ ๋ ์ ๊ฑฐ์ฌ๋ฆฌ๊ธฐ ์์ํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด ์๋ฆผ์ Steam ํด๋ผ์ด์ธํธ์ ๋ด์ฅ๋์ด์๊ธฐ ๋๋ฌธ์ ASF๊ฐ ์ด ์๋ฆผ์ ์์จ์๋ ์์ง๋ง, ์๋ฆผ์ ๋ฐ์ ํ ์ด๋ฅผ ์๋์ผ๋ก ํด๋ฆฌ์ด ํ ์๋ ์์ผ๋ฉฐ, "์๋ก์ด ๋ณด๊ดํจ ํญ๋ชฉ" ์๋ฆผ์ ๋๋์ง ์์๋ ๋ฉ๋๋ค. ์์ ํ ๋ชจ๋ ์์ดํ
(ํนํ ASF๋ก ํ๋ฐํ ์นด๋)์ ์ง์ ํ์ธํ ๊ณํ์ด๋ผ๋ฉด, ๋น์ฐํ ์ด ์ต์
์ ํ์ฑํํด์๋ ์ ๋ฉ๋๋ค. ๋ฏธ์ณ๊ฐ๊ณ ์๋ค๋ฉด ์ด ์ต์
์ด ์์์ ๊ธฐ์ตํ์ญ์์ค.
MarkReceivedMessagesAsRead๋ ASF๊ฐ ์คํ ์ค์ธ ๊ณ์ ์ด ์์ ํ๋ ๋ชจ๋ ๋ฉ์์ง(๊ฐ์ธ ๋ฐ ๊ทธ๋ฃน ์ฑํ
ํฌํจ)๋ฅผ ์๋์ผ๋ก ์ฝ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ ๋ณดํต ๋ถ๊ณ์ ์์ ASF ๋ช
๋ น์ด ์ํ์ค์ ์์ ์ด ๋ณด๋ธ "์๋ก์ด ๋ฉ์์ง"๋ฅผ ํด๋ฆฌ์ดํ๊ธฐ ์ํด์๋ง ์ฌ์ฉํฉ๋๋ค. ๋น์ ์ ์คํ๋ผ์ธ์ด์ง๋ง ASF๋ ์ฌ์ ํ ์๋ฆผ์ ํด์ ํ๊ณ ์์๋ ๋ฉ์์ง๋ฅผ ํฌํจํ ๋ชจ๋ ์ข
๋ฅ์ ์๋ก์ด ๋ฉ์์ง ์๋ฆผ์ ์๋ผ๋ด๋ฒ๋ฆฌ๊ณ ์ถ์ง ์๋ ํ, ์ด ์ต์
์ ์ฃผ ๊ณ์ ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
MarkBotMessagesAsRead๋ ์ด์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ์๋ํ์ง๋ง, ๋ด ๋ฉ์์ง๋ง ์ฝ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ค๋ง, ๋ด๊ณผ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ํจ๊ป ์๋ ๊ทธ๋ฃน ์ฑํ
์์ ์ด ์ต์
์ ์ฌ์ฉํ ๊ฒฝ์ฐ, Steam์ ์ฑํ
๋ฉ์์ง ํ์ธ(acknowledge) ๋ฐฉ์์ ์ฝ์ ์ฒ๋ฆฌํ๋ ค๋ ๋ฉ์์ง ์ด์ ์ ๋ฐ์ํ ๋ชจ๋ ๋ฉ์์ง ๋ํ ํจ๊ป ํ์ธ ์ฒ๋ฆฌํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ฐ๋ผ์ ๊ทธ ์ฌ์ด์ ๋ฐ์ํ ๊ด๋ จ ์๋ ๋ฉ์์ง๋ฅผ ๋์น๊ณ ์ถ์ง ์๋ค๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋น์ฐํ, ๊ฐ์ ASF ์ธ์คํด์ค์์ ์ฌ๋ฌ ๊ฐ์ ์ฃผ ๊ณ์ (์: ์๋ก ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณ์ )์ ์ด์ฉ ์ค์ธ ๊ฒฝ์ฐ์๋ ์ํํ ์ ์์ต๋๋ค. ASF์ ๋ฌด๊ดํ ์ผ๋ฐ ๋ฉ์์ง๋ฅผ ๋์น ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
DisableIncomingTradesParsing๋ ASF๊ฐ ๋ค์ด์ค๋ ๊ฑฐ๋ ์ ์์ ํ์ฑํ์ง ์๋๋ก ํฉ๋๋ค. ์ฆ, ์ด์ ๊ด๋ จ๋ ๊ฑฐ๋ ๊ธฐ๋ฅ ์ ์ฒด๊ฐ ์๋ํ์ง ์๊ฒ ๋ฉ๋๋ค. ASF๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ์นจํด ๋ชจ๋๋ก ๋์ํ์ฌ Master ์ด์ ๊ถํ์ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ๊ฑฐ๋ ์ ์๋ง ์๋ฝํ๊ณ ๊ทธ ์ธ์ ๊ฑฐ๋ ์ ์์ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค - ๋ฐ๋ผ์ ๋ค์ด์ค๋ ๊ฑฐ๋ ํ์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. ์ด ์ค์ ์ ๊ฑฐ๋ ํ์ฑ๊ณผ ๊ด๋ จ๋ ์ถ๊ฐ ์์ฒญ/์ค๋ฒํค๋๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ด๋ จ ๋ก์ง ์ ์ฒด๋ฅผ ๋นํ์ฑํํ๊ณ ์ถ์ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ์ ๋ด์ด master๋ก๋ถํฐ ๊ฑฐ๋ ์์ฒญ์ ๋ฐ์ ์ผ์ด ์ ํ ์์ด์ ๊ฑฐ๋ ํ๋์ ASF๊ฐ ๊ด์ฌํ ํ์๊ฐ ์์ ์๋ค๋ ๊ฒ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์ด์ ํด๋นํฉ๋๋ค. ์ด ์ต์
์ ์ง์ ํ๋ฉด AcceptDonations๋ SteamTradeMatcher์ฒ๋ผ ๋ค์ด์ค๋ ๊ฑฐ๋์ ์์กดํ๋ ๋ค๋ฅธ ์ต์
๋ค๋ ๋ชจ๋ ํจ๊ป ๋นํ์ฑํ๋๋ค๋ ์ ์ ์ ์ํ์ธ์ - ์ปค์คํ
ํ๋ฌ๊ทธ์ธ ๋ํ ๋ค์ด์ค๋ ๊ฑฐ๋ ์ ์์ ํ์ ๋ฐฉ์๋๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด ์ต์ ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ํ์ค์น ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ ๊ฒ์ด ์ต์ ์ ๋๋ค.
ImmutableHashSet<byte> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ๋น์ด์์ต๋๋ค. ASF๊ฐ ์ฌ๊ธฐ์ ์ง์ ํ ์์ดํ
ํ์
์ ์ธํธ๋ฅผ ์์ฑํ๋ฉด, Master ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ ์์ฑ๋ ์ธํธ ์ ์ฒด๋ฅผ Steam ๊ฑฐ๋๋ก ์๋ ์ ์กํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํด๋น ๋ด ๊ณ์ ์ STM ๋งค์นญ ์ฉ๋๋ก ํ์ฉํ๋ฉด์ ์์ฑ๋ ์ธํธ๋ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ฎ๊ธฐ๊ณ ์ถ์ ๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ์ด ์ต์
์ loot ๋ช
๋ น์ด์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ Master ๊ถํ์ด ์ค์ ๋ ์ฌ์ฉ์๊ฐ ํ์ํ๋ฉฐ, ์ ํจํ SteamTradeToken์ด ํ์ํ ์๋ ์๊ณ , ์ ์ด์ ๊ฑฐ๋๊ฐ ๊ฐ๋ฅํ ๊ณ์ ์ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ ์ ์ํ์ธ์.
ํ์ฌ ์ด ์ค์ ์์ ์ง์๋๋ ์์ดํ ํ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 3 | ์๋ฐ ํธ๋ ์ด๋ฉ ์นด๋(FoilTradingCard) |
ํธ๋ ์ด๋ฉ ์นด๋(TradingCard)์ ์๋ฐ ๋ฒ์ |
| 5 | ํธ๋ ์ด๋ฉ ์นด๋(TradingCard) | Steam ํธ๋ ์ด๋ฉ ์นด๋. ๋ฐฐ์ง ์ ์์ ์ฌ์ฉ. ์๋ฐ ์๋ |
์ ์ค์ ๊ณผ ๊ด๊ณ์์ด ASF๋ Steam ์ปค๋ฎค๋ํฐ ์์ดํ
(appID 753, contextID 6)๋ง ์์ฒญํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ฐ๋ผ์ ๊ฒ์ ์์ดํ
, ์ ๋ฌผ ๋ฑ์ ๊ฑฐ๋ ์ ์ ๋์์์ ์๋๋ถํฐ ์ ์ธ๋ฉ๋๋ค.
์ด ์ต์
์ ์ถ๊ฐ์ ์ธ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ฏ๋ก, ์ธํธ๋ฅผ ์ค์ค๋ก ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ์ค์ง์ ์ผ๋ก ์๋ ๋ด ๊ณ์ ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค - ์๋ฅผ ๋ค์ด, ์ด๋ฏธ FarmingPreferences์ SendOnFarmingFinished ์ค์ ์ด๋ SendTradePeriod, ํน์ loot ๋ช
๋ น์ด๋ฅผ ํ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด ์ต์
์ ํ์ฑํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ด ์ต์ ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ํ์ค์น ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ ๊ฒ์ด ์ต์ ์ ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ASF๊ฐ ๋์ฌ๋ฅผ ์ง๋ ๋์ ํ์ฌ ๋์ฌ์ง๋ ๊ฒ์ ๋์ "CustomGamePlayedWhileFarming์ ํ๋ ์ด์ค"์ผ๋ก ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์น๊ตฌ๋ค์๊ฒ ์์ ์ด ๋์ฌ๋ฅผ ์ง๋ ์ค์ด๋ผ๊ณ ์๋ ค์ฃผ๊ณ ๋ ์ถ์ง๋ง ๊ธฐ๋ณธ OnlineStatus๋ฅผ ์คํ๋ผ์ธ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ง๋ ์์๋ ์ ์ฉํฉ๋๋ค. ASF๋ Steam ๋คํธ์ํฌ์ ์ค์ ํ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ ํํ๊ฒ, ํน์ ๋ถ์ ํํ๊ฒ ํ์๋ ์ ์๋ ์ ์์ผ ๋ฟ์
๋๋ค. ํนํ, ASF๊ฐ 32๊ฐ ์ฌ๋กฏ์ ๋ชจ๋ ์๊ฐ ๋์ ์ด ํ์ํ ๊ฒ์์ผ๋ก ์ฑ์ฐ๋ ๊ฒฝ์ฐ, Complex ํ๋ฐ ์๊ณ ๋ฆฌ์ฆ์์๋ ์ปค์คํ
์ด๋ฆ์ด ํ์๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ null์ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํฉ๋๋ค.
ASF๋ ํ
์คํธ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ํน์ ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค. {0}์ ASF์ ์ํด ํ์ฌ ํ๋ฐ ์ค์ธ ๊ฒ์์ AppID๋ก ๋์ฒด๋๋ฉฐ, {1}์ ํ์ฌ ํ๋ฐ ์ค์ธ ๊ฒ์์ GameName์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. CustomGamePlayedWhileFarming์ ๋น์ทํ์ง๋ง ๋์ฌ๊ฐ ๋๋ ๊ณ์ ๋ฑ ASF๊ฐ ํ ์ผ์ด ์์ ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค. ASF๋ Steam ๋คํธ์ํฌ์ ์ค์ ํ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ ํํ๊ฒ, ํน์ ๋ถ์ ํํ๊ฒ ํ์๋ ์ ์๋ ์ ์์ผ ๋ฟ์
๋๋ค. ์ด ์ต์
๊ณผ ํจ๊ป GamesPlayedWhileIdle์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, GamesPlayedWhileIdle์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ฐ๋ผ์ 31๊ฐ๋ฅผ ์ด๊ณผํด์ ์ง์ ํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด CustomGamePlayedWhileIdle์ด ์ปค์คํ
์ด๋ฆ์ ์ํ ์ฌ๋กฏ์ ์ฐจ์งํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ null์ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์ด ๋ด์ ํ์ฑํ ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ํ์ฑํ๋ ๋ด ์ธ์คํด์ค(true)๋ ASF ์คํ์์ ์๋์ผ๋ก ์์๋๊ณ , ๋นํ์ฑ๋ ๋ด ์ธ์คํด์ค(false)๋ ์๋์ผ๋ก ์์ํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ชจ๋ ๋ด์ด ๋นํ์ฑํ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋์ผ๋ก ์์ํ ๋ชจ๋ ๋ด์ ์ด ์์ฑ๊ฐ์ true๋ก ๋ฐ๊พธ์ด์ผ ํฉ๋๋ค.
ImmutableList<byte> ํ์
์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ ๋น ์ํ์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํด๋น ๋ด ๊ณ์ ์์ ASF๊ฐ ์ฌ์ฉํ ์ ํธํ๋ ๋์ฌ ์์๋ฅผ ์ ์ํฉ๋๋ค. ํ์ฌ ๊ฐ๋ฅํ ๋์ฌ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์ ์์(Unordered) | ์ ๋ ฌํ์ง ์์, CPU ์ฑ๋ฅ ์ฝ๊ฐ ๊ฐ์ |
| 1 | App ID ์ค๋ฆ์ฐจ์(AppIDsAscending) |
appID๊ฐ ์์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 2 | App ID ๋ด๋ฆผ์ฐจ์(AppIDsDescending) |
appID๊ฐ ํฐ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 3 | ์นด๋ ๋๋กญ ์ค๋ฆ์ฐจ์(CardDropsAscending) | ์ป์ ์ ์๋ ์นด๋์ ์๊ฐ ์ ์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 4 | ์นด๋ ๋๋กญ ๋ด๋ฆผ์ฐจ์(CardDropsDescending) | ์ป์ ์ ์๋ ์นด๋์ ์๊ฐ ๋ง์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 5 | ์๊ฐ ์ค๋ฆ์ฐจ์(HoursAscending) | ํ๋ ์ด ์๊ฐ์ด ์ ์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 6 | ์๊ฐ ๋ด๋ฆผ์ฐจ์(HoursDescending) | ํ๋ ์ด ์๊ฐ์ด ๋ง์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 7 | ์ด๋ฆ ์ค๋ฆ์ฐจ์(NamesAscending) | A๋ถํฐ ์์ํ๋ ์ํ๋ฒณ ์์ผ๋ก ๋์ฌ ์๋ |
| 8 | ์ด๋ฆ ๋ด๋ฆผ์ฐจ์(NamesDescending) | Z๋ถํฐ ์์ํ๋ ์ํ๋ฒณ ์ญ์์ผ๋ก ๋์ฌ ์๋ |
| 9 | ๋ฌด์์(Random) | ์์ ํ ๋ฌด์์ ์์๋ก ๋์ฌ ์๋(ํ๋ก๊ทธ๋จ ์คํ์๋ง๋ค ๋ณ๊ฒฝ) |
| 10 | ๋ฐฐ์ง ๋ ๋ฒจ ์ค๋ฆ์ฐจ์(BadgeLevelsAscending) | ๋ฐฐ์ง ๋ ๋ฒจ์ด ๋ฎ์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 11 | ๋ฐฐ์ง ๋ ๋ฒจ ๋ด๋ฆผ์ฐจ์(BadgeLevelsDescending) | ๋ฐฐ์ง ๋ ๋ฒจ์ด ๋์ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 12 | ๋ฑ๋ก ๋ ์ง ์๊ฐ ์ค๋ฆ์ฐจ์(RedeemDateTimesAscending) | ๊ณ์ ๋ฑ๋ก์ด ์ค๋๋ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 13 | ๋ฑ๋ก ๋ ์ง ์๊ฐ ๋ด๋ฆผ์ฐจ์(RedeemDateTimesDescending) | ๊ณ์ ๋ฑ๋ก์ด ์ต๊ทผ์ธ ๊ฒ์๋ถํฐ ๋จผ์ ๋์ฌ ์๋ |
| 14 | ์ฅํฐํ ์ค๋ฆ์ฐจ์(MarketableAscending) | ํ๋งค ๋ถ๊ฐ๋ฅํ(unmarketable) ์นด๋ ๋๋กญ์ด ์๋ ๊ฒ์์ ์ฐ์ ํ๋ฐ ์๋ (๊ฒฝ๊ณ : ๊ณ์ฐ ๋น์ฉ์ด ํผ) |
| 15 | ์ฅํฐํ ๋ด๋ฆผ์ฐจ์(MarketableDescending) | ํ๋งค ๊ฐ๋ฅํ(marketable) ์นด๋ ๋๋กญ์ด ์๋ ๊ฒ์์ ์ฐ์ ํ๋ฐ ์๋ (๊ฒฝ๊ณ : ๊ณ์ฐ ๋น์ฉ์ด ํผ) |
์ด ์์ฑ๊ฐ์ ๋ฐฐ์ด์ด๋ฏ๋ก ๊ณ ์ ๋ ์์๋ฅผ ์ฌ๋ฌ ๋ค๋ฅธ ์ค์ ์ ์ฌ์ฉํ ์ ์๊ฒ ํด ์ค๋๋ค. ์๋ฅผ ๋ค์ด ์นด๋ ํ๋งค๊ฐ๋ฅํ ๊ฒ์์ ๋จผ์ , ๋ฐฐ์ง ๋ ๋ฒจ์ด ๋์ ๊ฒ์์ ๊ทธ ๋ค์์, ๋ง์ง๋ง์ผ๋ก ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌํ๋ ค๊ณ 15, 11, ๊ทธ๋ฆฌ๊ณ 7 ๊ฐ์ ํฌํจํ ์ ์์ต๋๋ค. ์ง์ํ์๋ค์ํผ, ์์๋ ์ค์ ๋ก ์ค์ํฉ๋๋ค. ์์๋ฅผ ๋ฐ๋๋ก ํ๋ฉด(7, 11, 15) ์์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋๊ธฐ ๋๋ฌธ์
๋๋ค(๊ฒ์ ์ด๋ฆ์ ์ํ๋ฒณ์์ผ๋ก ๋จผ์ ์ ๋ ฌํ๊ฒ ๋๋ฉฐ, ๊ฒ์ ์ด๋ฆ์ด ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋จธ์ง ๋ ๊ธฐ์ค์ ์ฌ์ค์ ๋ฌด์๋ฏธํด์ง๋๋ค). ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ํ ๊ฐ์ง ์์๋ง ์ฌ์ฉํ์ง๋ง, ๋ง์ฝ ์ํ๋ค๋ฉด ์ถ๊ฐ ๋งค๊ฐ ๋ณ์๋ก ๋ ๊น์ด์๊ฒ ์ ๋ ฌํ ์ ์์ต๋๋ค.
์์ ์ค๋ช
์ ์๋ "์๋"๋ผ๋ ๋จ์ด์ ์ ์ํ์ญ์์ค. ์ค์ ASF์ ์์๋ ์ ํํ **์นด๋ ๋์ฌ ์๊ณ ๋ฆฌ์ฆ**์ ์ฌํ๊ฒ ์ํฅ์ ๋ฐ๊ณ ์ ๋ ฌ๋ฐฉ์์ ๋์ผํ ์ฑ๋ฅ์ธก๋ฉด์ ๊ณ ๋ คํ ๊ฒฝ์ฐ์๋ง ์ํฅ์ ์ค๋๋ค. ์๋ฅผ ๋ค์ด, Simple ์๊ณ ๋ฆฌ์ฆ์์๋ (๋ชจ๋ ๊ฒ์์ด ๋์ผํ ์ฑ๋ฅ ๊ฐ์ ๊ฐ์ง๋ฏ๋ก) ์ ํํ FarmingOrders๊ฐ ํ์ฌ ํ๋ฐ ์ธ์
์์ ์์ ํ ์กด์ค๋ฉ๋๋ค. ๋ฐ๋ฉด Complex ์๊ณ ๋ฆฌ์ฆ์์๋ ์ค์ ์์๊ฐ ๋จผ์ ์๊ฐ(hours)์ ์ํฅ์ ๋ฐ์ ๋ค์, ์ ํํ FarmingOrders์ ๋ฐ๋ผ ์ ๋ ฌ๋ฉ๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ก ์ด์ด์ง๋๋ฐ, ๊ธฐ์กด์ ํ๋ ์ดํ์์ด ์๋ ๊ฒ์์ด ๋ค๋ฅธ ๊ฒ์๋ณด๋ค ์ฐ์ ์์๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ์ค์ง์ ์ผ๋ก ASF๋ ํ์ํ HoursUntilCardDrops๋ฅผ ์ด๋ฏธ ์ถฉ์กฑํ ๊ฒ์์ ์ฐ์ ์ ์ผ๋ก ์ ํธํ๋ฉฐ, ๊ทธ ๋ค์์์ผ ์ ํํ FarmingOrders์ ๋ฐ๋ผ ํด๋น ๊ฒ์๋ค์ ์ถ๊ฐ๋ก ์ ๋ ฌํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๋ฏธ bump๋ ๊ฒ์๋ค์ด ์์ง๋๋ฉด ASF๋ ๋จ์ ๋๊ธฐ์ด์ ์๊ฐ(hours) ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ ๋ ฌํฉ๋๋ค(์ด๋ ๊ฒ ํ๋ฉด ๋จ์ ํ์ดํ๋ค์ HoursUntilCardDrops๊น์ง ๋์ด์ฌ๋ฆฌ๋ ๋ฐ ํ์ํ ์๊ฐ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์
๋๋ค). ๋ฐ๋ผ์ ์ด ์ค์ ์์ฑ์ ์ด๋๊น์ง๋ ASF๊ฐ ์กด์คํ๋ ค๊ณ ์๋ํ๋ **์ ์(suggestion)**์ผ ๋ฟ์ด๋ฉฐ, ์ด๋ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ฃผ์ง ์๋ ํ์์๋ง ์ ์ฉ๋ฉ๋๋ค(์ด ๊ฒฝ์ฐ ASF๋ ํญ์ FarmingOrders๋ณด๋ค ํ๋ฐ ์ฑ๋ฅ์ ์ฐ์ ์ํฉ๋๋ค).
๋ํ fq **๋ช
๋ น์ด**๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ ํ๋ฐ ์ฐ์ ์์ ๋๊ธฐ์ด(farming priority queue)๋ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ์ค์ ํ๋ฐ ์์๋ ๋จผ์ ์ฑ๋ฅ(performance)์ผ๋ก, ๊ทธ ๋ค์ ํ๋ฐ ๋๊ธฐ์ด(farming queue)๋ก, ๋ง์ง๋ง์ผ๋ก ์ฌ๋ฌ๋ถ์ด ์ค์ ํ FarmingOrders๋ก ์ ๋ ฌ๋ฉ๋๋ค.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ ํ๋ฐ๊ณผ ๊ด๋ จ๋ ASF์ ๋์์ ์ ์ํ๋ฉฐ, ์๋์ ๊ฐ์ด ์ ์๋ฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ |
|---|---|
| 0 | ์์(None) |
| 1 | FarmingPausedByDefault |
| 2 | ShutdownOnFarmingFinished |
| 4 | SendOnFarmingFinished |
| 8 | FarmPriorityQueueOnly |
| 16 | SkipRefundableGames |
| 32 | SkipUnplayedGames |
| 64 | EnableRiskyCardsDiscovery |
| 256 | AutoUnpackBoosterPacks |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด **JSON ๋งคํ**์ ํ์ธํด๋ณด์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ ์ต์ ์ ์๋์์ ์ค๋ช ํฉ๋๋ค.
FarmingPausedByDefault๋ CardsFarmer ๋ชจ๋์ ์ด๊ธฐ ์ํ๋ฅผ ์ ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ด์ Enabled ์ค์ ์ด๋ start ๋ช
๋ น์ด๋ก ์ธํด ์์๋ ๋ ์๋์ผ๋ก ํ๋ฐ์ ์์ํฉ๋๋ค. FarmingPausedByDefault๋ ์๋ ํ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์๋์ผ๋ก resumeํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํญ์ play๋ง ์ฌ์ฉํ๊ณ ์๋ CardsFarmer ๋ชจ๋์ ์ ํ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ์
๋๋ค โ ์ด๋ pause **๋ช
๋ น์ด**์ ์ ํํ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
ShutdownOnFarmingFinished๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ฐ์ด ๋๋ฌ์ ๋ ๋ด์ ์ข
๋ฃํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ASF๋ ํ๋ก์ธ์ค๊ฐ ํ์ฑํ๋์ด ์๋ ๋์ ๊ณ์ํด์ ๊ณ์ ์ "์ ์ "ํฉ๋๋ค. ํด๋น ๊ณ์ ์ ๋์ฌ๊ฐ ๋๋ฌ๋ค๋ฉด, ASF๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋งค IdleFarmingPeriod ์๊ฐ๋ง๋ค Steam ์นด๋๊ฐ ์๋ ์๋ก์ด ๊ฒ์์ด ๊ทธ ์ฌ์ด์ ์ถ๊ฐ๋์๋์ง๋ฅผ ํ์ธํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ฌ์์ํ ํ์์์ด ๋์ฌ๋ฅผ ๊ณ์ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ๋ฐ, ASF๋ ํ์ํ๋ฉด ์๋์ผ๋ก ๋์ฌ๋ฅผ ์ด์ด์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ง๋ง ํด๋น ๊ณ์ ์ ํ๋ฐ์ด ๋ชจ๋ ๋๋ฌ์ ๋ ํ๋ก์ธ์ค๋ฅผ ์ค์ง์ํค๊ณ ์ถ์ผ์ค ์ ์๋๋ฐ, ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ํ์ฑํ๋๋ฉด ASF๋ ๊ณ์ ์ ๋์ฌ๊ฐ ์์ ํ ๋๋๋ฉด ๋ก๊ทธ์คํํ์ฌ ๋์ด์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌํ๊ฑฐ๋ ์ ์ ํ์ง ์๊ฒ ํฉ๋๋ค. ASF๊ฐ ๋ชจ๋ ์๊ฐ์ ๋ด ์ธ์คํด์ค์ ์ฌ์ฉํ๋๋ก ํ๊ฑฐ๋, ํน์ ๋์ฌ ํ๋ก์ธ์ค๊ฐ ๋๋๋ฉด ๋ฉ์ถ๊ฒ ํ ์ง๋ฅผ ์ค์ค๋ก ์ ํด์ผ ํฉ๋๋ค.
์ด ์ต์
์ ShutdownIfPossible๊ณผ ํจ๊ป ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๊ณ์ ์ด ์ ์ง๋์์ ๋ ASF๋ ํจ๊ป ์ข
๋ฃ๋์ด ๊ธฐ๊ธฐ๋ฅผ ์ ํด ์ํ๋ก ์ ํํ ์ ์๊ณ , ๋ง์ง๋ง ์นด๋๊ฐ ๋๋กญ๋๋ ์์ ์ ๋ง์ถฐ ์ ์ ๋ชจ๋๋ ์ข
๋ฃ์ ๊ฐ์ ๋ค๋ฅธ ์์
์ ์์ฝํ ์๋ ์์ต๋๋ค.
SendOnFarmingFinished๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ทธ ์์ ๊น์ง ํ๋ฐํ ๋ชจ๋ ๊ฒ์ ๋ด์ Steam ๊ฑฐ๋๋ฅผ Master ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ ์๋์ผ๋ก ์ ์กํ ์ ์์ด, ์ง์ ๊ฑฐ๋๋ฅผ ์ ๊ฒฝ ์ฐ๊ณ ์ถ์ง ์์ ๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ์ด ์ต์
์ loot ๋ช
๋ น์ด์ ๋์ผํ๊ฒ ์๋ํ๋ฏ๋ก, Master ๊ถํ์ด ์ค์ ๋ ์ฌ์ฉ์๊ฐ ํ์ํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ํ ์ ํจํ SteamTradeToken์ด ํ์ํ ์ ์์ผ๋ฉฐ, ์ ์ด์ ๊ฑฐ๋๊ฐ ๊ฐ๋ฅํ ๊ณ์ ์ ์ฌ์ฉํ๊ณ ์์ด์ผ ํฉ๋๋ค. ์ด ์ต์
์ด ์ผ์ ธ์๋ค๋ฉด ๋์ฌ ํ ๋ฃจํ
์ ์์ํ๋ ๊ฒ๊ณผ ํจ๊ป, ASF๋ ๊ฑฐ๋๋ก ์๊ธฐ๋ ์๋ก์ด ์์ดํ
์ ์๋ฆผ๋ ๋ฃจํ
์ ์์ํฉ๋๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ์ฌ๋์ด ์ฐ๋ฆฌ ๊ณ์ ์ ๋ณด๋ธ ์์ดํ
์ "์ ๋ฌ"ํ๋๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ๊ณผ ํจ๊ป **ASF 2FA**๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง๋ง, 2FA ํ์ธ์ ์ ๋ ์ง์ ์ฒ๋ฆฌํ ๊ณํ์ด๋ผ๋ฉด ํ์๋ ์๋๋๋ค.
FarmPriorityQueueOnly๋ fq **๋ช
๋ น์ด**๋ก ์ฌ์ฉํ ์ ์๋ ์ฐ์ ์์ ํ๋ฐ ๋๊ธฐ์ด์ ์ง์ ์ถ๊ฐํ ์ฑ๋ง ์๋ ํ๋ฐ ๋์์ผ๋ก ๊ณ ๋ คํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ์ด ์ต์
์ ํ์ฑํํ๋ฉด, ASF๋ ๋ชฉ๋ก์ ์๋ ๋ชจ๋ appIDs๋ฅผ ๊ฑด๋๋ฐ๋ฉฐ, ์ด๋ฅผ ํตํด ์๋ ASF ํ๋ฐ ๋์ ๊ฒ์์ ์ง์ ์ ๋ณ(cherry-pick)ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๋๊ธฐ์ด์ ๊ฒ์์ ํ๋๋ ์ถ๊ฐํ์ง ์์๋ค๋ฉด, ASF๋ ํด๋น ๊ณ์ ์ ํ๋ฐํ ๊ฒ์ด ์๋ฌด๊ฒ๋ ์๋ ๊ฒ์ฒ๋ผ ๋์ํ๋ค๋ ์ ์ ์ ์ํ์ธ์.
SkipRefundableGames๋ ์์ง ํ๋ถ ๊ฐ๋ฅํ ๊ฒ์์ ์๋ ํ๋ฐ์์ ๊ฑด๋๋ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ถ ๊ฐ๋ฅํ ๊ฒ์์ Steam ํ๋ถ ํ์ด์ง์ ๊ฒ์๋ ๊ฒ ์ฒ๋ผ Steam ์์ ์์ ๊ตฌ๋งคํ์ง 2์ฃผ ์ด๋ด์ด๊ณ 2์๊ฐ์ ๋์ง์๊ฒ ํ๋ ์ดํ ๊ฒ์์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ASF๋ Steam ํ๋ถ ์ ์ฑ
์ ์์ ํ ๋ฌด์ํ๊ณ ๋ชจ๋ ๊ฒ์ ํ๋ฐํ๋ฉฐ, ์ด๋ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ๋ฐฉ์์
๋๋ค. ํ์ง๋ง ํ๋ถ ๊ฐ๋ฅํ ๊ฒ์์ ASF๊ฐ ๋๋ฌด ๋นจ๋ฆฌ ํ๋ฐํ์ง ์๋๋ก ํ๊ณ ์ถ๋ค๋ฉด ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ASF๊ฐ ํ๋ ์ดํ์์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค๊น ๊ฑฑ์ ํ์ง ์๊ณ , ์ง์ ํด๋น ๊ฒ์๋ค์ ํ๊ฐํ ๋ค ํ์ํ๋ค๋ฉด ํ๋ถํ ์ ์์ต๋๋ค. ์ด ์ต์
์ ํ์ฑํํ๋ฉด, Steam ์คํ ์ด์์ ๊ตฌ๋งคํ ๊ฒ์์ redeem(๊ตฌ๋งค ๋ฑ๋ก) ๋ ์ง๋ก๋ถํฐ ์ต๋ 14์ผ ๋์ ASF์ ์ํด ํ๋ฐ๋์ง ์๋๋ค๋ ์ ์ ์ ์ํ์ธ์. ๊ณ์ ์ ๋ค๋ฅธ ๊ฒ์์ด ์๋ค๋ฉด ์ด๋ ํ๋ฐํ ๊ฒ์ด ์๋ ๊ฒ์ฒ๋ผ ํ์๋ฉ๋๋ค.
SkipUnplayedGames๋ ์์ง ์คํํ์ง ์์ ๊ฒ์์ ASF๊ฐ ๊ฑด๋๋ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋งํ๋ "ํ๋ ์ดํ์ง ์์ ๊ฒ์"์ด๋ Steam์ ๊ธฐ๋ก๋ ํ๋ ์ดํ์์ด ์ ํํ 0์ธ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด, Steam์ ํด๋น ๊ฒ์์ ํ๋ ์ดํ์์ด ์กฐ๊ธ์ด๋ผ๋ ๊ธฐ๋ก๋ ๋๊น์ง๋ ์ด๋ฌํ ๊ฒ์๋ค์ด ๊ฑด๋๋ฐ์ด์ง๋๋ค. ์ด๋ฅผ ํตํด ASF๊ฐ ํ๋ฐํ ์ ์๋ ๊ฒ์์ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ์์ง ํ๋ ์ดํด๋ณผ ๊ธฐํ๊ฐ ์์๋ ๊ฒ์์ ๊ฑด๋๋ฐ์ด, ํ๋ ์ดํ์ง ์์ ๊ฒ์์ ์ถ์ฒํด์ฃผ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ํน์ Steam ๊ธฐ๋ฅ์ด ๊ณ์ ์ ์ฉํ๊ฒ ์ ์ง๋๋๋ก ํด์ค๋๋ค.
EnableRiskyCardsDiscovery๋ ASF๊ฐ ํ๋ ์ด์์ ๋ฐฐ์ง ํ์ด์ง๋ฅผ ๋ก๋ํ์ง ๋ชปํด ํ๋ฐ ๊ฐ๋ฅํ ๊ฒ์์ ์ฐพ์ ์ ์์ ๋ ํธ๋ฆฌ๊ฑฐ๋๋ ์ถ๊ฐ์ ์ธ ํด๋ฐฑ(fallback)์ ํ์ฑํํฉ๋๋ค. ํนํ ์นด๋ ๋๋กญ ์์ด ๋งค์ฐ ๋ง์ ์ผ๋ถ ๊ณ์ ์ ๊ฒฝ์ฐ, (์ค๋ฒํค๋๋ก ์ธํด) ๋ฐฐ์ง ํ์ด์ง๋ฅผ ๋ ์ด์ ๋ก๋ํ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ๊ณ์ ์ ํ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๊ทผ๊ฑฐ๊ฐ ๋๋ ์ ๋ณด๋ฅผ ๋ก๋ํ ์ ์๋ค๋ ๋จ์ํ ์ด์ ๋ง์ผ๋ก ํ๋ฐ์ด ๋ถ๊ฐ๋ฅํด์ง๋๋ค. ์ด๋ฌํ ๊ทน์์์ ๊ฒฝ์ฐ๋ฅผ ์ํด, ์ด ์ต์
์ ๋์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ์ ๊ฐ๋ฅํ ๋ถ์คํฐ์ ํด๋น ๊ณ์ ์ด ๋ฐ์ ์๊ฒฉ์ด ์๋ ๋ถ์คํฐ ํฉ์ ์กฐํฉํ์ฌ idle ๊ฐ๋ฅํ ๊ฒ์์ ์ฐพ์๋ธ ๋ค์, ํ์ํ ์ ๋ณด๋ฅผ ๊ฒ์ฆํ๊ณ ๊ฐ์ ธ์ค๋ ๋ฐ ์๋นํ ์์ ๋ฆฌ์์ค๋ฅผ ์๋ชจํ๋ฉฐ, ์ ํ๋ ๋ฐ์ดํฐ์ ์ ๋ณด๋ง์ผ๋ก ํ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์์ํ๋ ค ์๋ํฉ๋๋ค. ์ด๋ ๊ฒฐ๊ตญ ๋ฐฐ์ง ํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ๋ก๋๋์ด ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ ๋ค์ ์ฌ์ฉํ ์ ์๋ ์ํฉ์ ๋๋ฌํ๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์ด ํด๋ฐฑ(fallback)์ด ์ฌ์ฉ๋ ๋๋ ASF๊ฐ ์ ํ๋ ๋ฐ์ดํฐ๋ง์ผ๋ก ์๋ํ๋ฏ๋ก, ์ค์ ๋ณด๋ค ํจ์ฌ ์ ์ ๋๋กญ๋ง ์ฐพ์๋ด๋ ๊ฒ์ด ์์ ํ ์ ์์ด๋ผ๋ ์ ์ ์ ์ํ์ธ์ โ ๋๋จธ์ง ๋๋กญ๋ค์ ํ๋ฐ ํ๋ก์ธ์ค์ ์ดํ ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋ฉ๋๋ค.
์ด ์ต์ ์ด "์ํ"ํ๋ค๊ณ ๋ถ๋ฆฌ๋ ๋ฐ์๋ ๊ทธ๋ด ๋งํ ์ด์ ๊ฐ ์์ต๋๋ค โ ์๋์ ์ํด ๋งค์ฐ ๋๋ฆฌ๊ณ ์๋นํ ์์ ๋ฆฌ์์ค(๋คํธ์ํฌ ์์ฒญ ํฌํจ)๋ฅผ ํ์๋ก ํ๋ฏ๋ก, ํ์ฑํํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์์ผ๋ฉฐ, ํนํ ์ฅ๊ธฐ์ ์ผ๋ก๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ด ์ต์ ์ ์ฌ๋ฌ๋ถ์ ๊ณ์ ์ด ๋ฐฐ์ง ํ์ด์ง๋ฅผ ๋ก๋ํ์ง ๋ชปํด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๊ณ , ASF๊ฐ ํ๋ก์ธ์ค๋ฅผ ์์ํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ํญ์ ๋ก๋ํ์ง ๋ชปํด ํด๋น ๊ณ์ ์์ ์๋ํ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ ์ ํ์ธํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ ํฌ๊ฐ ์ด ํ๋ก์ธ์ค๋ฅผ ์ต๋ํ ์ต์ ํํ๊ธฐ ์ํด ์ต์ ์ ๋คํ๋๋ผ๋, ์ด ์ต์ ์ด ์ญํจ๊ณผ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ ์ฌ์ ํ ์กด์ฌํ๋ฉฐ, ๋๋ฌด ๋ง์ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋ Steam ์๋ฒ์ ๋ถํ๋ฅผ ์ผ์ผํด์ผ๋ก์จ Steam ์ธก์ ์ผ์์ ์ธ, ํน์ ์ฌ์ง์ด ์๊ตฌ์ ์ธ ์ฐจ๋จ๊ณผ ๊ฐ์ ์์น ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฏธ๋ฆฌ ๊ฒฝ๊ณ ๋๋ฆฌ๋ฉฐ, ์ด ์ต์ ์ ๊ทธ ์ด๋ค ๋ณด์ฆ๋ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ์ผ๋ก ๋ณธ์ธ์ ์ฑ ์์ ๋๋ค.
AutoUnpackBoosterPacks๋ ์ ์์ดํ
์์ ์๋ฆผ์ ๋ฐ๋ ์ฆ์ ๋ชจ๋ ๋ถ์คํฐ ํฉ์ ์๋์ผ๋ก ๊ฐ๋ดํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ถ๊ฐ ์นด๋ ๋๋กญ์ ์ฆ์ ํ๋ํ ์ ์์ผ๋ฉฐ, ํนํ SteamTradeMatcher๋ CompleteTypesToSend์ ๊ฐ์ ๋ค๋ฅธ ์ต์
๊ณผ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ์ฉํ ์๋๋ฆฌ์ค๊ฐ ๋ ์ ์์ต๋๋ค.
ImmutableHashSet<uint> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ๋น์ด์์ต๋๋ค. ASF๊ฐ ๋์ฌ์ง์ ๊ฒ์ด ์๋ค๋ฉด ๋์ ํน์ ๊ฒ์(appIDs)์ ํ๋ ์ดํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก ํ๋ ์ดํ๋ฉด "ํ๋ ์ดํ ์๊ฐ"์ ๋๋ฆด ์ ์์ง๋ง, ๊ทธ๊ฒ ๋์
๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด, ์ฌ์ฉ์์ Steam ๊ณ์ ์ด ์ฌ๊ธฐ์ ์ง์ ํ ๋ชจ๋ appID์ ๋ํ ์ ํจํ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋์ ๋ณด์ ํ๊ณ ์์ด์ผ ํฉ๋๋ค. ์ด๋ F2P ๊ฒ์๋ ํฌํจ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ Steam ๋คํธ์ํฌ์์ ์ฌ์ฉ์์ ์ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด์ ์ ํํ ๊ฒ์์ ํ๋ ์ดํ๊ธฐ ์ํด CustomGamePlayedWhileIdle์ ๋์์ ํ์ฑํ ๋ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ CustomGamePlayedWhileFarming์ ๊ฒฝ์ฐ์ ๊ฐ์ด ์ค์ ํ์ ์์๋ ๋ณด์ฅํ์ง ์์ต๋๋ค. Steam์ ASF๊ฐ ์ด 32๊ฐ์ appIDs๋ฅผ ํ๋ ์ด ํ ์ ์๋๋ก ํ๋ฝํ๊ณ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ์ด ์์ฑ๊ฐ์ ๊ทธ๋งํผ์ ๋ฃ์ ์ ์์ต๋๋ค.
ushort ํ์
์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 1์
๋๋ค. ์ด ์์ฑ์ Steam ํ๋ซํผ์์ ์ผ๋ถ ์ถ๊ฐ์ ์ธ ์จ๋ผ์ธ ๊ธฐ๋ฅ์ ํ์ฑํํ ์ ์์ผ๋ฉฐ, ์๋์ ๊ฐ์ด ์ ์๋ฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 1 | StandardPC | ํน๋ณํ ๋ชจ๋ ์์, ๊ธฐ๋ณธ๊ฐ |
| 544 | SteamDeck | Steam Deck์ผ๋ก ํ์ |
์ด ์์ฑ์ ๊ธฐ๋ฐ์ด ๋๋ EGamingDeviceType ํ์
์๋ ๋ ๋ง์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ด ์์ง๋ง, ์ ํฌ๊ฐ ์๋ ํ ์ค๋๋ ๊ธฐ์ค์ผ๋ก๋ ์ ํ ํจ๊ณผ๊ฐ ์์ด์ ๊ฐ๋
์ฑ์ ์ํด ์ ์ธํ์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ 1์ผ๋ก ๋์ญ์์ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 3์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์ด ๊ณ์ ์ ์นด๋ ํ๋ ์ ํ์ด ์๋์ง๋ฅผ ์ ์ํ๊ณ , ๋ง์ฝ ์ ํ์ด ์๋ค๋ฉด ์ต์ด ๋ช์๊ฐ์ธ์ง๋ฅผ ์ ์ํฉ๋๋ค. ์นด๋ ํ๋ ์ ํ์ด๋, ๊ทธ ๊ณ์ ์์ ํ ๊ฒ์์ ์ ์ด๋ HoursUntilCardDrops ์๊ฐ ๋์ ํ๋ ์ดํ์ง ์์ผ๋ฉด ๊ทธ ๊ฒ์์ ์นด๋๊ฐ ๋์ค์ง ์๋๋ค๋ ์๋ฏธ์
๋๋ค. ์์ฝ๊ฒ๋ ์ด๋ฅผ ์์๋ผ ์ ์๋ ๋ง๋ฒ์ ์์ผ๋ฏ๋ก ASF๋ ๋น์ ์๊ฒ ์์กดํฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ์ฌ์ฉํ ์นด๋ ๋์ฌ ์๊ณ ๋ฆฌ์ฆ ์ ์ํฅ์ ์ค๋๋ค. ์ด ์์ฑ๊ฐ์ ์ค์ ํ๋ฉด ์ด๋์ ๊ทน๋ํํ๊ณ ์นด๋๋์ฌ์ ํ์ํ ์๊ฐ์ ์ต์ํํฉ๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํ ์ง์ ๋ํ ๋ช
ํํ ์ ๋ต์ ์๊ณ , ์ค๋ก์ง ์์ ์ ๊ณ์ ์ ๋ฌ๋ ค์์์ ๊ธฐ์ตํ์ญ์์ค. ํ๋ถ์ ํ๋ฒ๋ ํ์ง ์์ ์ค๋๋ ๊ณ์ ์ ์ ํ์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก 0 ๊ฐ์ ์ฌ์ฉํ์ฌ์ผ ํ๊ณ , ์๋ก์ด ๊ณ์ ๊ณผ ํ๋ถ์ ๋ฐ์๋ ๊ณ์ ์ ํ๋ ์ ํ์ด ์์ผ๋ฏ๋ก 3 ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ๋จ์ง ์ด๋ก ์ผ ๋ฟ์ด๊ณ ๊ท์น์ผ๋ก ๋ฐ์๋ค์ฌ์๋ ์๋ฉ๋๋ค. ์ด ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ "์์
(lesser evil)"๊ณผ ๋๋ถ๋ถ์ ์ฌ์ฉ๋ก์ ๊ทผ๊ฑฐํด ์ค์ ๋์์ต๋๋ค.
ImmutableHashSet<byte> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 1, 3, 5 Steam ์์ดํ
ํ์
์
๋๋ค. ์ด ์์ฑ์ lootํ ๋์ ASF ๋์์ ์ ์ํฉ๋๋ค โ **๋ช
๋ น์ด**๋ฅผ ์ฌ์ฉํ ์๋ loot์, ํ๋ ์ด์์ ์ค์ ์์ฑ์ ํตํ ์๋ loot ๋ชจ๋์ ํด๋น๋ฉ๋๋ค. ASF๋ LootableTypes์ ์๋ ์์ดํ
๋ง ๊ฑฐ๋ ์ ์์ ํฌํจํ ๊ฒ์ด๋ฏ๋ก, ์ด ์์ฑ๊ฐ์ ๋น์ ์๊ฒ ๋ณด๋ด์ง ๊ฑฐ๋ ์ ์์์ ๋ฌด์์ ๋ฐ์์ง ๊ฒฐ์ ํ ์ ์๊ฒ ํด์ค๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์ ์ ์์(Unknown) | ์๋์ ์ด๋๊ฒ์๋ ํด๋นํ์ง ์๋ ๋ชจ๋ ํ์ |
| 1 | ๋ถ์คํฐ ํฉ(BoosterPack) | ํ ๊ฒ์์ ๋ฌด์์ ์นด๋ 3์ฅ์ด ๋ค์ด์๋ ๋ถ์คํฐ ํฉ |
| 2 | ์ด๋ชจํฐ์ฝ(Emoticon) | Steam ๋ํ์์ ์ฌ์ฉํ๋ ์ด๋ชจํฐ์ฝ |
| 3 | ์๋ฐ ํธ๋ ์ด๋ฉ ์นด๋(FoilTradingCard) |
ํธ๋ ์ด๋ฉ ์นด๋(TradingCard)์ ์๋ฐ ๋ฒ์ |
| 4 | ํ๋กํ ๋ฐฐ๊ฒฝ(ProfileBackground) | Steam ํ๋กํ์์ ์ฌ์ฉํ๋ ํ๋กํ ๋ฐฐ๊ฒฝ |
| 5 | ํธ๋ ์ด๋ฉ ์นด๋(TradingCard) | Steam ํธ๋ ์ด๋ฉ ์นด๋. ๋ฐฐ์ง ์ ์์ ์ฌ์ฉ. ์๋ฐ ์๋ |
| 6 | Steam ๋ณด์(SteamGems) | ๋ถ์คํฐ ํฉ ์ ์์ ์ฌ์ฉ๋๋ Steam ๋ณด์. ๋ณด์ ๋๋ฏธ ํฌํจ |
| 7 | ํ๋งค ์์ดํ (SaleItem) | Steam ํ ์ธ๊ธฐ๊ฐ๋์ ํ๋ํ๋ ํน๋ณํ ์์ดํ |
| 8 | ์๋ชจํ(Consumable) | ์ฌ์ฉํ๋ฉด ์ฌ๋ผ์ง๋ ํน๋ณํ ์๋ชจ ์์ดํ |
| 9 | ํ๋กํ ์์ (ProfileModifier) | Steam ํ๋กํ ๋ชจ์์ ์์ ํ ์ ์๋ ํน๋ณํ ์์ดํ |
| 10 | Sticker | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 11 | ChatEffect | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 12 | MiniProfileBackground | Steam ํ๋กํ์ฉ ํน์ ๋ฐฐ๊ฒฝํ๋ฉด |
| 13 | ์๋ฐํ ์ก์(AvatarProfileFrame) | Steam ํ๋กํ์ฉ ํน์ ์๋ฐํ ์ก์ |
| 14 | ์์ง์ด๋ ์๋ฐํ(AnimatedAvatar) | Steam ํ๋กํ์ฉ ํน์ ์์ง์ด๋ ์๋ฐํ |
| 15 | KeyboardSkin | Steam Deck์ฉ ํน์ ํค๋ณด๋ ์คํจ |
| 16 | StartupVideo | Steam Deck์ฉ ํน์ ๋ถํ ์์ |
์ ์ค์ ๊ณผ ๊ด๊ณ์์ด ASF๋ Steam ์ปค๋ฎค๋ํฐ ์์ดํ
(appID 753, contextID 6)๋ง ์์ฒญํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ฐ๋ผ์ ๊ฒ์ ์์ดํ
, ์ ๋ฌผ ๋ฑ์ ๊ฑฐ๋ ์ ์ ๋์์์ ์๋๋ถํฐ ์ ์ธ๋ฉ๋๋ค.
ASF์ ๊ธฐ๋ณธ ์ค์ ์ ๋ด์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ํ๋ฉฐ, ๋ถ์คํฐ ํฉ๊ณผ (foil ํฌํจ) ํธ๋ ์ด๋ฉ ์นด๋๋ง์ loot ๋์์ผ๋ก ํฉ๋๋ค. ์ฌ๊ธฐ ์ ์๋ ์์ฑ๊ฐ์ ๋น์ ์ ๋ง์กฑ์ํฌ์ ์๋๋ก ์ด๋ป๊ฒ๋ ํ๋์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํฉ๋๋ค. ์์ ์ ์๋์ง ์์ ๋ชจ๋ ํ์
์ ์ ์ ์์(Unknown) ํ์
์ผ๋ก ํ์๋จ์ ๋ช
์ฌํ์ญ์์ค. Valve๊ฐ ์๋ก์ด Steam ์์ดํ
์ ๋ด๋์์๋ ํนํ ์ค์ํ๋ฐ, ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ฌ๊ธฐ์ ์ถ๊ฐ๋๊ธฐ ์ ๊น์ง๋ ASF์์ ์ ์ ์์(Unknown) ์ผ๋ก ํ์๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋น์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง๋ฅผ ์๊ณ ์๊ณ , ๋ง์ฝ Steam ๋คํธ์ํฌ๊ฐ ๊นจ์ ธ์ ๋ชจ๋ ํญ๋ชฉ์ ์ ์ ์์(Unknown)์ผ๋ก ํ์ํ๋ค๋ฉด ASF๋ ์ ์ฒด ๋ณด๊ดํจ์ ๊ฑฐ๋ ์ ์์ผ๋ก ๋ณด๋ผ๊ฒ์ด๋ผ๋ ์ ๋ ์ดํดํ๊ณ ์์ง์๋ ํ, ์ผ๋ฐ์ ์ผ๋ก ์ ์ ์์(Unknown) ํ์
์ LootableTypes์ ํฌํจ์ํค๋ ๊ฒ์ ๊ถ์ฅํ์ง ์๋ ์ด์ ์
๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ loot ๋์์ผ๋ก ํ๊ณ ์ถ๋๋ผ๋, LootableTypes์ Unknown ํ์
์ ํฌํจํ์ง ์์ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ASF๋ Steam ๋คํธ์ํฌ์ ๋ก๊ทธ์ธํ ๋ ์ด ์์ฑ์ ์ฌ์ฉํ๋ฉฐ, ์๋ฅผ ๋ค์ด **์ฌ๊ธฐ**์ฒ๋ผ ํ์ฌ ๋ก๊ทธ์ธ๋ ๊ธฐ๊ธฐ ๋ชฉ๋ก์ ํ์ํ ๋ Steam์ด ASF ๊ธฐ๊ธฐ์ ์ธ์
์ ์ ํํ ์ด๋ป๊ฒ ํ์ํ ์ง ์ฌ์ฉ์ํํ๋ ๋ฐ ํ์ฉํ ์ ์์ต๋๋ค.
ASF๋ ํ
์คํธ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ํน์ ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค. {0}์ OS๊ฐ ์ ๊ณตํ๋ ๊ธฐ๊ธฐ ์ด๋ฆ์ผ๋ก, {1}์ ASF์ ๊ณต๊ฐ ์๋ณ์๋ก, {2}๋ ASF์ ๋ฒ์ ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
์ ํํ ๋ฌด์์ ํ๋์ง ์๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ null์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ASF๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ ์ ํ ๊ฐ์ ๊ฒฐ์ ํ๋ฉฐ, ํ์ฌ ๊ธฐ์ค์ผ๋ก๋ {0} ({1}/{2}) ํ์์
๋๋ค. ์ด๋ ์ด๋๊น์ง๋ ์ ์์ผ ๋ฟ์ด๋ฉฐ, Steam ๋คํธ์ํฌ๊ฐ ์ด๋ฅผ ์์ ํ ๋ฐ์ํ ์๋, ๋ฐ์ํ์ง ์์ ์๋ ์๋ค๋ ์ ์ ์ ์ํ์ธ์.
ImmutableHashSet<byte> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 5 Steam ์์ดํ
ํ์
์
๋๋ค. ์ด ์์ฑ๊ฐ์ TradingPreferences์ SteamTradeMatcher ์ต์
์ด ํ์ฑํ ๋์์ ๋ ๋งค์นญ์ ํ๋ฝํ Steam ์์ดํ
ํ์
์ ์ ์ํฉ๋๋ค. ํ์
์ ์๋์ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์ ์ ์์(Unknown) | ์๋์ ์ด๋๊ฒ์๋ ํด๋นํ์ง ์๋ ๋ชจ๋ ํ์ |
| 1 | ๋ถ์คํฐ ํฉ(BoosterPack) | ํ ๊ฒ์์ ๋ฌด์์ ์นด๋ 3์ฅ์ด ๋ค์ด์๋ ๋ถ์คํฐ ํฉ |
| 2 | ์ด๋ชจํฐ์ฝ(Emoticon) | Steam ๋ํ์์ ์ฌ์ฉํ๋ ์ด๋ชจํฐ์ฝ |
| 3 | ์๋ฐ ํธ๋ ์ด๋ฉ ์นด๋(FoilTradingCard) |
ํธ๋ ์ด๋ฉ ์นด๋(TradingCard)์ ์๋ฐ ๋ฒ์ |
| 4 | ํ๋กํ ๋ฐฐ๊ฒฝ(ProfileBackground) | Steam ํ๋กํ์์ ์ฌ์ฉํ๋ ํ๋กํ ๋ฐฐ๊ฒฝ |
| 5 | ํธ๋ ์ด๋ฉ ์นด๋(TradingCard) | Steam ํธ๋ ์ด๋ฉ ์นด๋. ๋ฐฐ์ง ์ ์์ ์ฌ์ฉ. ์๋ฐ ์๋ |
| 6 | Steam ๋ณด์(SteamGems) | ๋ถ์คํฐ ํฉ ์ ์์ ์ฌ์ฉ๋๋ Steam ๋ณด์. ๋ณด์ ๋๋ฏธ ํฌํจ |
| 7 | ํ๋งค ์์ดํ (SaleItem) | Steam ํ ์ธ๊ธฐ๊ฐ๋์ ํ๋ํ๋ ํน๋ณํ ์์ดํ |
| 8 | ์๋ชจํ(Consumable) | ์ฌ์ฉํ๋ฉด ์ฌ๋ผ์ง๋ ํน๋ณํ ์๋ชจ ์์ดํ |
| 9 | ํ๋กํ ์์ (ProfileModifier) | Steam ํ๋กํ ๋ชจ์์ ์์ ํ ์ ์๋ ํน๋ณํ ์์ดํ |
| 10 | ์คํฐ์ปค(Sticker) | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 11 | ์ฑํ ํจ๊ณผ(ChatEffect) | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 12 | ๋ฏธ๋ ํ๋กํ ๋ฐฐ๊ฒฝ(MiniProfileBackground) | Steam ํ๋กํ์ฉ ํน์ ๋ฐฐ๊ฒฝํ๋ฉด |
| 13 | ์๋ฐํ ์ก์(AvatarProfileFrame) | Steam ํ๋กํ์ฉ ํน์ ์๋ฐํ ์ก์ |
| 14 | ์์ง์ด๋ ์๋ฐํ(AnimatedAvatar) | Steam ํ๋กํ์ฉ ํน์ ์์ง์ด๋ ์๋ฐํ |
| 15 | ํค๋ณด๋ ์คํจ(KeyboardSkin) | Steam Deck์ฉ ํน์ ํค๋ณด๋ ์คํจ |
| 16 | StartupVideo | Steam deck ์ ์ฉ ํน์ ์์ ์์ |
๋ฌผ๋ก , ์ด ์์ฑ๊ฐ์ ์ฌ์ฉํด์ผ ํ ํ์
์ ๋ณดํต 2, 3, 4, 5๋ง์ ํฌํจํด์ผ ํ๋๋ฐ, ์ด ํ์
๋ง STM์์ ์ง์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ASF๋ ์์ดํ
์ ํฌ๊ท๋๋ฅผ ๊ตฌ๋ณํ๋ ์ ์ ํ ๋
ผ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ์ด๋ชจํฐ์ฝ์ด๋ ๋ฐฐ๊ฒฝ์ ์์ ํ๊ฒ ๋งค์นํ ์ ์์ต๋๋ค. ASF๋ ๊ฐ์ ๊ฒ์์ ๊ฐ์ ํ์
์ ์ด๋ชจํฐ์ฝ์ด๋ ๋ฐฐ๊ฒฝ์ ๊ณตํํ๋ค๊ณ ํ๋จํ๊ณ ๋์ผํ ํฌ๊ท๋๋ฅผ ๊ณต์ ํฉ๋๋ค.
ASF๋ ๊ฑฐ๋ ๋ด์ด ์๋๋ฉฐ, ์ฅํฐ ๊ฐ๊ฒฉ์ ์ ๊ฒฝ์ฐ์ง ์์์ ๋ช ์ฌํ์ญ์์ค. ํ ์ธํธ ๋ด์ ๋์ผํ ํฌ๊ท๋๋ฅผ ๊ฐ์ง ์์ดํ ์ด ๊ฐ์ ๊ฐ๊ฒฉ์ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์๋๋ค๋ฉด, ์ด ์ต์ ์ ๋น์ ์ ์ํ ๊ฒ์ ์๋๋๋ค. ์ด ์ค์ ์ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ์์ ๋ฌธ์ฅ์ ์ดํดํ๊ณ ๋์ํ๋์ง ๋๋ฒ ์๊ฐํ์ญ์์ค.
๋ฌด์จ ์ผ์ ํ๊ณ ์๋์ง ์์ง ๋ชปํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ 5๋ฅผ ์ ์งํ์ญ์์ค.
๊ธฐ๋ณธ๊ฐ์ด 0์ธ ushort flags ํ์
์
๋๋ค. ์ด ์์ฑ์ **OnlineStatus**๋ฅผ ๋ณด์ํ๋ ์ญํ ์ ํ๋ฉฐ, Steam ๋คํธ์ํฌ์ ์๋ฆด ์ถ๊ฐ์ ์ธ ์จ๋ผ์ธ ์ํ(presence) ๊ธฐ๋ฅ์ ์ง์ ํฉ๋๋ค. Offline์ด ์๋ **OnlineStatus**์ด ํ์ํ๋ฉฐ, ์๋์ ๊ฐ์ด ์ ์๋ฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํน๋ณํ ์จ๋ผ์ธ ์ํ(presence) ํ๋๊ทธ ์์, ๊ธฐ๋ณธ๊ฐ |
| 2 | InJoinableGame | ํด๋ผ์ด์ธํธ๊ฐ ์ฐธ๊ฐ ๊ฐ๋ฅํ(joinable) ๊ฒ์ ์ค์ |
| 8 | RemotePlayTogether | ํด๋ผ์ด์ธํธ๊ฐ remote play together ์ธ์ ์ ์ฌ์ฉ ์ค์ |
| 256 | ClientTypeWeb | ํด๋ผ์ด์ธํธ๊ฐ web ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ ์ค์ |
| 512 | ClientTypeMobile | ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ฐ์ผ ์ฑ์ ์ฌ์ฉ ์ค์ |
| 1024 | ClientTypeTenfoot | ํด๋ผ์ด์ธํธ๊ฐ big picture ๋ชจ๋๋ฅผ ์ฌ์ฉ ์ค์ |
| 2048 | ClientTypeVR | ํด๋ผ์ด์ธํธ๊ฐ VR ํค๋์ ์ ์ฌ์ฉ ์ค์ |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด **JSON ๋งคํ**์ ํ์ธํด๋ณด์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
์ด ์์ฑ์ ๊ธฐ๋ฐ์ด ๋๋ EPersonaStateFlag ํ์
์๋ ๋ ๋ง์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋๊ทธ๊ฐ ์์ง๋ง, ์ ํฌ๊ฐ ์๋ ํ ์ค๋๋ ๊ธฐ์ค์ผ๋ก๋ ์ ํ ํจ๊ณผ๊ฐ ์์ด์ ๊ฐ๋
์ฑ์ ์ํด ์ ์ธํ์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ 0์ผ๋ก ๋์ญ์์ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 1์
๋๋ค. ์ด ์์ฑ๊ฐ์ ์คํ ๋คํธ์ํฌ์ ๋ก๊ทธ์ธ ํ ์คํ ๋คํธ์ํฌ์ ์๋ ค์ค ํ๋ ์ํ๋ฅผ ์ง์ ํฉ๋๋ค. ํ์ฌ ์ ํํ ์ ์๋ ํ๋ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๊ฐ | ์ด๋ฆ |
|---|---|
| 0 | ์คํ๋ผ์ธ |
| 1 | ์จ๋ผ์ธ |
| 2 | ๋ค๋ฅธ ์ฉ๋ฌด ์ค |
| 3 | ์๋ฆฌ ๋น์ |
| 4 | ์๋ฉด ์ค |
| 5 | LookingToTrade |
| 6 | LookingToPlay |
| 7 | ์จ๊ธฐ(Invisible) |
์คํ๋ผ์ธ ์ํ๋ ์ฃผ ๊ณ์ ์ ๊ทน๋๋ก ์ ์ฉํฉ๋๋ค. ์๋ค์ํผ ๊ฒ์์ ๋์ฌ์ง์ผ๋ฉด ์คํ ์ํ๊ฐ "XXX๋ฅผ ํ๋ ์ด์ค"์ผ๋ก ๋ํ๋๋ฉฐ, ์ค์ ๋ก๋ ๋์ฌ๋ฅผ ์ง๊ณ ์๋๋ฐ ํ๋ ์ด๋ฅผ ํ๋๊ฒ์ผ๋ก ํผ๋์ธ ์ฃผ์ด ๋น์ ์ ์น๊ตฌ๋ค์ด ์คํดํ ์ ์์ต๋๋ค. ์คํ๋ผ์ธ ์ํ๋ฅผ ์ฌ์ฉํ๋ฉด ASF๋ก ์นด๋ ๋์ฌ์ค์ผ๋ "๊ฒ์์ค"์ผ๋ก ํ์ํ์ง ์์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋๋ค. ์ด๊ฒ์ ASF๊ฐ ์ ์์๋ํ๊ธฐ ์ํด์ ์คํ ์ปค๋ฎค๋ํฐ์ ๋ก๊ทธ์ธํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ค ์คํ ๋คํธ์ํฌ์ ์ ์ํด์, ๊ฒ์์ ํ๋ ์ด์ค์ด์ง๋ง, ์ฐ๋ฆฌ์ ์กด์ฌ๋ฅผ ์ ํ ์๋ฆฌ์ง ์์ต๋๋ค. ์คํ๋ผ์ธ ์ํ์์ ํ๋ ์ดํ๋ ๊ฒ์๋ ํ๋ ์ด ์๊ฐ์ ํฌํจ๋๋ฉฐ, ํ๋กํ์ "์ต๊ทผ์ ํ๋ ์ดํ ๊ฒ์"์ ํ์๋ ๋ค๋ ๊ฒ์ ๋ช
์ฌํ์ญ์์ค.
๊ทธ ์ธ์, ์ด ๊ธฐ๋ฅ์ ASF๋ ์คํ์ค์ด์ง๋ง ์คํ ํด๋ผ์ด์ธํธ๋ ๋์์ ์ด์ด๋์ง ์๊ณ ๋ ์๋ฆผ๊ณผ ์ฝ์ง ์์ ๋ฉ์์ง๋ฅผ ์์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ค์ํฉ๋๋ค. ์ด๊ฒ์ ASF๊ฐ ์คํ ํด๋ผ์ด์ธํธ ๊ทธ ์์ฒด์ธ ๊ฒ ์ฒ๋ผ ํ๋ํ๋ฉฐ, ASF๊ฐ ๊ทธ๋ ๊ฒ ํ๋ ์๋๋ ์คํ์ด ๋ชจ๋ ๋ฉ์์ง์ ์ด๋ฒคํธ๋ฅผ ASF๋ก ๋ณด๋ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ASF์ ์คํ ํด๋ผ์ด์ธํธ๋ฅผ ๋ ๋ค ์คํํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ ํด๋ผ์ด์ธํธ ๋ชจ๋ ์ ํํ๊ฒ ๋์ผํ ์ด๋ฒคํธ๋ฅผ ์์ ํฉ๋๋ค. ํ์ง๋ง ๋ง์ฝ ASF๊ฐ ์คํ์ค์ด๋ผ๋ฉด ์คํ ํด๋ผ์ด์ธํธ๊ฐ ์กด์ฌํ์ง ์์ ๋ฐ์ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ํน์ ์ด๋ฒคํธ์ ๋ฉ์์ง๋ฅผ "๋ฐฐ๋ฌ๋" ๊ฒ์ผ๋ก ํ์ํ ์๋ ์์ต๋๋ค. ์คํ๋ผ์ธ ์ํ๋ ์ด ๋ฌธ์ ๋ ํด๊ฒฐํฉ๋๋ค. ASF๋ ์ด ๊ฒฝ์ฐ ์ด๋ค ์ปค๋ฎค๋ํฐ ์ด๋ฒคํธํธ๋ก๋ ๊ฐ์ฃผ๋์ง ์๊ธฐ๋๋ฌธ์ ๋ชจ๋ ์ฝ์ง ์์ ๋ฉ์์ง์ ๋ค๋ฅธ ์ด๋ฒคํธ๊ฐ ๋น์ ์ด ๋์์ค๋ฉด ์ฝ์ง ์์ ์ํ๋ก ์ ์์ ์ผ๋ก ํ์๋ ๊ฒ์ ๋๋ค.
์คํ๋ผ์ธ(Offline) ๋ชจ๋๋ก ์คํ ์ค์ธ ASF๋ ์ฑํ
๋ฟ๋ง ์๋๋ผ ์ ์ฒด ์ปค๋ฎค๋ํฐ ์ํ(presence)๊ฐ ์ฌ์ค์ ์์ ํ ์คํ๋ผ์ธ ์ํ์ด๊ธฐ ๋๋ฌธ์, ํ์์ฒ๋ผ Steam ์ฑํ
์ ํตํ ๋ช
๋ น์ ๋ฐ์ ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ
์ ๋์ ์จ๊ธฐ(Invisible) ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด ๋ชจ๋๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์๋ํ์ง๋ง(์ํ๋ฅผ ๋
ธ์ถํ์ง ์์), ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์๋ตํ๋ ๊ธฐ๋ฅ์ ์ ์ง๋ฉ๋๋ค(๋ฐ๋ผ์ ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์๋ฆผ๊ณผ ์ฝ์ง ์์ ๋ฉ์์ง๋ฅผ ์ ๋ฆฌํ ๊ฐ๋ฅ์ฑ๋ ์์ต๋๋ค). ์จ๊ธฐ(Invisible) ๋ชจ๋๋ (์ํ ์ธก๋ฉด์์) ๋
ธ์ถํ๊ณ ์ถ์ง ์์ง๋ง ์ฌ์ ํ ๋ช
๋ น์ ๋ณด๋ผ ์ ์์ด์ผ ํ๋ ๋ถ๊ณ์ ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
ํ์ง๋ง ์จ๊ธฐ(Invisible) ๋ชจ๋์๋ ํ ๊ฐ์ง ํจ์ ์ด ์์ต๋๋ค โ ์ฃผ(primary) ๊ณ์ ๊ณผ๋ ์ ๋ง์ง ์๋๋ค๋ ์ ์
๋๋ค. ์ด๋ ASF ์์ฒด๋ ์ํ๋ฅผ ๋
ธ์ถํ์ง ์๋๋ผ๋, ํ์ฌ ์จ๋ผ์ธ ์ํ์ธ ์ด๋ค Steam ์ธ์
์ด๋ ์ํ๋ฅผ ๋
ธ์ถ์ํค๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ ASF ์ธก์์ ๊ณ ์น ์ ์๋ Steam ๋คํธ์ํฌ์ ํ์ฌ ํ๊ณ/๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์จ๊ธฐ(Invisible) ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๋์ผํ ๊ณ์ ์ ๋ค๋ฅธ ๋ชจ๋ ์ธ์
๋ ์จ๊ธฐ(Invisible) ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ผ ํฉ๋๋ค. ์ด๋ ASF๊ฐ ์ ์ผํ ํ์ฑ ์ธ์
์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ถ๊ณ์ ์์๋ ๋ฌธ์ ๊ฐ ์๊ฒ ์ง๋ง, ์ฃผ ๊ณ์ ์์๋ ์น๊ตฌ๋ค์๊ฒ ์จ๋ผ์ธ(Online)์ผ๋ก ํ์๋๋ฉด์ ASF ํ๋๋ง ์จ๊ธฐ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ๋๋ถ๋ถ์ผ ๊ฒ์
๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์จ๊ธฐ(Invisible) ๋ชจ๋๋ ์ฌ๋ฌ๋ถ์๊ฒ ์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค (๋์ ์คํ๋ผ์ธ(Offline) ๋ชจ๋ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค). ์ด ํ๊ณ/๋ฒ๊ทธ๊ฐ ์ธ์ ๊ฐ Valve์ ์ํด ํด๊ฒฐ๋๊ธธ ๋ฐ๋ผ์ง๋ง, ์กฐ๋ง๊ฐ ๊ทธ๋ ๊ฒ ๋ ๊ฑฐ๋ผ๊ณ ๊ธฐ๋ํ์ง๋ ์์ต๋๋ค...
์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ์ฃผ ๊ณ์ ์ 0 (์คํ๋ผ์ธ)์ผ๋ก ๋๊ณ ๋ค๋ฅธ ๊ณ์ ์ ๊ธฐ๋ณธ๊ฐ์ธ 1 (์จ๋ผ์ธ) ๋ก ๋๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด 0(PlainText)์ธ byte ํ์
์
๋๋ค. ์ด ์์ฑ์ SteamPassword ์์ฑ์ ํ์(format)์ ์ ์ํ๋ฉฐ, ํ์ฌ security ์น์
์ ๋ช
์๋ ๊ฐ๋ค์ ์ง์ํฉ๋๋ค. SteamPassword ์์ฑ์ด ์ค์ ๋ก ์ผ์นํ๋ PasswordFormat์ ๋ง๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธํด์ผ ํ๋ฏ๋ก, ํด๋น ์น์
์ ๋ช
์๋ ์๋ด๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ์ฆ, PasswordFormat์ ๋ณ๊ฒฝํ๋ฉด SteamPassword๋ ๊ทธ ํ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๊ณ ์ด๋ฏธ ๊ทธ ํ์์ผ๋ก ๋ฐ๋์ด์์ด์ผ ํฉ๋๋ค. ๋ฌด์จ ์ผ์ ํ๊ณ ์๋์ง ์์ง ๋ชปํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ 0์ ์ ์งํ์ญ์์ค.
์ด๋ฏธ ์ต์ ํ ๋ฒ Steam ๋คํธ์ํฌ์ ๋ก๊ทธ์ธํ ์ ์ด ์๋ ๋ด์ PasswordFormat์ ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด, ๋ค์ ๋ด ์์ ์ ์ผํ์ฑ ๋ณตํธํ(decrypt) ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค โ ์ด๋ PasswordFormat์ด Bot.db ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ ๋ด ๋ฏผ๊ฐํ ์์ฑ๋ค์ ์๋ ์ํธํ/๋ณตํธํ์๋ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ์ค๋ฅ๋ ์์ ํ๊ฒ ๋ฌด์ํ์
๋ ๋ฉ๋๋ค. ASF๊ฐ ์ด ์ํฉ์์ ์์ฒด์ ์ผ๋ก ๋ณต๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค๋ง ๋งค๋ฒ ์ฌ์์ํ ๋๋ง๋ค ๋ฑ ์ง์์ ์ผ๋ก ๋ฐ์ํ๋ค๋ฉด, ์์ธ์ ์กฐ์ฌํด๋ด์ผ ํฉ๋๋ค.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ๊ฐ์ cdํค ๋ฑ๋ก์์ ASF ๋ด์ ํ๋์ ์๋์ ๊ฐ์ด ์ ์ํฉ๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํน๋ณํ redeeming preference ์์, ๊ธฐ๋ณธ๊ฐ |
| 1 | Forwarding | redeemํ ์ ์๋ ํค๋ฅผ ๋ค๋ฅธ ๋ด์ผ๋ก ์ ๋ฌ |
| 2 | Distributing | ๋ชจ๋ ํค๋ฅผ ๋ณธ์ธ ๋ฐ ๋ค๋ฅธ ๋ด๋ค์๊ฒ ๋ถ๋ฐฐ |
| 4 | KeepMissingGames | ์ ๋ฌํ ๋ (์ ์ฌ์ ์ผ๋ก) ์๋ ๊ฒ์์ ๋ํ ํค๋ ์ ์งํ๋ฉฐ, ์ฌ์ฉํ์ง ์์ ์ฑ๋ก ๋จ๊ฒจ๋ |
| 8 | AssumeWalletKeyOnBadActivationCode |
BadActivationCode ํค๋ฅผ CannotRedeemCodeFromClient์ ๋์ผํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ์ฌ, ์ง๊ฐ ํค(wallet key)๋ก ๋ฑ๋ก์ ์๋ํฉ๋๋ค. |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด **json mapping**์ ์ฐธ๊ณ ํ์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
Forwarding์ ๋ฑ๋กํ ์ ์๋ ํค๋ฅผ ํด๋น ๊ฒ์์ ๋ณด์ ํ์ง ์์ ๋ค๋ฅธ ์ฐ๊ฒฐ๋์ด ๋ก๊ทธ์ธ ์ค์ธ ๋ด์๊ฒ ์ ๋ฌํฉ๋๋ค (ํ์ธ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ). ๊ฐ์ฅ ํํ ๊ฒฝ์ฐ๋ AlreadyPurchased(์ด๋ฏธ ๊ตฌ๋งคํ ๊ฒ์)๋ฅผ ํด๋น ๊ฒ์์ด ์๋ ๋ค๋ฅธ ๋ด์๊ฒ ์ ๋ฌํ๋ ๊ฒ์ด์ง๋ง, ์ด ์ต์
์ DoesNotOwnRequiredApp, RateLimited, RestrictedCountry ๋ฑ ๋ค๋ฅธ ์ํฉ๋ ํจ๊ป ์ฒ๋ฆฌํฉ๋๋ค.
Distributing์ ๋ด์ด ๋ฐ์ ๋ชจ๋ ํค๋ฅผ ์๊ธฐ ์์ ๊ณผ ๋ค๋ฅธ ๋ด๋ค์๊ฒ ๋๋์ด ๋ถ๋ฐฐํ๋๋ก ํฉ๋๋ค. ์ฆ, ๊ฐ ๋ด์ด ๋ฐฐ์น(batch)์์ ํค๋ฅผ ํ๋์ฉ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ๋ค๋ฅธ ๊ฒ์์ ํค๋ฅผ ๋ฑ๋กํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ, ๋์ผํ ๊ฒ์์ ํค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ฑ๋กํ๋ฉด์ ๋ด๋ค์๊ฒ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐํ๊ณ ์ถ์ ๋๋ง ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํ ๋ฒ์ redeem ์์
์์ ํค๋ฅผ ๋จ ํ๋๋ง ๋ฑ๋กํ๋ ๊ฒฝ์ฐ์๋ ์๋ฏธ๊ฐ ์์ต๋๋ค (๋ถ๋ฐฐํ ์ถ๊ฐ ํค๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค).
KeepMissingGames๋ ๋ฑ๋ก ์ค์ธ ํค๊ฐ ์ค์ ๋ก ๋ณธ์ธ์ ๋ด์ด ๋ณด์ ํ ๊ฒ์ธ์ง ํ์คํ์ง ์์ ๊ฒฝ์ฐ Forwarding์ ๊ฑด๋๋ฐ๋๋ก ํฉ๋๋ค. ์ฆ, Forwarding์ DoesNotOwnRequiredApp, RateLimited, RestrictedCountry ๋ฑ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ํจ๊ป ์ฒ๋ฆฌํ๋ ๋์ , AlreadyPurchased ํค๋ง ์ ์ฉ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ์ต์
์ ์ฃผ ๊ณ์ ์์ ์ฌ์ฉํ๋ฉฐ, ๋ด์ด ์ผ์์ ์ผ๋ก RateLimited ์ํ๊ฐ ๋๋๋ผ๋ ํด๋น ๊ณ์ ์์ ๋ฑ๋ก ์ค์ธ ํค๊ฐ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ ๋ฌ๋์ง ์๋๋ก ๋ณด์ฅํ๊ธฐ ์ํ ์ฉ๋์
๋๋ค. ์ค๋ช
์์ ์ง์ํ ์ ์๋ฏ์ด, Forwarding์ด ํ์ฑํ๋์ด ์์ง ์์ผ๋ฉด ์ด ํ๋๋ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
AssumeWalletKeyOnBadActivationCode๋ BadActivationCode ํค๋ฅผ CannotRedeemCodeFromClient๋ก ๊ฐ์ฃผํ๋๋ก ํ์ฌ, ASF๊ฐ ์ด๋ฅผ ์ง๊ฐ ํค(wallet key)๋ก ๋ฑ๋ก์ ์๋ํ๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ Steam์ด ์ง๊ฐ ํค๋ฅผ (๊ธฐ์กด์ฒ๋ผ CannotRedeemCodeFromClient๊ฐ ์๋๋ผ) BadActivationCode๋ก ์๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์, ์ด๋ก ์ธํด ASF๊ฐ ํด๋น ํค๋ฅผ ์์ ๋ฑ๋ก ์๋์กฐ์ฐจ ํ์ง ์๊ฒ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ํฉ๋๋ค. ๋ค๋ง, ์ด ์ค์ ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ชจ๋ ์ ํจํ์ง ์์ ํค๋ฅผ ์ง๊ฐ ์ฝ๋๋ก ๋ฑ๋ก ์๋ํ๊ฒ ๋์ด, (์ ์ฌ์ ์ผ๋ก ์ ํจํ์ง ์์) ๊ณผ๋ํ ์์ฒญ์ด Steam ์๋น์ค๋ก ์ ์ก๋๋ฉฐ ๊ทธ๋ก ์ธํ ์ฌ๋ฌ ์ ์ฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋์ , ์ง๊ฐ ํค๋ฅผ ๋ฑ๋กํ๋ค๋ ๊ฒ์ ์๊ณ ์๋ ๊ฒฝ์ฐ์๋ ForceAssumeWalletKey redeem^ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด ๋ชจ๋๋ ํ์ํ ๊ฒฝ์ฐ์๋ง, ํ์ํ ๋งํผ๋ง ํด๋น ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
Forwarding๊ณผ Distributing์ ๋ ๋ค ํ์ฑํํ๋ฉด forwarding ๊ธฐ๋ฅ ์์ distributing ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ด, ASF๊ฐ ํ๋์ ํค๋ฅผ ๋ชจ๋ ๋ด์ ์์๋๋ก ๋จผ์ ๋ฑ๋ก ์๋ํ ๋ค(forwarding) ๋ค์ ํค๋ก ๋์ด๊ฐ๊ฒ ๋ฉ๋๋ค(distributing). ์ด ์ต์
์ ์ผ๋ฐ์ ์ผ๋ก Forwarding์ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง, ๋งค๋ฒ ์์๋๋ก ๋ชจ๋ ํค๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ (์ด๋ Forwarding๋ง ์ฌ์ฉํ ๋์ ๋์์
๋๋ค) ํค๊ฐ ์ฌ์ฉ๋ ๋๋ง๋ค ๋ด์ ์ ํํ๋ ๋ฐฉ์์ผ๋ก ๋์์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด ๋์ ๋ฐฉ์์ ๋๋ถ๋ถ ํน์ ๋ชจ๋ ํค๊ฐ ๋์ผํ ๊ฒ์์ ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ ๋ ์ ์ฉํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ Forwarding๋ง ์ฌ์ฉํ๋ฉด ๋จผ์ ํ ๋ด์๊ฒ ๋ชจ๋ ๊ฒ์ ๋ฑ๋ก ์๋ํ๊ฒ ๋๋๋ฐ(์ด๋ ๊ฐ ํค๊ฐ ์๋ก ๋ค๋ฅธ ๊ฒ์์ธ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค), Forwarding + Distributing์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ค์ ํค๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ด์ ์ ํํ์ฌ ์ ํค ๋ฑ๋ก ์์
์ ์ฒ์ ๋ด์ด ์๋ ๋ค๋ฅธ ๋ด์๊ฒ "๋ถ๋ฐฐ"ํฉ๋๋ค(์ด๋ ํค๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฒ์์ธ ๊ฒฝ์ฐ, ํค๋ง๋ค ๋ฐ์ํ๋ ๋ถํ์ํ ์๋ ํ ๋ฒ์ ๊ฑด๋๋ธ ์ ์์ด ์ ํฉํฉ๋๋ค).
๋ชจ๋ ๋ฑ๋ก ์๋๋ฆฌ์ค์์ ์ค์ ๋ด ์์๋ ์ํ๋ฒณ์์ด๋ฉฐ, ์ฌ์ฉํ ์ ์๋ ๋ด(์ฐ๊ฒฐ๋์ง ์์, ์ค์ง๋จ ๋ฑ)์ ์ ์ธ๋ฉ๋๋ค. IP๋ณ ๋ฐ ๊ณ์ ๋ณ๋ก ์๊ฐ๋น ๋ฑ๋ก ์๋ ํ์ ์ ํ์ด ์์ผ๋ฉฐ, OK๋ก ๋๋์ง ์์ ๋ชจ๋ ๋ฑ๋ก ์๋๋ ์คํจํ ์๋๋ก ์ง๊ณ๋๋ค๋ ์ ์ ์ ์ํ์ธ์. ASF๋ AlreadyPurchased ์คํจ ํ์๋ฅผ ์ต์ํํ๊ธฐ ์ํด ์ต์ ์ ๋คํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฏธ ํด๋น ๊ฒ์์ ๋ณด์ ํ ๋ค๋ฅธ ๋ด์๊ฒ ํค๋ฅผ ์ ๋ฌํ์ง ์๋๋ก ์๋ํ์ง๋ง, Steam์ ๋ผ์ด์ ์ค ์ฒ๋ฆฌ ๋ฐฉ์์ผ๋ก ์ธํด ํญ์ ๋ณด์ฅ๋์ง๋ ์์ต๋๋ค. Forwarding์ด๋ Distributing๊ณผ ๊ฐ์ ๋ฑ๋ก ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด RateLimited์ ๊ฑธ๋ฆด ๊ฐ๋ฅ์ฑ์ด ํญ์ ๋์์ง๋๋ค.
๋ํ ์ ๊ทผ ๊ถํ์ด ์๋ ๋ด์๊ฒ๋ ํค๋ฅผ ์ ๋ฌํ๊ฑฐ๋ ๋ฐฐํฌํ ์ ์๋ค๋ ์ ๋ ์ ์ํ์ธ์. ๋น์ฐํ ์ด์ผ๊ธฐ์ง๋ง, ์๋ฅผ ๋ค์ด status ASF **๋ช
๋ น์ด**๋ฅผ ์ฌ์ฉํด์ ๋ฑ๋ก ๊ณผ์ ์ ํฌํจํ๋ ค๋ ๋ชจ๋ ๋ด์ ๋ํด ์ต์ Operator ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ์ธ์.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 3์
๋๋ค. ์ด ์์ฑ์ ์๊ฒฉ ์ 3์ ์๋น์ค์์ ํต์ ์ ๋ํ ๋ด๋ณ ASF ๋์์ ์ ์ํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ์ 3์์์ ํต์ ์ด ์ ํ ํ์ฉ๋์ง ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์ผ๋ถ ASF ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. |
| 1 | SteamGroup | **ASF์ Steam ๊ทธ๋ฃน**๊ณผ์ ํต์ ์ ํ์ฉํฉ๋๋ค |
| 2 | PublicListing | ์ฌ์ฉ์๊ฐ **TradingPreferences**์์ SteamTradeMatcher๋ ํ์ฑํํ ๊ฒฝ์ฐ, ๋ฑ๋ก(listing)์ ์ํด **ASF์ STM listing**๊ณผ์ ํต์ ์ ํ์ฉํฉ๋๋ค |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด **json mapping**์ ์ฐธ๊ณ ํ์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
์ด ์ต์
์ ASF๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์ 3์ ํต์ ์ ํฌํจํ์ง๋ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ค์ ์์ ์์์ ์ผ๋ก ํฌํจ๋์ง ์๋ ํต์ ๋ง์ ๋์์ผ๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ASF์ ์๋ ์
๋ฐ์ดํธ๋ฅผ ํ์ฑํํ ๊ฒฝ์ฐ, ASF๋ ์ค์ ์ ๋ฐ๋ผ GitHub(๋ค์ด๋ก๋์ฉ)์ ์ ํฌ ์๋ฒ(์ฒดํฌ์ฌ ๊ฒ์ฆ์ฉ) ์์ชฝ ๋ชจ๋์ ํต์ ํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, **TradingPreferences**์์ MatchActively๋ฅผ ํ์ฑํํ๋ฉด ๋ฑ๋ก๋ ๋ด ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ ํฌ ์๋ฒ์ ํต์ ํ๊ฒ ๋๋ฉฐ, ์ด๋ ํด๋น ๊ธฐ๋ฅ์ ํ์์ ์
๋๋ค.
์ด ์ฃผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ remote communication ์น์ ์์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ FarmingPreferences์ SendOnFarmingFinished ์ค์ ๊ณผ ๋งค์ฐ ์ ์ฌํ๊ฒ ์๋ํ์ง๋ง, ํ ๊ฐ์ง ์ฐจ์ด๊ฐ ์์ต๋๋ค - ํ๋ฐ์ด ๋๋ฌ์ ๋ ๊ฑฐ๋๋ฅผ ๋ณด๋ด๋ ๋์ , ๋จ์ ํ๋ฐ๋๊ณผ ๊ด๊ณ์์ด SendTradePeriod ์๊ฐ๋ง๋ค ๊ฑฐ๋๋ฅผ ๋ณด๋ผ ์๋ ์์ต๋๋ค. ๋ถ๊ณ์ ์ ๋์ฌ๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ ํ์์ ๋ฃจํ
ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 0์ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ด์ด ๋งค์ผ ๊ฑฐ๋๋ฅผ ๋ณด๋ด๊ธธ ์ํ๋ค๋ฉด ์ฌ๊ธฐ์ 24๋ฅผ ๋ฃ์ผ์ญ์์ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ **ASF 2FA**์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋์ง๋ง, 2FA ํ์ธ์ ์๋์ผ๋ก ์ ๋ ์ฒ๋ฆฌํ ๊ณํ์ด๋ผ๋ฉด ํ์๋ ์๋๋๋ค. ์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ 0์ผ๋ก ๋์ญ์์ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋น์ ์ด Steam์ ๋ก๊ทธ์ธํ ๋ ์ฌ์ฉํ๋ Steam ๋ก๊ทธ์ธ ์์ด๋๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์ Steam ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ง์ ํ๋ ๋์ , config์ ์ ์ฅํ์ง ์๊ณ ASF๋ฅผ ์์ํ ๋๋ง๋ค ์ง์ ์
๋ ฅํ๊ณ ์ถ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ null์ ์ ์งํด๋ ๋ฉ๋๋ค. ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ config ํ์ผ์ ์ ์ฅํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
ulong ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋ด์ด ์๋์ผ๋ก ๊ฐ์
ํด์ผ ํ๋ Steam ๊ทธ๋ฃน ๋๋ ๊ทธ๋ฃน๋ํ์ steamID๋ฅผ ์ ์ํฉ๋๋ค. ๊ทธ๋ฃน์ SteamID๋ ์ฌ๊ธฐ ๋ก ์ด๋ํด์ /memberslistxml?xml=1 ์ ๋งํฌ์ ๋ง์ง๋ง์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ฐ ๋ชจ์์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ์ <groupID64> ํ๊ทธ์์ ๊ทธ๋ฃน์ SteamID๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์์ ์์์์๋ 103582791440160998 ์
๋๋ค. ๋ด์ ์์์์ ํด๋น ๊ทธ๋ฃน์ ๊ฐ์
์ ์๋ํ๊ณ , ๋ํ ์ด ๊ทธ๋ฃน์ ๊ทธ๋ฃน ์ด๋๋ฅผ ์๋์ผ๋ก ์๋ฝํ์ฌ ์ด ๊ทธ๋ฃน์ด ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ด์ ์ด๋ํ ์ ์๊ฒ ํฉ๋๋ค. ๋ด์ ์ํ ๊ทธ๋ฃน์ด ์๋ค๋ฉด ์ด ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ธ 0์ผ๋ก ์ ์งํ์ญ์์ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ์ Steam ๋ณดํธ์ PIN์ ์ ์ํฉ๋๋ค. ASF๋ Steam ๋ณดํธ์ ๊ธฐ๋ฅ์ผ๋ก ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํด์ผ ํ๋ฏ๋ก, ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ ์ ์๋๋ก ๋ณดํธ์ ์ ๊ธ ํด์ PIN์ ASF์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ null์ ์ด ๊ณ์ ์ ์ ๊ธ ํด์ ํ๋ ๋ฐ Steam ๋ณดํธ์ PIN์ด ํ์ํ์ง ์๋ค๋ ๋ป์ด๋ฉฐ, Steam ๋ณดํธ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋์ฒด๋ก ์ด ๊ฐ์ ๊ทธ๋๋ก ๋๋ฉด ๋ฉ๋๋ค.
์ ํ๋ ์ํฉ์์๋ ASF๊ฐ ์ ํจํ Steam ๋ณดํธ์ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ ์๋ ์์ง๋ง, ์ด๋ ๊ณผ๋ํ OS ๋ฆฌ์์ค์ ์ถ๊ฐ ์๊ฐ์ด ์์๋๋ฉฐ ์ฑ๊ณต์ด ๋ณด์ฅ๋์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธฐ๋ฅ์ ์์กดํ์ง ๋ง๊ณ , ASF๊ฐ ์ฌ์ฉํ ์ ์๋๋ก config์ ์ ํจํ SteamParentalCode๋ฅผ ์ง์ ์
๋ ฅํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ASF๊ฐ PIN์ด ํ์ํ๋ค๊ณ ํ๋จํ์ง๋ง ์ค์ค๋ก ์์ฑํ ์ ์๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์์๊ฒ ์
๋ ฅ์ ์์ฒญํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๋น์ ์ด Steam์ ๋ก๊ทธ์ธํ ๋ ์ฌ์ฉํ๋ Steam ์ํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์ Steam ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํ๋ ๋์ , config์ ์ ์ฅํ์ง ์๊ณ ASF๋ฅผ ์์ํ ๋๋ง๋ค ์ง์ ์
๋ ฅํ๊ณ ์ถ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ null์ ์ ์งํด๋ ๋ฉ๋๋ค. ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ config ํ์ผ์ ์ ์ฅํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์น๊ตฌ ๋ชฉ๋ก์ ๋น์ ์ ๋ด์ด ์๋ค๋ฉด, ๊ฑฐ๋ ํ ํฐ์ ๊ฑฑ์ ํ์ง ์๊ณ ๋น์ ์๊ฒ ์ฆ์ ๊ฑฐ๋๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ธ null๋ก ์ ์งํ ์ ์์ต๋๋ค. ํ์ง๋ง ์น๊ตฌ ๋ชฉ๋ก์ ๋น์ ์ ๋ด์ด ์๋ค๋ฉด ์ด ๋ด์ด ๊ฑฐ๋๋ฅผ ๋ณด๋ผ ์ฌ์ฉ์์ ๊ฑฐ๋ ํ ํฐ์ ์์ฑํ๊ณ ์ฑ์์ค์ผ ํฉ๋๋ค. ์ฆ, ์ด ์์ฑ๊ฐ์ ์ด ๋ด ์ธ์คํด์ค์ SteamUserPermissions์ด ์ฃผ์ธ(Master) ๊ถํ์ผ๋ก ์ ์๋ ๊ณ์ ์ ๊ฑฐ๋ ํ ํฐ์ผ๋ก ์ฑ์์ ธ์ผ ํฉ๋๋ค.
ํ ํฐ์ ์ฑ์ฐ๊ธฐ ์ํด์๋ ์ฃผ์ธ(Master) ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํด์, ์ฌ๊ธฐ ๋ฅผ ๋ฐฉ๋ฌธํด์ ๊ฑฐ๋ URL์ ํ์ธํ์ญ์์ค. ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ํ ํฐ์ ๋น์ ์ ๊ฑฐ๋ URL์ &token= ๋ค์ 8์๋ฆฌ ๋ฌธ์์
๋๋ค. ๊ทธ 8์๋ฆฌ ๋ฌธ์๋ฅผ ๋ณต์ฌํด์ ์ฌ๊ธฐ SteamTradeToken์ ๋ฃ์ผ์ญ์์ค. ์ ์ฒด ๊ฑฐ๋ URL์ด๋ &token= ๋ถ๋ถ์ ํฌํจํ์ง ๋ง๊ณ ์ค์ง ํ ํฐ(8์๋ฆฌ)๋ง ๋ฃ์ผ์ญ์์ค.
ImmutableDictionary<ulong, byte> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ ๋น์ด์์ต๋๋ค. ์ด ์์ฑ๊ฐ์ 64๋นํธ Steam ID๋ก ์ธ์๋๋ Steam ์ฌ์ฉ์์ ASF ์ธ์คํด์ค์์์ ๊ถํ์ ํน์ ํ๋ byte ์ซ์๋ก ๋งค์นญ๋๋ ์ฌ์ ์์ฑ๊ฐ์
๋๋ค. ASF์์ ํ์ฌ ๊ฐ๋ฅํ ๋ด ๊ถํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํน๋ณํ ๊ถํ ์์. ์ด๋ ์ฃผ๋ก ์ด ๋์ ๋๋ฆฌ์ ์๋ Steam ID์ ๋ถ์ฌ๋๋ ๊ธฐ์ค๊ฐ์ด๋ฉฐ, ์ด ๊ถํ์ผ๋ก ๋๊ตฐ๊ฐ๋ฅผ ๋ณ๋๋ก ์ง์ ํ ํ์๋ ์์ต๋๋ค. |
| 1 | ๊ฐ์กฑ ๊ณต์ (FamilySharing) | ๊ฐ์กฑ ๊ณต์ ์ฌ์ฉ์์ ๋ํ ์ต์ํ์ ์ ๊ทผ๋ง ์ ๊ณตํฉ๋๋ค. ์ด ๋ํ ์ฐธ์กฐ์ฉ ๊ฐ์ ๋๋ค. ASF๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ Steam ID๋ฅผ ์๋์ผ๋ก ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. |
| 2 | ์ด์์(Operator) | ์ฃผ๋ก ๋ผ์ด์ ์ค ์ถ๊ฐ์ ํค ๋ฑ๋ก๊ณผ ๊ฐ์ ๋ด ์ธ์คํด์ค์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ถํ์ ์ ๊ณตํฉ๋๋ค. |
| 3 | ์ฃผ์ธ(Master) | ๋ด ์ธ์คํด์ค์ ๋ํ ์ ์ฒด ๊ถํ์ ์ ๊ณตํฉ๋๋ค. |
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์ฃผ์ด์ง ์ฌ์ฉ์์ ๋ํด ๊ถํ์ ๋ถ์ฌํ๋ ์์ฑ๊ฐ์
๋๋ค. ๊ถํ์ ASF ๋ช
๋ น์ด ์ ์ ๊ทผํ ๋ ์ค์ํ์ง๋ง, ๊ฑฐ๋๋ฅผ ์๋ฝํ๋ ๊ฒ ๊ฐ์ ๋ง์ ASF ๊ธฐ๋ฅ์ ํ์ฑํํ๋๋ฐ๋ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ณธ์ธ ๊ณ์ ์ Master๋ก ์ค์ ํ๊ณ , ์น๊ตฌ 2~3๋ช
์๊ฒ๋ Operator ๊ถํ์ ๋ถ์ฌํ์ฌ ASF๋ก ๋ด์ ํค๋ฅผ ์ฝ๊ฒ ๋ฑ๋กํ ์ ์๊ฒ ํ๋, ๋ด์ ์ค์ง์ํค๋ ๊ฒ๊ณผ ๊ฐ์ ์์
์ ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ๊ถํ์ ์ฝ๊ฒ ์ค์ ์์ผ๋ฏ๋ก ๋น์ ์ ๋ด์ ํน์ ํ๋์ ํ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
์ ํํ ํ ์ฌ์ฉ์๋ง์ ์ฃผ์ธ(Master)์ผ๋ก, ๊ทธ๋ฆฌ๊ณ ํ์ํ ๋งํผ์ ์ด์์(Operator) ๋ฐ ๊ทธ ์ดํ๋ก ์ค์ ํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ๊ธฐ์ ์ ์ผ๋ก๋ ์ฌ๋ฌ ๋ช
์ Master๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ASF๋ ์๋ฅผ ๋ค์ด ๋ด์๊ฒ ์ ์ก๋ ๋ชจ๋ Master์ ๊ฑฐ๋๋ฅผ ์๋ฝํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ค๊ณผ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. ๋ค๋ง ๋จ์ผ ๋์์ด ํ์ํ ์์
(์: loot ์์ฒญ, ๊ทธ๋ฆฌ๊ณ FarmingPreferences์ SendOnFarmingFinished ์ค์ ์ด๋ SendTradePeriod์ ๊ฐ์ ์์ฑ)์์๋ ์ด๋ค ์ค (Steam ID๊ฐ ๊ฐ์ฅ ๋ฎ์) ํ ๋ช
๋ง ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ ์ฝ์ฌํญ, ํนํ loot ์์ฒญ์ด ์ค์ ๋ก ๋ช
๋ น์ ์คํํ Master์ ๊ด๊ณ์์ด ํญ์ Steam ID๊ฐ ๊ฐ์ฅ ๋ฎ์ Master์๊ฒ ์์ดํ
์ ์ ์กํ๋ค๋ ์ ์ ์์ ํ ์ดํดํ๊ณ ์๋ค๋ฉด, ์ฌ๊ธฐ์ ์ฌ๋ฌ ๋ช
์ Master ๊ถํ ์ฌ์ฉ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ค๋ง ๋จ์ผ master ๋ฐฉ์์ ์ฌ์ ํ ๊ถ์ฅํฉ๋๋ค.
์์ ์(Owner) ๊ถํ์ด ๋ ํ๋ ์์ต๋๋ค. ์ผ๋ฐ ํ๊ฒฝ์ค์ ์ SteamOwnerID ์์ฑ๊ฐ์ ์ ์ธ๋์ด ์์ต๋๋ค. SteamUserPermissions ์์ฑ๊ฐ์ ASF ํ๋ก์ธ์ค๊ฐ ์๋๋ผ ๋ด ์ธ์คํด์ค์ ๊ด๋ จ๋ ๊ถํ๋ง ์ ์ํ๋ฏ๋ก ์์ ์(Owner) ๊ถํ์ ์ฌ๊ธฐ์์ ํ ๋นํ ์ ์์ต๋๋ค. ๋ด๊ณผ ๊ด๋ จ๋ ์์
์์ SteamOwnerID๋ ์ฃผ์ธ(Master)๊ณผ ๋์ผํ๊ฒ ์ทจ๊ธ๋๋ฏ๋ก ์ฌ๊ธฐ์์ SteamOwnerID๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๊ผญ ํ์ํ์ง๋ ์์ต๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 60์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ASF๋ ๊ฑฐ๋ ์ ์ ์๋ฆผ์ ๋ฐ์ ์งํ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง๋ง, ๊ฐํน Steam ์ค๋ฅ๋ก ์ธํด ๊ทธ ์์ ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์ ๊ฑฐ๋ ์๋ฆผ์ด๋ ๋ด ์ฌ์์์ด ๋ฐ์ํ ๋๊น์ง ํด๋น ๊ฑฐ๋ ์ ์์ด ์ฒ๋ฆฌ๋์ง ์๊ณ ๋ฐฉ์น๋๋ฉฐ, ์ด๋ก ์ธํด ๊ฑฐ๋๊ฐ ์ทจ์๋๊ฑฐ๋ ์ดํ ์์ ์ ์์ดํ
์ ์ฌ์ฉํ ์ ์๊ฒ ๋ ์ ์์ต๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ฅผ 0์ด ์๋ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด, ASF๋ TradeCheckPeriod๋ถ๋ง๋ค ์ด๋ฌํ ๋ฏธ์ฒ๋ฆฌ ๊ฑฐ๋๋ฅผ ์ถ๊ฐ๋ก ํ์ธํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ Steam ์๋ฒ์ ๋ํ ์ถ๊ฐ ์์ฒญ๊ณผ ๋ค์ด์ค๋ ๊ฑฐ๋๋ฅผ ๋์น ๊ฐ๋ฅ์ฑ ์ฌ์ด์ ๊ท ํ์ ๊ณ ๋ คํ์ฌ ์ ํ๋์์ต๋๋ค. ๋ค๋ง, ASF๋ฅผ ๋จ์ํ ์นด๋ ํ๋ฐ ์ฉ๋๋ก๋ง ์ฌ์ฉํ๊ณ ๋ค์ด์ค๋ ๊ฑฐ๋๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ ๊ณํ์ด ์๋ค๋ฉด, ์ด ๊ธฐ๋ฅ์ ์์ ํ ๋นํ์ฑํํ๊ธฐ ์ํด 0์ผ๋ก ์ค์ ํด๋ ๋ฉ๋๋ค. ๋ฐ๋๋ก, ๋ด์ด ๊ณต๊ฐ ASF์ STM listing์ ์ฐธ์ฌํ๊ฑฐ๋ ๊ฑฐ๋ ๋ด์ผ๋ก์ ๋ค๋ฅธ ์๋ํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ๊ฑฐ๋๋ฅผ ์ ์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ด ๋งค๊ฐ๋ณ์๋ฅผ 15๋ถ ์ ๋๋ก ๋ฎ์ถ๋ ๊ฒ์ด ์ข์ ์ ์์ต๋๋ค.
byte flags ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ๊ฐ์ ๊ฑฐ๋์์ ASF ๋ด์ ํ๋์ ์๋์ ๊ฐ์ด ์ ์ํฉ๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์์(None) | ํน๋ณํ ๊ฑฐ๋ ์ค์ ์์, ๊ธฐ๋ณธ๊ฐ |
| 1 | ๊ธฐ๋ถ ์๋ฝ(AcceptDonations) | ์๋ ๊ฒ์ด ์๋ค๋ฉด ๊ฑฐ๋๋ฅผ ์๋ฝํฉ๋๋ค. |
| 2 | SteamTradeMatcher | STM ๊ณผ ๊ฐ์ ๊ฑฐ๋์ ์๋์ ์ผ๋ก ์ฐธ์ฌํฉ๋๋ค. ์์ธํ ์ฌํญ์ ๊ฑฐ๋ ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค. |
| 4 | ์ ๋ถ ๋งค์นญ(MatchEverything) |
SteamTradeMatcher ๊ฐ ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ข์, ์ค๋ฆฝ, ๋์จ ๊ฑฐ๋๋ฅผ ์๋ฝํฉ๋๋ค. |
| 8 | ๋ด๊ฑฐ๋์๋ฝ์ํจ(DontAcceptBotTrades) | ๋ค๋ฅธ ๋ด์ loot ๊ฑฐ๋๋ฅผ ์๋์ผ๋ก ์๋ฝํ์ง ์์ต๋๋ค. |
| 16 | ๋ฅ๋์ ๋งค์นญ(MatchActively) | STM ๊ณผ ๊ฐ์ ๊ฑฐ๋์ ๋ฅ๋์ ์ผ๋ก ์ฐธ์ฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ **ItemsMatcherPlugin**์ ์ฐธ๊ณ ํ์ธ์. |
์ด ์์ฑ๊ฐ์ flags ํญ๋ชฉ์ด๋ฏ๋ก, ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ฐ์ ์กฐํฉํ ์ ์์ต๋๋ค. ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด **json mapping**์ ์ฐธ๊ณ ํ์ธ์. ํ๋๊ทธ๋ฅผ ํ์ฑํ ํ์ง ์์ผ๋ฉด ์์(None)๊ณผ ๊ฐ์ต๋๋ค.
ASF์ ๊ฑฐ๋ ๋ ผ๋ฆฌ, ๊ฐ๋ฅํ ๋ชจ๋ ํ๋๊ทธ์ ์ค๋ช ๋ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฑฐ๋ ํญ๋ชฉ์์ ํ์ธํ ์ ์์ต๋๋ค.
ImmutableHashSet<byte> ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 1, 3, 5 Steam ์์ดํ
ํ์
์
๋๋ค. ์ด ์์ฑ์ transfer ๋ช
๋ น์ด ์คํ ์ ๋ด ๊ฐ ์ ์ก ๋์์ผ๋ก ๊ณ ๋ คํ Steam ์์ดํ
ํ์
์ ์ ์ํฉ๋๋ค. ASF๋ TransferableTypes์ ์๋ ์์ดํ
๋ง ๊ฑฐ๋ ์ ์์ ํฌํจํ ๊ฒ์ด๋ฏ๋ก, ์ด ์์ฑ๊ฐ์ ๋น์ ์ ๋ด ์ค ํ๋์๊ฒ ๋ณด๋ด์ง ๊ฑฐ๋ ์ ์์์ ๋ฌด์์ ๋ฐ์์ง ๊ฒฐ์ ํ ์ ์๊ฒ ํด์ค๋๋ค.
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
| 0 | ์ ์ ์์(Unknown) | ์๋์ ์ด๋๊ฒ์๋ ํด๋นํ์ง ์๋ ๋ชจ๋ ํ์ |
| 1 | ๋ถ์คํฐ ํฉ(BoosterPack) | ํ ๊ฒ์์ ๋ฌด์์ ์นด๋ 3์ฅ์ด ๋ค์ด์๋ ๋ถ์คํฐ ํฉ |
| 2 | ์ด๋ชจํฐ์ฝ(Emoticon) | Steam ๋ํ์์ ์ฌ์ฉํ๋ ์ด๋ชจํฐ์ฝ |
| 3 | ์๋ฐ ํธ๋ ์ด๋ฉ ์นด๋(FoilTradingCard) |
ํธ๋ ์ด๋ฉ ์นด๋(TradingCard)์ ์๋ฐ ๋ฒ์ |
| 4 | ํ๋กํ ๋ฐฐ๊ฒฝ(ProfileBackground) | Steam ํ๋กํ์์ ์ฌ์ฉํ๋ ํ๋กํ ๋ฐฐ๊ฒฝ |
| 5 | ํธ๋ ์ด๋ฉ ์นด๋(TradingCard) | Steam ํธ๋ ์ด๋ฉ ์นด๋. ๋ฐฐ์ง ์ ์์ ์ฌ์ฉ. ์๋ฐ ์๋ |
| 6 | Steam ๋ณด์(SteamGems) | ๋ถ์คํฐ ํฉ ์ ์์ ์ฌ์ฉ๋๋ Steam ๋ณด์. ๋ณด์ ๋๋ฏธ ํฌํจ |
| 7 | ํ๋งค ์์ดํ (SaleItem) | Steam ํ ์ธ๊ธฐ๊ฐ๋์ ํ๋ํ๋ ํน๋ณํ ์์ดํ |
| 8 | ์๋ชจํ(Consumable) | ์ฌ์ฉํ๋ฉด ์ฌ๋ผ์ง๋ ํน๋ณํ ์๋ชจ ์์ดํ |
| 9 | ํ๋กํ ์์ (ProfileModifier) | Steam ํ๋กํ ๋ชจ์์ ์์ ํ ์ ์๋ ํน๋ณํ ์์ดํ |
| 10 | ์คํฐ์ปค(Sticker) | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 11 | ์ฑํ ๋ฐฉ ํจ๊ณผ(ChatEffect) | Steam ์ฑํ ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ดํ |
| 12 | ๋ฏธ๋ ํ๋กํ ๋ฐฐ๊ฒฝ(MiniProfileBackground) | Steam ํ๋กํ์ฉ ํน์ ๋ฐฐ๊ฒฝ |
| 13 | ์๋ฐํ ์ก์(AvatarProfileFrame) | Steam ํ๋กํ์ฉ ํน์ ์๋ฐํ ์ก์ |
| 14 | ์์ง์ด๋ ์๋ฐํ(AnimatedAvatar) | Steam ํ๋กํ์ฉ ํน์ ์์ง์ด๋ ์๋ฐํ |
| 15 | ํค๋ณด๋ ์คํจ(KeyboardSkin) | Steam Deck์ฉ ํน์ ํค๋ณด๋ ์คํจ |
| 16 | ๋ถํ ์์(StartupVideo) | Steam Deck์ฉ ํน์ ๋ถํ ์์ |
์ ์ค์ ๊ณผ ๊ด๊ณ์์ด ASF๋ Steam ์ปค๋ฎค๋ํฐ ์์ดํ
(appID 753, contextID 6)๋ง ์์ฒญํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ๋ฐ๋ผ์ ๊ฒ์ ์์ดํ
, ์ ๋ฌผ ๋ฑ์ ๊ฑฐ๋ ์ ์ ๋์์์ ์๋๋ถํฐ ์ ์ธ๋ฉ๋๋ค.
ASF์ ๊ธฐ๋ณธ ์ค์ ์ ๋ด์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ํ๋ฉฐ, ๋ถ์คํฐ ํฉ๊ณผ (foil ํฌํจ) ํธ๋ ์ด๋ฉ ์นด๋๋ง์ ์ ์ก ๋์์ผ๋ก ํฉ๋๋ค. ์ฌ๊ธฐ ์ ์๋ ์์ฑ๊ฐ์ ๋น์ ์ ๋ง์กฑ์ํฌ์ ์๋๋ก ์ด๋ป๊ฒ๋ ํ๋์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํฉ๋๋ค. ์์ ์ ์๋์ง ์์ ๋ชจ๋ ํ์
์ ์ ์ ์์(Unknown) ํ์
์ผ๋ก ํ์๋จ์ ๋ช
์ฌํ์ญ์์ค. Valve๊ฐ ์๋ก์ด Steam ์์ดํ
์ ๋ด๋์์๋ ํนํ ์ค์ํ๋ฐ, ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ฌ๊ธฐ์ ์ถ๊ฐ๋๊ธฐ ์ ๊น์ง๋ ASF์์ ์ ์ ์์(Unknown) ์ผ๋ก ํ์๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋น์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง๋ฅผ ์๊ณ ์๊ณ , ๋ง์ฝ Steam ๋คํธ์ํฌ๊ฐ ๊นจ์ ธ์ ๋ชจ๋ ์์ดํ
์ ์ ์ ์์(Unknown)์ผ๋ก ํ์ํ๋ค๋ฉด ASF๋ ์ ์ฒด ๋ณด๊ดํจ์ ๊ฑฐ๋ ์ ์์ผ๋ก ๋ณด๋ผ๊ฒ์ด๋ผ๋ ์ ๋ ์ดํดํ๊ณ ์์ง์๋ ํ, ์ผ๋ฐ์ ์ผ๋ก ์ ์ ์์(Unknown) ํ์
์ TransferableTypes์ ํฌํจ์ํค๋ ๊ฒ์ ๊ถ์ฅํ์ง ์๋ ์ด์ ์
๋๋ค. ๋ชจ๋ ๊ฒ์ ์ ์กํ๊ณ ์ถ๋๋ผ๋ ์ ์ ์์(Unknown) ํ์
์ TransferableTypes์ ํฌํจํ์ง ์๋ ๊ฒ์ ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํฉ๋๋ค.
bool ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ true์
๋๋ค. ์ด ์์ฑ์ ํด๋น Steam ๊ณ์ ์ ๋ํด ASF๊ฐ ๋ก๊ทธ์ธ ํค(login key) ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ํฉ๋๋ค. ๋ก๊ทธ์ธ ํค ๋ฉ์ปค๋์ฆ์ ๊ณต์ Steam ํด๋ผ์ด์ธํธ์ "๋ก๊ทธ์ธ ์ ๋ณด ์ ์ฅ" ์ต์
๊ณผ ๋งค์ฐ ์ ์ฌํ๊ฒ ์๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด ASF๋ ๋ค์ ๋ก๊ทธ์ธ ์๋๋ฅผ ์ํด ์ผํ์ฉ ์์ ๋ก๊ทธ์ธ ํค๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํด๋น ๋ก๊ทธ์ธ ํค๊ฐ ์ ํจํ ๋์์๋ ๋น๋ฐ๋ฒํธ, Steam Guard, ๋๋ 2FA ์ฝ๋๋ฅผ ์
๋ ฅํ ํ์๊ฐ ์ฌ์ค์ ์์ด์ง๋๋ค. ๋ก๊ทธ์ธ ํค๋ BotName.db ํ์ผ์ ์ ์ฅ๋๋ฉฐ ์๋์ผ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค. ์ด ๋๋ฌธ์ ASF๋ก ํ ๋ฒ๋ง ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ๊ทธ ์ดํ์๋ ๋น๋ฐ๋ฒํธ/SteamGuard/2FA ์ฝ๋๋ฅผ ๋ค์ ์
๋ ฅํ ํ์๊ฐ ์์ต๋๋ค.
ํธ์๋ฅผ ์ํด ๋ก๊ทธ์ธ ํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋ก๊ทธ์ธํ ๋๋ง๋ค SteamPassword, SteamGuard, ๋๋ (**ASF 2FA**๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ) 2FA ์ฝ๋๋ฅผ ์
๋ ฅํ ํ์๊ฐ ์์ต๋๋ค. ๋ก๊ทธ์ธ ํค๋ ๋จ ํ ๋ฒ๋ง ์ฌ์ฉํ ์ ์๊ณ ์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๋
ธ์ถํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์ฐ์ํ ๋์์ด๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ์๋ Steam ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ์ ํํ ๋์ผํฉ๋๋ค. Steam ํด๋ผ์ด์ธํธ๋ ๋ค์ ๋ก๊ทธ์ธ ์๋๋ฅผ ์ํด ๊ณ์ ์ด๋ฆ๊ณผ ๋ก๊ทธ์ธ ํค๋ฅผ ์ ์ฅํ๋ฉฐ, ์ด๋ ASF์์ UseLoginKeys์ ํจ๊ป SteamLogin์ ์ฌ์ฉํ๊ณ SteamPassword๋ฅผ ๋น์๋๋ ๊ฒ๊ณผ ์ฌ์ค์ ๋์ผํฉ๋๋ค.
๋ค๋ง, ์ด๋ฐ ์ฌ์ํ ๋ถ๋ถ๊น์ง ์ฐ๋ คํ๋ ์ฌ์ฉ์๋ ์์ ์ ์์ด, ์ด์ ์ธ์
์ข
๋ฃ ํ ์ฌ๊ฐ๋ฅผ ํ์ฉํ๋ ์ด๋ ํ ์ข
๋ฅ์ ํ ํฐ๋ ASF๊ฐ ์ ์ฅํ์ง ์๋๋ก ๋ณด์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ฅผ ์ํด ์ด ์ต์
์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ก๊ทธ์ธ์ ์๋ํ ๋๋ง๋ค ์ ์ฒด ์ธ์ฆ ์ ์ฐจ๊ฐ ํ์๊ฐ ๋ฉ๋๋ค. ์ด ์ต์
์ ๋นํ์ฑํํ๋ฉด ๊ณต์ Steam ํด๋ผ์ด์ธํธ์์ "๋ก๊ทธ์ธ ์ ๋ณด ์ ์ฅ"์ ์ฒดํฌํ์ง ์์ ๊ฒ๊ณผ ์ ํํ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค. ์ ํํ ๋ฌด์์ ํ๋์ง ์๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ true๋ฅผ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
byte ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค. ์ด ์์ฑ์ ๋ด์ด Steam ๋คํธ์ํฌ์ ๋ก๊ทธ์ธํ ํ ์๋ฆด ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ชจ๋๋ฅผ ์ง์ ํฉ๋๋ค. OnlineStatus๋ฅผ ํตํด ์ ์ ์ํ๊ฐ ํ์๋๋๋ก ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ, ์ด ์ค์ ์ ์๋ฅผ ๋ค์ด Steam ์ฑํ
์์ ๊ณ์ ์ด ์ด๋ป๊ฒ ํ์๋๋์ง์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ํ์ฌ ์๋ ๋ชจ๋ ์ค ํ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค:
| ๊ฐ | ์ด๋ฆ | ์ค๋ช |
|---|---|---|
0 |
VGUI | ๊ธฐ๋ณธ Steam ํด๋ผ์ด์ธํธ ๋ชจ๋ |
1 |
Tenfoot | Big Picture ๋ชจ๋ |
2 |
Mobile | Steam ๋ชจ๋ฐ์ผ ์ฑ |
3 |
Web | ์น ๋ธ๋ผ์ฐ์ ์ธ์ |
5 |
MobileChat | Steam ๋ชจ๋ฐ์ผ ์ฑํ ์ฑ |
์ด ์์ฑ์ด ๊ธฐ๋ฐ์ผ๋ก ํ๋ EUIMode ํ์
์๋ ๋ ๋ง์ ๊ฐ์ด ์กด์ฌํ์ง๋ง, ์ ํฌ๊ฐ ์๋ ํ ํ์ฌ๋ก์๋ ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์๋ ๊ฐ๋ค์ด๋ผ ๊ฐ๋
์ฑ์ ์ํด ์ ์ธํ์ต๋๋ค. ๋ํ, ์ถ๊ฐ ๊ธฐ๋ฅ๋ค์ด ํ์ฑํ๋์ด ์๋ GamingDeviceType๋ ํจ๊ป ํ์ธํด๋ณด์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ด ์์ฑ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๊ธฐ๋ณธ๊ฐ์ธ 0์ผ๋ก ๋์ญ์์ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ์ ๋ด๋ณ ๋ด๋ถ http ๊ด๋ จ ํต์ , ํนํ api.steampowered.com, steamcommunity.com, store.steampowered.com๊ณผ ๊ฐ์ ์๋น์ค์ ์ฌ์ฉ๋ ์น ํ๋ก์ ์ฃผ์๋ฅผ ์ ์ํฉ๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด, ASF๋ ์์์ ์ง์ ํ ์ ์ญ WebProxy ์ค์ ์ ๋์ ์ฌ์ฉํฉ๋๋ค. ASF ์์ฒญ์ ํ๋ก์๋ก ์ฐํ์ํค๋ ๊ฒ์ ๋ค์ํ ์ข
๋ฅ์ ๋ฐฉํ๋ฒฝ, ํนํ ์ค๊ตญ์ ๋ง๋ฆฌ๋ฐฉํ๋ฒฝ์ ์ฐํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ์๋์ ๊ฐ์ uri ๋ฌธ์์ด๋ก ์ ์๋ฉ๋๋ค.
URI ๋ฌธ์์ด์ ์คํด(ํ๋กํ ์ฝ)(์ง์ ํ์: http/https/socks4/socks4a/socks5), ํธ์คํธ, ๊ทธ๋ฆฌ๊ณ ์ ํ ์ฌํญ์ธ ํฌํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ค์์ ์์ ํ uri ๋ฌธ์์ด์ ์์์ ๋๋ค.
"http://contoso.com:8080".
ํ๋ก์๊ฐ ์ธ์ฆ์ ํ์๋ก ํ๋ฉด, WebProxyUsername๊ณผ WebProxyPassword๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ด ํ์๊ฐ ์๋ค๋ฉด ์ด ์์ฑ๊ฐ์ ์ค์ ํ๋ ๊ฒ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
๋ด๋ถ Steam ๋คํธ์ํฌ ํต์ (CM)๋ ํ๋ก์๋ก ์ฐํ์ํค๊ณ ์ ํ๋ค๋ฉด, ๋ด์ SteamProtocols ์์ฑ์ ์ค์ง websocket ์ ์ก๋ง ํ์ฉํ๋ ๊ฐ, ์ฆ 4๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ํ๋ก์๋ก๋ websocket๋ง ์ง์๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋์ WebProxy ๊ธฐ๊ธฐ์์ ์ง์ํ๋ ๊ธฐ๋ณธ, digest, NTLM, Kerberos ์ธ์ฆ์ ์ฌ์ฉ๋๋ ์ํธ ํ๋๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ก์๊ฐ ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช
์ ํ์๋ก ํ์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ์ ์๋ฌด๊ฒ๋ ๋ฃ์ ํ์๊ฐ ์์ต๋๋ค. WebProxy๊ฐ ์ฌ์ฉ๋ ๋ ์ด ์ต์
์ ์ฌ์ฉ๋ ์๋ฏธ๊ฐ ์๊ณ , ๊ทธ์ธ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
string ํ์
์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ null์
๋๋ค. ์ด ์์ฑ๊ฐ์ ํ๋ก์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋์ WebProxy ๊ธฐ๊ธฐ์์ ์ง์ํ๋ ๊ธฐ๋ณธ, digest, NTLM, Kerberos ์ธ์ฆ์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์์ด๋ฆ ํ๋๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ก์๊ฐ ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช
์ ํ์๋ก ํ์ง ์๋๋ค๋ฉด ์ฌ๊ธฐ์ ์๋ฌด๊ฒ๋ ๋ฃ์ ํ์๊ฐ ์์ต๋๋ค. WebProxy๊ฐ ์ฌ์ฉ๋ ๋ ์ด ์ต์
์ ์ฌ์ฉ๋ ์๋ฏธ๊ฐ ์๊ณ , ๊ทธ์ธ์๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ด ์์ฑ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ์์ง ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค.
ASF๋ ๊ฝค ๊ฐ๋จํ ํ์ผ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
โโโ ๐ config
โ โโโ ASF.json
โ โโโ ASF.db
โ โโโ Bot1.json
โ โโโ Bot1.db
โ โโโ Bot2.json
โ โโโ Bot2.db
โ โโโ ...
โโโ ArchiSteamFarm.dll
โโโ log.txt
โโโ ...
ASF๋ฅผ ๋ค๋ฅธ PC ๋ฑ ์๋ก์ด ์์น๋ก ์ฎ๊ธฐ๋ ค๋ฉด config ๋๋ ํ ๋ฆฌ ํ๋๋ง์ ์ด๋/๋ณต์ฌํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด "ASF ๋ฐฑ์
"์ผ๋ก ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ชป๋ ๋ฐฑ์
๋ฑ์ผ๋ก ASF ๋ด๋ถํ์ผ์ ์ค์ผ์ํฌ ์ํ์ ๊ฐ์ํ์ง ์๊ณ ํ๋ก๊ทธ๋จ ๋ฑ ๋ค๋ฅธ ๋ถ๋ถ์ GitHub์์ ํญ์ ๋ค์ด๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
log.txt ํ์ผ์ ๋ง์ง๋ง ASF ์คํ์ผ๋ก ์์ฑ๋ ๋ก๊ทธ๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์ด ํ์ผ์ ์ด๋ ํ ๋ฏผ๊ฐํ ์ ๋ณด๋ ํฌํจํ๊ณ ์์ง ์์ผ๋ฉฐ, ์ด์๋ ์ถฉ๋, ํน์ ์ง๋๋ฒ ASF ์คํ์์ ๋ฌด์จ์ผ์ด ์์๋์ง ์ ๋ณด๋ก์จ๋ ๊ต์ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ด์๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ์ฐ๋ฆฌ๋ ์ด ํ์ผ์ ์์ฃผ ์์ฒญํ๊ฒ ๋ ๊ฒ์
๋๋ค. ASF๋ ์ด ํ์ผ์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ง๋ง, ๊ณ ๊ธ ์ฌ์ฉ์๋ผ๋ฉด ASF ๋ก๊น
๋ชจ๋์ ์ถ๊ฐ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
config ๋๋ ํ ๋ฆฌ๋ ASF์ ๋ชจ๋ ๋ด์ ํ๊ฒฝ์ค์ ์ ๋ด๊ณ ์๋ ๊ณณ์
๋๋ค.
ASF.json์ ASF์ ์ผ๋ฐ ํ๊ฒฝ์ค์ ํ์ผ์
๋๋ค. ์ด ํ๊ฒฝ์ค์ ์ ๋ชจ๋ ๋ด๊ณผ ํ๋ก๊ทธ๋จ ์์ฒด์ ์ํฅ์ ์ฃผ๋ ASF ํ๋ก์ธ์ค ํ๋์ ํน์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ASF ํ๋ก์ธ์ค ์์ ์, ์๋์
๋ฐ์ดํธ, ๋๋ฒ๊น
๋ฑ ์ผ๋ฐ ์์ฑ๊ฐ์ด ์์ต๋๋ค.
๋ด์ด๋ฆ.json์ ๋ด ์ธ์คํด์ค์ ํ๊ฒฝ์ค์ ์
๋๋ค. ์ด ํ๊ฒฝ์ค์ ์ ๋ด ์ธ์คํด์ค๊ฐ ์ด๋ป๊ฒ ํ๋ํ ์ง๋ฅผ ํน์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ ์ ๊ทธ ๋ด์๋ง ํน์ ๋๊ณ ๋ค๋ฅธ ๋ด์ ๊ณต์ ๋์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํด์ ์ฌ๋ฌ ๋ด์ ๋ค์ํ๊ณ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์์ผ๋ฉฐ ์ ํํ๊ฒ ๋์ผํ๊ฒ ๋์ํ๋๋ก ํ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๋ด์ ์ ์ผํ ์๋ณ์๋ฅผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ ๋ด์ด๋ฆ์ ๋ค์ด๊ฐ๋๋ค.
ํ๊ฒฝ์ค์ ํ์ผ๊ณผ ๋ณ๋๋ก ASF๋ config ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ๋๋ฐ๋ ์ฌ์ฉํฉ๋๋ค.
ASF.db๋ ์ผ๋ฐ ASF ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์
๋๋ค. ์ผ๋ฐ ์๊ตฌ ์ ์ฅ์ ์ญํ ์ ํ๋ฉฐ Steam ์๋ฒ์ IP ๋ฑ ASF ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํ์ผ์ ์์ ํด์๋ ์๋ฉ๋๋ค.
๋ด์ด๋ฆ.db๋ ๋ด ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค. ์ด ํ์ผ์ ๋ด ์ธ์คํด์ค์ ๊ด๋ จ๋ ๋ก๊ทธ์ธ ํค๋ ASF 2๋จ๊ณ ์ธ์ฆ๊ณผ ๊ฐ์ ์๊ตฌ ์ ์ฅ์์ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํ์ผ์ ์์ ํด์๋ ์๋ฉ๋๋ค.
BotName.keys๋ **๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒ์ ๋ฑ๋ก๊ธฐ(background games redeemer)**์ ํค๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํน์ ํ์ผ์
๋๋ค. ์ด ํ์ผ์ ํ์์ฌํญ๋ ์๋๊ณ ์์ฑ๋์ง๋ ์์ง๋ง ASF๊ฐ ์ธ์์ ํฉ๋๋ค. ์ด ํ์ผ์ ํค๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์จ ๋ค์ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
BotName.maFile์ **ASF 2FA**๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํน์ ํ์ผ์
๋๋ค. ์ด ํ์ผ์ ํ์์ฌํญ๋ ์๋๊ณ ์์ฑ๋์ง๋ ์์ง๋ง ๋ด์ด๋ฆ์ด ASF 2๋จ๊ณ ์ธ์ฆ์ ์ฌ์ฉํ์ง ์๋๊ฒฝ์ฐ ASF๊ฐ ์ธ์ํฉ๋๋ค. ์ด ํ์ผ์ ASF 2๋จ๊ณ ์ธ์ฆ์ ์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์จ ๋ค์ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
๋ชจ๋ ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ ํ์ ์ด ์์ต๋๋ค. ์์ฑ๊ฐ์ ํ์ ์ ์ ํจํ ๊ฐ์ ์ ์ํฉ๋๋ค. ์ฃผ์ด์ง ํ์ ์ ์ ํจํ ๊ฐ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ํจํ์ง ์์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ASF๋ ํ๊ฒฝ์ค์ ์ ์ํํ ์ ์์ต๋๋ค.
ํ๊ฒฝ์ค์ ์ ์์ฑํ๊ธฐ ์ํด ConfigGenerator๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํฉ๋๋ค. ํ์ ์ ํจ์ฑ ๊ฒ์ฆ ๋ฑ์ ๋ก์ฐ ๋ ๋ฒจ ๋๋ถ๋ถ์ ๋ค๋ฃจ๋ฏ๋ก ์ ์ ํ ๊ฐ์ ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋๊ณ , ์๋์ ๋ช ์๋ ๋ณ์ ํ์ ์ ์ดํดํ ํ์๊ฐ ์์ต๋๋ค. ์ด ํญ๋ชฉ์ ์ฃผ๋ก ์๋์ผ๋ก ํ๊ฒฝ์ค์ ์ ์์ฑํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์ฌ๋์ ์ํ ๊ฒ์ผ๋ก, ์ด ์ฌ๋๋ค์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ด ์ด๋ค ๊ฒ์ธ์ง ์๋๋ค.
ASF๊ฐ ์ฌ์ฉํ๋ ํ์ ์ ๋ค์ดํฐ๋ธ C# ํ์ ์ผ๋ก, ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
bool - true์ false ๊ฐ๋ง ๋ฐ๋ ๋ถ๋ฆฐํ์
์
๋๋ค.
์: "Enabled": true
byte - 0๋ถํฐ 255 ๊น์ง์ ์ ์๋ง ๋ฐ๋ Unsigned ๋ฐ์ดํธ ํ์
์
๋๋ค.
์: "ConnectionTimeout": 90
ushort - 0๋ถํฐ 65535 ๊น์ง์ ์ ์๋ง ๋ฐ๋ Unsigned short ํ์
์
๋๋ค.
์: "WebLimiterDelay": 300
uint - 0๋ถํฐ 4294967295 ๊น์ง์ ์ ์๋ง ๋ฐ๋ Unsigned ์ ์ ํ์
์
๋๋ค.
ulong - 0๋ถํฐ 18446744073709551615 ๊น์ง์ ์ ์๋ง ๋ฐ๋ Unsigned long ์ ์ ํ์
์
๋๋ค.
์: "SteamMasterClanID": 103582791440160998
string - ""์ ๋น ๋ฌธ์์ด๊ณผ null ๊ฐ์ ํฌํจํ๋ ์ด๋ ํ ์ผ๋ จ์ ๋ฌธ์๋ฅผ ๋ฐ๋ ๋ฌธ์์ด ํ์
์
๋๋ค. ๋น ์ํ์ค์ null ๊ฐ์ ASF์์ ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋๋ฏ๋ก, ๋ ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ ์ง๋ ๊ฐ์ธ ์ทจํฅ์ ๋ฌ๋ ค ์์ต๋๋ค (์ ํฌ๋ null์ ์ฌ์ฉํฉ๋๋ค).
์: "SteamLogin": null, "SteamLogin": "", "SteamLogin": "MyAccountName"
Guid? - null์ ํ์ฉํ๋(nullable) UUID ํ์
์ด๋ฉฐ, JSON์์๋ ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. UUID๋ 0๋ถํฐ 9๊น์ง, ๊ทธ๋ฆฌ๊ณ a๋ถํฐ f๊น์ง์ 32๊ฐ 16์ง์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ASF๋ ์๋ฌธ์, ๋๋ฌธ์, ๋์(-) ํฌํจ ์ฌ๋ถ ๋ฑ ๋ค์ํ ์ ํจ ํ์์ ํ์ฉํฉ๋๋ค. ์ ํจํ UUID ์ธ์๋, ์ด ์์ฑ์ nullable์ด๋ฏ๋ก ์ ๊ณตํ UUID๊ฐ ์์์ ๋ํ๋ด๋ ํน์ ๊ฐ์ธ null๋ ํ์ฉ๋ฉ๋๋ค.
์์: "LicenseID": null, "LicenseID": "f6a0529813f74d119982eb4fe43a9a24"
ImmutableList<valueType> - ์ง์ ๋ valueType์ ๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ง ๋ถ๋ณ(immutable) ์ปฌ๋ ์
(๋ฆฌ์คํธ)์
๋๋ค. JSON์์๋ ์ฃผ์ด์ง valueType์ ์์๋ก ํ๋ ๋ฐฐ์ด์ ํํ๋ก ์ ์๋ฉ๋๋ค. ASF๋ ํด๋น ์์ฑ์ด ์ฌ๋ฌ ๊ฐ์ ์ง์ํ๋ฉฐ ์์๊ฐ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์์ ๋ํ๋ด๊ธฐ ์ํด List๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ImmutableList<byte>์ ์์: "FarmingOrders": [15, 11, 7]
ImmutableHashSet<valueType> - ์ง์ ๋ valueType์ ๊ณ ์ ํ(์ค๋ณต๋์ง ์๋) ๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ง ๋ถ๋ณ(immutable) ์ปฌ๋ ์
(์งํฉ)์
๋๋ค. JSON์์๋ ์ฃผ์ด์ง valueType์ ์์๋ก ํ๋ ๋ฐฐ์ด์ ํํ๋ก ์ ์๋ฉ๋๋ค. ASF๋ ํด๋น ์์ฑ์ด ๊ณ ์ ํ(์ค๋ณต๋์ง ์๋) ๊ฐ์๋ง ์๋ฏธ๊ฐ ์์ผ๋ฉฐ ์์๊ฐ ์ค์ํ์ง ์๋ค๋ ๊ฒ์ ๋ํ๋ด๊ธฐ ์ํด HashSet์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ (ํน์๋ผ๋ ์ค๋ณต๋ ๊ฐ์ ์
๋ ฅํ๋ค๋ฉด) ํ์ฑ ๊ณผ์ ์์ ์ด๋ฅผ ์๋์ ์ผ๋ก ๋ฌด์ํฉ๋๋ค.
ImmutableHashSet<uint>์ ์: "Blacklist": [267420, 303700, 335590]
ImmutableDictionary<keyType, valueType> - keyType์ผ๋ก ์ง์ ๋ ๊ณ ์ ํค์ valueType์ผ๋ก ์ง์ ๋ ๊ฐ์ ๋งคํํ๋ ๋ถ๋ณ ๋์
๋๋ฆฌ(๋งต)์
๋๋ค. JSON์์๋ ํค-๊ฐ ์์ผ๋ก ๋ ์ค๋ธ์ ํธ๋ก ์ ์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ keyType๋ ์ฌ์ง์ด ulong๊ฐ์ ํ์
์ด๋๋ผ๋ ํญ์ ๋ฐ์ดํ๋ก ํ์ํจ์ ๋ช
์ฌํ์ญ์์ค. ๋งต ์ ์ฒด์์ ํค๊ฐ ๊ณ ์ ํด์ผ ํ๋ค๋ ์๊ฒฉํ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ฉฐ, ์ด๋ฒ์๋ JSON์ ์ํด์๋ ๊ฐ์ ๋ฉ๋๋ค.
ImmutableDictionary<ulong, byte>์ ์: "SteamUserPermissions": { "76561198174813138": 3, "76561198174813137": 1 }
flags - ํ๋๊ทธ๋ ์ฌ๋ฌ ๋ค๋ฅธ ์์ฑ๊ฐ์ ๋นํธ ์ฐ์ฐ์ ํตํด ํ๋์ ์ต์ข
๊ฐ์ผ๋ก ์กฐํฉํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ๋์์ ํ์ฉ๋ ์ฌ๋ฌ ๋ค๋ฅธ ๊ฐ์ ๊ฐ๋ฅํ ์ด๋ ์กฐํฉ์ด๋ผ๋ ์ ํํ ์ ์์ต๋๋ค. ์ต์ข
๊ฐ์ ๋ชจ๋ ํ์ฑํ๋ ์ต์
๊ฐ์ ํฉ๊ณ๋ก ๋ง๋ค์ด์ง๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค:
| ๊ฐ | ์ด๋ฆ |
|---|---|
| 0 | ์์(None) |
| 1 | A |
| 2 | B |
| 4 | C |
์ผ๊ณ ๋ ์ ์๋ ์ ํจํ ํ๋๊ทธ๋ ์ ํํ 3๊ฐ(A, B, C)์ด๋ฉฐ, ๋ฐ๋ผ์ ์ ์ฒด์ ์ผ๋ก 8๊ฐ์ง์ ์ ํจํ ์กฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค:
| ์ต์ข ๊ฐ | ํ์ฑํ๋ ํ๋๊ทธ |
|---|---|
| 0 | ์์(None) |
| 1 | A |
| 2 | B |
| 3 |
A + B
|
| 4 | C |
| 5 |
A + C
|
| 6 |
B + C
|
| 7 |
A + B + C
|
์ ๋ด์ฉ์ด ์ฑ๋ฆฝํ๋ ค๋ฉด, ์ ์์ ๊ฐ ๊ฐ๋ณ ํ๋๊ทธ๋ ๋ฐ๋์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ์ด๋ฐ ์ด์ ๋ก ์ ์์์์ ์ถ๊ฐ๋๋ ํ๋๊ทธ์ธ D๋ 8 ์ด์์ ๊ฐ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๋ณดํต ๊ทธ๋ํฝ ๋๊ตฌ๊ฐ ์ด ๊ณ์ฐ์ ๋์ ํด์ค๋๋ค. config๋ฅผ ์๋์ผ๋ก ํธ์งํ๋ ๊ฒฝ์ฐ, ์ ์์์ฒ๋ผ ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํด ํ์ฑํํ๋ ค๋ ๋ชจ๋ ํ๋๊ทธ์ ๊ฐ์ ๋จ์ํ ๋ํ๋ฉด ๋ฉ๋๋ค.
์์: "SteamProtocols": 7 (์์์ ์ค๋ช
ํ ๋๋ก ๊ฐ์ด 1, 2, 4์ธ ํ๋๊ทธ๋ฅผ ํ์ฑํํฉ๋๋ค)
์น ๊ธฐ๋ฐ ConfigGenerator ์ฌ์ฉ ์ JavaScript๊ฐ ๋จ์ ulong ํ๋๋ฅผ JSON์ผ๋ก ์ ๋๋ก ์ง๋ ฌํํ์ง ๋ชปํ๋ ํ๊ณ๋ก ์ธํด, ulong ํ๋๋ ๊ฒฐ๊ณผ config์์ s_ ์ ๋์ฌ๊ฐ ๋ถ์ ๋ฌธ์์ด๋ก ํ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "SteamOwnerID": 76561198006963719๋ ์ ํฌ ConfigGenerator์ ์ํด "s_SteamOwnerID": "76561198006963719"๋ก ์์ฑ๋ฉ๋๋ค. ASF๋ ์ด ๋ฌธ์์ด ๋งคํ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ ์ ํ ๋
ผ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ํ๊ฒฝ์ค์ ์ s_ ํญ๋ชฉ์ ์ค์ ๋ก ์ ํจํ๊ณ ์ ํํ๊ฒ ์์ฑ๋ ๊ฒ์
๋๋ค. ๋ง์ฝ ํ๊ฒฝ์ค์ ์ ์ค์ค๋ก ์์ฑํ๋ค๋ฉด, ๊ฐ๋ฅํ๋ฉด ์๋์ ulong ํญ๋ชฉ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ถ์ฅํ์ง๋ง ๊ทธ๋ด์ ์๋ค๋ฉด ์ด๋ฆ์ s_ ์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ด ์๋ฐ ์คํฌ๋ฆฝํธ ํ๊ณ๊ฐ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ธฐ์กด config์์ ํธํ์ฑ์ ์ ์งํ๋ ๊ฒ์ ASF์ ์ต์ฐ์ ๊ณผ์ ์ ๋๋ค. ์ด๋ฏธ ์๊ณ ๊ณ์๊ฒ ์ง๋ง, config์ ์๋ ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ด ASF ์๋ฒ์ ์ ๋์ ๋๋ฉด, ๋น์ ์ ๋ชจ๋ ํ๊ฒฝ์ค์ ์ ์ ๋ฒ์ ๊ณผ ํธํ๋ฉ๋๋ค. ASF๋ ์๋ก์ด ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์๋ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ธ์ ๋ ํ์์ ๋ฐ๋ผ ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ ์ถ๊ฐํ๊ณ , ์ ๊ฑฐํ๊ณ , ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ ์๋ ํ๊ฒฝ์ค์ ์์ฑ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ์ํ๋ ๊ฒ์ผ๋ก๋ง ์ ํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ์๋์ผ๋ก ๋ค๋ฅธ ๋ชจ๋ ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์๋ฐ์ ์ ์๊ณ , ํ๊ฒฝ์ค์ ์ ๊นจ๋ํ๊ฒ ์ ์งํ๊ณ ๋น์ ์ด ์ค์ค๋ก ๋ช
์์ ์ผ๋ก ์ค์ ํ๊ณ ์ถ์ง ์์ ์์ฑ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ธธ ์ํ๋ ๊ฒฝ์ฐ์ ํธํ์ฑ์ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค(์: WebLimiterDelay).
์ด๋ก ์ธํด ASF๋ config๋ฅผ ๋ค์ ํฌ๋งทํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ํ๋๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
/์ต์ ํํฉ๋๋ค. ํน์ ํ ์ด์ ๊ฐ ์๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ์ฝ๊ธฐ ์ ์ฉ config ํ์ผ์ ์ฌ์ฉ ์ค์ด๋ผ ASF๊ฐ ์ด๋ฅผ ์์ ํ์ง ์๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ, --no-config-migrate **๋ช
๋ น์ค ์ธ์**๋ก ์ด ๋์์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
ASF๋ config๊ฐ "์ค์๊ฐ์ผ๋ก(on-the-fly)" ์์ ๋๋ ๊ฒ์ ๊ฐ์งํ ์ ์์ผ๋ฉฐ, ์ด ๋๋ถ์ ASF๋ ์๋์ผ๋ก ๋ค์์ ์ํํฉ๋๋ค:
- ์๋ก์ด ๋ด ํ๊ฒฝ์ค์ ์ ๋ง๋๋ ๊ฒฝ์ฐ ๊ทธ ๋ด ์ธ์คํด์ค์ ์์ฑ ๋ฐ ์์(ํ์ํ ๊ฒฝ์ฐ)
- ์์ ๋ด ํ๊ฒฝ์ค์ ์ ์ญ์ ํ๋ ๊ฒฝ์ฐ ๊ทธ ๋ด ์ธ์คํด์ค์ ์ค์ง(ํ์ํ ๊ฒฝ์ฐ) ๋ฐ ์ ๊ฑฐ
- ๋ด ํ๊ฒฝ์ค์ ์ ์์ ํ๋ ๊ฒฝ์ฐ ๊ทธ ๋ด ์ธ์คํด์ค์ ์ค์ง ๋ฐ ์์(ํ์ํ ๊ฒฝ์ฐ)
- ๋ด ํ๊ฒฝ์ค์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ์ ์ด๋ฆ์ผ๋ก ๋ด ์ฌ์์(ํ์ํ ๊ฒฝ์ฐ)
์์ ๋ชจ๋ ๊ฒ์ ํฌ๋ช ํ๊ณ ํ๋ก๊ทธ๋จ์ ์ฌ์์์ด๋ ๋ค๋ฅธ ์ํฅ์ด ์๋ ๋ด ์ธ์คํด์ค์ ์ค์ง ์์ด ์๋์ผ๋ก ์ํ๋ฉ๋๋ค.
๋ํ, ASF์ ํต์ฌ config์ธ ASF.json์ ์์ ํ๋ฉด (AutoRestart๊ฐ ํ์ฉํ๋ ๊ฒฝ์ฐ) ASF๊ฐ ์๋์ผ๋ก ์ฌ์์๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํ์ผ์ ์ญ์ ํ๊ฑฐ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋ฉ๋๋ค.
ํน์ ํ ์ด์ ๊ฐ ์๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด config ํด๋ ๋ด ํ์ผ ๋ณ๊ฒฝ์ ASF๊ฐ ๋ฐ์ํ์ง ์๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ, --no-config-watch **๋ช
๋ น์ค ์ธ์**๋ก ์ด ๋์์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
- ๐ก ํ
- ๐ฌ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
- โ๏ธ ์์ํ๊ธฐ (์ฌ๊ธฐ์๋ถํฐ)
- ๐ฅ ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒ์ ๋ฑ๋ก๊ธฐ
- ๐ข ๋ช ๋ น์ด
- ๐ ๏ธํธํ์ฑ
- ๐ง ํ๊ฒฝ์ค์
- ๐ด ItemsMatcherPlugin
- ๐ ๊ด๋ฆฌ
- โฑ๏ธ ์ฑ๋ฅ
- ๐ก ์๊ฒฉ ํต์
- ๐ช Steam ๊ฐ์กฑ ๊ณต์
- ๐ ๊ฑฐ๋
- โจ๏ธ ๋ช ๋ น์ค ์ธ์
- ๐ง ์ฌ์ฉ ์ค๋จ
- ๐ณ Docker
- ๐ค ์ถ๊ฐ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
- ๐ ๊ณ ์ฑ๋ฅ ์ค์
- ๐ IPC
- ๐ ํ์งํ
- ๐ ๋ก๊น
- ๐พ ์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ ํ๊ฒฝ ์ค์
- ๐ต๐ผโโ๏ธ MonitoringPlugin
- ๐ ํ๋ฌ๊ทธ์ธ
- ๐ ๋ณด์
- โฌ๏ธ SteamTokenDumperPlugin
- ๐ฆ ์๋ ํํฐ
- ๐ต 2๋จ๊ณ ์ธ์ฆ







