Basic tModLoader Modding Guide kokr - mikrono/tModLoaderWiki_kr_ko GitHub Wiki
์ด ๊ฐ์ด๋๊ฐ 1.4๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ์ด ์ํค ํ์ด์ง์ ์ด์ 1.3 ๋ฒ์ ์ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์ผ์ ์ฝ๋ฉ์ ์ฌ์ฉํ ํ๋ก๊ทธ๋จ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์คํธ ํธ์ง๊ธฐ ๋๋ IDE ๋ ๊ฐ์ง๋ฅผ ์ ํํ ์ ์์ต๋๋ค. binary logic๊ณผ design ๊ฐ๋ ์ ์์ ํ ์ฒ์ ์ ํ๋ ๊ฒฝ์ฐ, ํ ์คํธ ํธ์ง๊ธฐ๋ก ์์ํ์ฌ ๊ธฐ๋ณธ ์ฌํญ์ ์ตํ๊ณ IDE์ ์ธํฐํ์ด์ค์ ๋๊ตฌ์ ๋ถ๋ด์ ๋๋ผ์ง ์๊ณ ๊ฐ๋จํ ์ฝ๋๋ก ์์ ํ ์๋ ์์ต๋๋ค. ๊ทธ ์ธ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ **ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ(Integrated Development Environment, IDE)**์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. IDE๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์ ํฌ์ ๊ฒฝ์ฐ C#)๋ฅผ ์ํ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ํ๋ ์ํํธ์จ์ด์ ๋๋ค. ํ ์คํธ ํธ์ง๊ธฐ๋ IDE์ ๊ตฌ์ฑ ์์์ผ ๋ฟ์ด๋ฏ๋ก ํ ์คํธ ํธ์ง๊ธฐ๊ฐ ํ ์ ์๋ ๋ชจ๋ ์์ ์ IDE์์ ์ํํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋๋ ์ฌ๋ฌ๋ถ์ ์ฒซ ๋ฒ์งธ ๋ชจ๋๋ฅผ ๋ง๋๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ๊ฐ์ด๋ ํ์ ์์ ๋ฌธ์๋ฅผ ์ฝ๊ณ ๋ฐ๋ผ์ฃผ์ธ์.
์ฒซ ๋ฒ์งธ ๋ชจ๋ ๋ง๋ค๊ธฐ
๋จผ์ ์์ฃผ ๊ฐ๋จํ ๋ชจ๋๋ฅผ ๋ง๋ค์ด์ tModLoader์ฉ ๋ชจ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ต์ํด์ง๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ๊ณจ์กฐ ์์ฑํ๊ธฐ
๋จผ์ tModLoader๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋ชจ๋ ๊ณจ์กฐ๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. tModLoader๋ฅผ ์ด๊ณ "Workshop" ๋ฉ๋ด๋ฅผ ์ฐ ๋ค์ "Develop mods" ๋ฉ๋ด๋ฅผ ์ด๊ณ "Create Mod" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ด์ ์ ๋ ฅ ์์๋ฅผ ์ฑ์๋๋ค. ์ ๋ ๊ฐ๊ฐ 'TutorialMod', 'Tutorial Mod', 'NewbieModder', 'TutorialSword'๋ฅผ ์ ์ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก "Create" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ๋ฉ์์ง๊ฐ ๋ํ๋๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ์์ค ๋ฉ๋ด๋ก ๋์๊ฐ๋๋ค.
๋ชจ๋ ๊ณจ์กฐ์ ๋ด์ฉ
"Develop Mods" ๋ฉ๋ด์์ "Open Sources" ๋ฒํผ์ ํด๋ฆญํ์ฌ ModSources
ํด๋๋ฅผ ์ฝ๋๋ค. ํ์ผ ๋ธ๋ผ์ฐ์ ์์ 'Documents\My Games\Terraria\tModLoader\ModSources'๋ก ์ด๋ํ์ฌ ModSources
ํด๋๋ฅผ ์ด ์๋ ์์ต๋๋ค. ๋ค์์ผ๋ก ๋ง๋ค์ด์ง ๋ชจ๋์ ํด๋๋ฅผ ์ด์ด ๋ด
์๋ค. ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ 'TutorialMod'๋ผ๋ ์ด๋ฆ์ ํด๋๋ฅผ ์ด์์ ๊ฒ์
๋๋ค. ์ด ํด๋์๋ ๋ง๋ค์ด์ง ๋ชจ๋์ ๊ด๋ จ๋ ๋ชจ๋ ์ฝ๋๊ฐ ๋ค์ด ์์ต๋๋ค. ํ์ฌ ๋ชจ๋ ๊ณจ์กฐ ์์ฑ๊ธฐ์ ์ํด 8 ๊ฐ์ ๊ธฐ๋ณธ ํ์ผ์ด ์ถ๊ฐ๋์ด ์์ด์ผํฉ๋๋ค. ๋ค์์ ๊ฐ ํ์ผ์ ๋ํ ์ค๋ช
์
๋๋ค:
- [ModName].cs -
Mod
ํด๋์ค์ ๋๋ค. ๋ชจ๋ ๋ชจ๋์ ์ค์ฌ ํ์ผ์ ๋๋ค. ๋ชจ๋ ๋ชจ๋์๋ ํ๋์Mod
ํด๋์ค๋ง ์กด์ฌํ ์ ์์ต๋๋ค. ๊ฐ๋จํ ๋ชจ๋์ ๊ฒฝ์ฐ ์ด ํ์ผ์ ๋๋ถ๋ถ ๋น์ด ์๊ฒ ์ง๋ง ์ด ํด๋์ค์์๋ ๋ค์ํ ์ ์ญ์ ์ธ ์ผ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. - description.txt - ๋ชจ๋์ ๋ํ ์ค๋ช ์ ์ํ ํ ์คํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฒ์์์ ๋ณด๋ ค๋ฉด ๋ชจ๋ ๋ฉ๋ด์์ 'More Info' ๋ฒํผ์ ํด๋ฆญํ์ธ์.
- build.txt - ๋ชจ๋์ ๋ฒ์ , ์์ฑ์ ๋ฐ ์ธ๋ถ๋ชจ๋๋ช ์ ํฌํจํฉ๋๋ค. ๋ค๋ฅธ values์ ํฌํจํ ์ ์์ต๋๋ค. ํ์์ ๋๋ค.
- icon.png - ๊ฒ์ ๋ด์์ ํ์๋ 80x80 ํฌ๊ธฐ์ ์์ด์ฝ์ ๋๋ค. Steam ์ฐฝ์๋ง๋น ์น์ฌ์ดํธ์ ๋ ์์ธํ๊ฑฐ๋ ๋ ๋์ ํด์๋์ icon_workshop.png ๋ฒ์ ์ ์์ด์ฝ์ ์์ฑํ ์ ์์ต๋๋ค. ํด๋น ํ์ผ์ ์ต๋ 512x512๊น์ง ๊ฐ๋ฅํฉ๋๋ค.
- [ModName].csproj - ๋ชจ๋ ๋๋ฒ๊น ์ ์ํด ์ค์ ๋ Visual Studio์ฉ ํ๋ก์ ํธ ํ์ผ์ ๋๋ค. ๋๋ฒ๊น ์ ๋งค์ฐ ์ ์ฉํ์ง๋ง ์ฝ๊ฐ์ ํ์ต์ด ํ์ํฉ๋๋ค. ์ญ์ ํ์ง ๋ง์ธ์.
- Properties/launchSettings.json - '[ModName].csproj'์ ๊ด๋ จ๋ ํ์ผ๋ก, ๋๋ฒ๊น ์ ์ํ tModLoader ํ์ผ ๊ฒฝ๋ก๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋์ค์ ๊ฒฝํ์ด ์์ด๋ฉด ํ์ํด์ง ๊ฒ์ด๋ฏ๋ก ์ ๊ฑฐํ์ง ๋ง์ธ์.
- Items/[ItemName].cs - ๊ฐ๋จํ ์๋ ์์ดํ ์ ๋๋ค. ํ์ตํ๋ฉด์ ๋ค๋ฅธ ๋ชจ๋์์ดํ ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์์ ๋ก ํ์ฉํ์ธ์.
- Items/[ItemName].png - ๋์๋๋ ์คํ๋ผ์ดํธ.
๋ชจ๋ ๋น๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
์ด์ ๋ชจ๋๋ฅผ ๋น๋ํ ์ค๋น๊ฐ ๋์์ต๋๋ค. tModLoader๋ฅผ ์์ํ๊ณ "Workshop" ๋ฉ๋ด๋ฅผ ์ฐ ๋ค์ "Develop Mods" ๋ฉ๋ด๋ฅผ ์ฝ๋๋ค. ๋ฐฉ๊ธ ๋ง๋ ๋ชจ๋์ ํญ๋ชฉ์ด ํ์๋ฉ๋๋ค. ์ด์ "Build + Reload" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์๋ค๋ฉด ์ฌ๋ฌ๋ถ์ ๋ชจ๋๊ฐ ๋ชจ๋ ๋ฉ๋ด์ ๋ํ๋ ๊ฒ์ ๋๋ค!
์ด์ ๊ฒ์์ผ๋ก ์ด๋ํ์ฌ ์์ ๋๋ฅผ ๋ง๋ค๊ณ 10 ๊ฐ์ ํ ๋ธ๋ก์ ์ฑ๊ตดํ๋ฉด ์๋ก์ด ๊ฒ์ ์ ์ํ ์ ์์ต๋๋ค!
์์ฐ! ๋๋๋ค์. ํ์ง๋ง 50 ๋๋ฏธ์ง๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ด์ ์ฒซ ๋ฒ์งธ ์ค์ ํ๋ก๊ทธ๋๋ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. Notepad++์์ ModSources\[ModName]\Items\TutorialSword.cs
ํ์ผ์ ์ฝ๋๋ค. Item.damage = 50;
์ค์ ์ฐพ์ 50์ 100์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ํ ์ด๋ ์ฌ๋ฏธ ์ผ์ Tooltip.SetDefault("This is a modded sword.");
์ฝ๋๋ฅผ ๋ณ๊ฒฝํด ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ ๊ฐ์ด๋ ํ์ ์กฐ๊ฑด์์ ๋ฐฐ์ด ๋ฌธ๋ฒ์ ์๋ง์ผ๋ก ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ์ธ์. ์ด์ ํ์ผ์ ์ ์ฅํ์ธ์! ๋ค์์ผ๋ก ๊ฒ์์ ๋ค์ด๊ฐ์ ๋ค์ ํ ๋ฒ ๋ชจ๋๋ฅผ ๋น๋ํ๊ณ ๋ฆฌ๋ก๋ฉํ์ฌ ๊ฒ์ ๋ค์ ํ๋ํ์ธ์. ์๋ก์ด ๋๋ฏธ์ง์ ์๋ก์ด ํดํ์ด ๋ณด์ผ ๊ฒ์
๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๋น๋ํ ๋ชจ๋๋ [ModName]
์ด๋ผ๋ .tmod
ํ์ผ์ ํจํค์ง๋์ด ์ ์ฅ๋๋ฉฐ, tModLoader\Mods
์์ ์ฐพ์ ์ ์์ต๋๋ค. ์น๊ตฌ์๊ฒ ๋ชจ๋๋ฅผ ํ๋ ์ดํ๊ฒ ํ๊ณ ์ถ์ง๋ง ์์ง ๊ฒ์ํ๊ณ ์ถ์ง ์๋ค๋ฉด ์ด ํ์ผ์ ์น๊ตฌ์๊ฒ ๋ณด๋ด ๊ฐ์ ํด๋์ ์ ์ฅํ๋๋ก ํ ์ ์์ต๋๋ค. (๋๋ ์ฐฝ์๋ง๋น์ ๊ฒ์ํ๊ณ "์น๊ตฌ ์ ์ฉ"์ผ๋ก ์ค์ ํ์ฌ ๋ค์ ๋น๊ณต๊ฐ๋ก ์ ์งํ ์ ์์ต๋๋ค).
์กฐ๊ธ ๋ ์คํํ๊ธฐ
์ด์ ๋ค๋ฅธ ํญ๋ชฉ ๊ฐ ์ค ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์กฐ๊ธ ๋ ์คํํด ๋ณผ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๊ณ ๋น๋ํ ํ ๋ค์ ๋ก๋ํด์ผ ๊ฒ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
๋ค์ ๋จ๊ณ
์ด์ ๊ฐ๋จํ ๊ฒ์ผ๋ก ๊ฐ๋จํ ๋ชจ๋๋ฅผ ๋ง๋ค์์ผ๋, ์ด์ ๋ค๋ฅธ ๊ธฐ์ ์ ๋ฐฐ์๋ณผ ์ฐจ๋ก์ ๋๋ค. ์ฒ์ฒํ ๋ฐฐ์ฐ๊ณ ์ถ์ ๊ฒ์ ์คํํด ๋ณด์ธ์. ํฌ๋ผ์ด๋ ๋์ค์ฝ๋์์ ๋ค๋ฅธ ๋ชจ๋์ ๋์์ ๊ตฌํ๋ ๊ฒฝ์ฐ, ์ง๋ฌธ์ ๋ฐ๋๋ผ์ ๊ดํ ๊ฒ์ผ๋ก ํํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด, Molten Fury๊ฐ ์ด๋ป๊ฒ Wooden Arrow๋ฅผ Flaming Arrow๋ก ๋ฐ๊พธ๋์ง ๊ถ๊ธํ๋ค๋ฉด, "How does the Molten Fury change the projectile it shoots only when Wooden Arrows are used as ammo?"๋ผ๊ณ ์ง๋ฌธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ง๋ฌธํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
๊ณ์ ์ฝ์ผ๋ฉด์ tModLoader์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
์ด๋ค ํ์ผ์์ ๋ด ๋ชจ๋์ ๋ค๋ฅธ ํ์ผ์ ์ฐธ์กฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
๋ชจ๋ ์ ์์๊ฐ ๊ฐ์ฅ ๋จผ์ ํ๋ ์ผ ์ค ํ๋๋ ์ปค์คํ
๋ฌด๊ธฐ๋ก ์ปค์คํ
ํฌ์ฌ์ฒด๋ฅผ ์๊ฑฐ๋ ๋ชจ๋์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ ๊ธฐํ ์ ์ฌํ ๋์์ ์ํํ๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ์ํด ModContent.SomethingType
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ฌ๊ธฐ์ "Something"์ "Item", "Projectile", "NPC" ๋ฑ์ผ๋ก ๋์ฒด๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ModItem
์ด ํน์ ModProjectile
์ ์๋๋ก ํ๋ ค๋ฉด ModItem.SetDefaults
๋ฉ์๋์ Item.shoot = ModContent.ProjectileType<MyProjectileClassName>();
์ ์์ฑํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋๋ก ๋ฐ๋๋ผ ํฌ์ฌ์ฒด๋ฅผ ๋ฐ์ฌํ๋ ค๋ฉด Item.shoot = ProjectileID.WoodenArrowFriendly;
๋๋ ์ด์ ๋น์ทํ ์์ผ๋ก ์์ฑํ๋ฉด ๋ฉ๋๋ค.
tModLoader 'hooks'๋ ์ด๋ป๊ฒ ์๋ํ๋์?
์ฒซ์งธ, ์๋ฐํ ๋งํด ํ
์ ํ
์ด ์๋๋๋ค. ๊ทธ๋ฅ ์ฝ๊ธฐ ๋๋ฌธ์ ํ
์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์
๋๋ค. 'ํ
(hook)'์ ๋ชจ๋๊ฐ ์ฌ์ฉํ ์ ์๋ ํจ์์
๋๋ค. ์ด๋ค ํ
์ ์ฌ์ฉํ ์ ์๋์ง๋ ์์
์ค์ธ ํด๋์ค์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋(Mod) ํด๋์ค์๋ ๋ชจ๋ ํด๋์ค ์ ์ฉ ํจ์์ธ **Load Hook**์ด ์์ต๋๋ค. ์ด๋ฌํ ํจ์๋ ๋ชจ๋ 'virtual'์ด๋ฉฐ, ์ด๋ ํจ์๊ฐ ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ์ ๊ฐ์ง๊ณ ์์ง๋ง ์ํ๋ ๊ฒฝ์ฐ ๋ชจ๋๊ฐ ์ฌ์ ์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฆ, ํ
์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ํ
์ _๋ฎ์ด์์ด๋ค_๋ ์๋ฏธ์ด๋ฉฐ, ์ด๊ฒ์ด ๋ฐ๋ก virtual
์ด๋ผ๋ ๋จ์ด๊ฐ override
๋ก ๋์ฒด๋๋ ์ด์ ์
๋๋ค. virtual (๋ถ๋ถ์ ์ธ)๊ตฌํ์ด ์ค๋ฒ๋ผ์ด๋ฉ๋๋ฏ๋ก ํด๋น ๊ตฌํ์ ์์ค๋ฉ๋๋ค. ํ
์ ํ์ค ๊ตฌํ์ ๋ณด๋ ค๋ฉด **์์ค ๋ฌธ์**๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋๊ฐ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๊ธฐํ์ ๋๋ค. ๊ฐ ํ ์ ๊ฒ์์ ์ ๋ฐ์ดํธ ๋ฃจํ์์ ์ ์ ํ ์์ ์ "ํธ์ถ(Called)"๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ModItem.Shoot๋ผ๋ ํ ์ด ์๋๋ฐ, ์ด ํ ์ ๊ฒ์์์ ๋ฌด๊ธฐ ์์ดํ ์ด ๋ฐ์ฌ์ฒด๋ฅผ ๋ฐ์ฌํด์ผ ํ๋ค๊ณ ๊ฒฐ์ ํ ๋๋ง๋ค ํธ์ถ๋ฉ๋๋ค. ๋ชจ๋๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ "ํ "์ "์ค๋ฒ๋ผ์ด๋"ํ๋ฉด ๋ฌด๊ธฐ ์์ดํ ์ด ๋ฐ์ฌ์ฒด๋ฅผ ๋ฐ์ฌํ ๋ ํด๋น ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
ํ ์ฌ์ฉ ์์
ํด๋ํฐ ์์ดํ
์ ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์์ดํ
์ด ์ธ๋ฒคํ ๋ฆฌ์ ์๋ ๋์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. ๋จผ์ ์์ค ๋ฌธ์๋ฅผ ์ด๊ณ ModItem ๋ฌธ์๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด ํ์ด์ง๋ฅผ ์ฐพ์์ผ๋ฉด ctrl-f
๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ํญ๋ชฉ๊ณผ ๊ด๋ จ๋ ํ์ด์ง๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ 'inventory'๋ฅผ ๊ฒ์ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ผ๋ฉด 'UpdateInventory' ๋ฉ์๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ์ด "ํ
"์ ์ฌ์ฉํ๋ฉด ์ด ์์ดํ
์ด ์ธ๋ฒคํ ๋ฆฌ์ ์์ ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์
์ ์ํํ ์ ์์ต๋๋ค. ์ด ํ
์ ์ฌ์ฉํ๋ ค๋ฉด method signature๋ฅผ ModItem ํด๋์ค์ ๋ณต์ฌํฉ๋๋ค.
virtual void Terraria.ModLoader.ModItem.UpdateInventory (Player player)
์๊ธฐ๋ ๋ด์ฉ์ ๊ธฐ์ตํ์ ๋ค๋ฉด, ์ฐ๋ฆฌ๋ "virtual"์ "override"๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ๋ํ ๋ฉ์๋ ์ด๋ฆ์ ์ค์ด๋ ๊ฒ๋ ์์ง ๋ง์์ผ ํฉ๋๋ค. ์ด ์ฝ๋๋ ModItem ํด๋์ค์ ์์ผ๋ฏ๋ก "Terraria.ModLoader.ModItem."์ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์ด Player
ํด๋์ค๊ฐ ๋ฌด์์ธ์ง ์ปดํจํฐ์ ์๋ ค์ค์ผ ํฉ๋๋ค. .cs ํ์ผ ์๋จ์ using Terraria;
๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ด๊ณ ๋ซ๋ ์ค๊ดํธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ง์นจ๋ด ์ฝ๋๋ฅผ ์์ฑํ ํ
์ด ์ค๋น๋ฉ๋๋ค:
override void UpdateInventory (Player player)
{
// ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
}
Visual Studio๋ฅผ ์ฌ์ฉํ๋ฉด ํ
์ ์ค๋ฒ๋ผ์ด๋ํ๋ ๊ณผ์ ์ ํฌ๊ฒ ๋จ์ํํ ์ ์์ต๋๋ค.
์ด์ ModItem ํด๋์ค์ ํ
์ด ์๊ฒผ์ผ๋ ๊ทธ ์์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋ ์ฝ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ฌ์ฑํ๊ณ ์ ํ๋ ํจ๊ณผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ExampleMod์ ๊ณ ๊ธ ๋ฐ๋๋ผ ์ฝ๋ ์ ์ฉ ๊ฐ์ด๋๋ ์คํํ ์ ์ฌํ ์ฝ๋ ์กฐ๊ฐ์ ์ฐพ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ธ๋ฑ์ค์ ํ์
์ ์์ ํด๋นํ๋ ๋ ๊ฐ์ง ํฐ ๊ฐ๋ ์ด ์์ต๋๋ค. ์ ์์ ์ด ๋ ๊ฐ์ง ์ฉ๋๋ ์ ๊ท ๋ชจ๋๋ค์ด ์ค์๋ก ํผ๋ํ์ฌ ์ปดํ์ผ์ ๋์ง๋ง ๋ฒ๊ทธ๊ฐ ์๋ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ
๋ผ๋ฆฌ์์์ ๋ชจ๋ ์ฝํ
์ธ ์๋ 'Type'์ด๋ผ๋ ๊ณ ์ ์๋ณ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ์์์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฝํ
์ธ ๋ค์ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ์ ์์
๋๋ค. ์๋ฅผ ๋ค์ด, Shuriken
ํฌ์ฌ์ฒด์ ํ์
์ ์ซ์ 3
์
๋๋ค. ํฌ์ฌ์ฒด 'Type'์ ์ฌ์ฉํ์ฌ ํด๋น ์ ํ์ ํฌ์ฌ์ฒด์๋ง ์ํฅ์ ์ฃผ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, GlobalProjectile.OnHitNPC
ํ
์ ์ฌ์ฉํ๋ฉด if(projectile.type == ProjectileID.Shuriken)
๋ฅผ ํ์ธํ ๋ค์ NPC์ ๋๋ฒํ๋ฅผ ์ ์ฉํ๋ ๋ฑ ์๋ฆฌ๊ฒ ๊ด๋ จ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ํ
๋ผ๋ฆฌ์์ Item, NPC, Projectile, Dust ๋ฑ ๋ค์ํ ์ฝํ
์ธ ๋ ๋ชจ๋ Type
์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ข
๋ฅ์ ์ฝํ
์ธ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ ๊ฐ๋
์ Index
์
๋๋ค. ํ
๋ผ๋ฆฌ์์์๋ ๋ค์ํ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์๋์ ๋ชจ๋ ํ์ฑ ์ฝํ
์ธ ๋ฅผ ์ ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Main.projectile[]
๋ฐฐ์ด์ ํ์ฌ ๊ฒ์ ์๋์ ์๋ ๋ชจ๋ ํฌ์ฌ์ฒด์ ์ธ์คํด์ค๋ฅผ ๋ชจ๋ ์ ์ฅํฉ๋๋ค. ๊ฐ Projectile
์ ํด๋น ๋ฐฐ์ด ๋ด์์ whoAmI
ํ๋๋ฅผ ํตํด ์์ ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ ์์ต๋๋ค.
ํ์
๊ณผ ์ธ๋ฑ์ค
๋ ๋ชจ๋ ์ ์์ด๊ธฐ ๋๋ฌธ์ ์ ๊ท ๋ชจ๋๊ฐ ๋ ์ค ํ๋๋ฅผ ์๋ชป ์ฌ์ฉํ๋ฉด ํฐ ์ค์๋ฅผ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Projectile projectile = Main.projectile[ProjectileID.Shuriken]
์ด ํ์ฑํ๋ ์๋ฆฌ๊ฒ ๋ฐ์ฌ์ฒด๋ฅผ ๊ฒ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง, ๊ทธ๋ ์ง ์๊ณ ํด๋น ์ธ๋ฑ์ค์ ์๋ ํฌ์ฌ์ฒด๋ผ๋ฉด ๋ญ๋ ๋ฐํํ ์ ์์ต๋๋ค. ๋ชจ๋๋ ๋ค์ํ ๊ฐ์ด๋์ ์์ ๋ฅผ ํตํด 'Type'๊ณผ 'Index'์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ์ ์๊ฒ ๋ ๊ฒ์
๋๋ค.
์ด ๋ค์ด์ด๊ทธ๋จ์ ์ด ์ ์ ์ค๋ช
ํ๊ธฐ ์ํด Type
๊ณผ Index
๊ฐ ๋ณ๊ฐ์ ๊ฐ๋
์์ ๋ณด์ฌ์ฃผ๋ฉด์ ๋ฐฐ์ด์ ์ ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค:
๋ชจ๋ ํด๋์ค๋ ์ด๋ป๊ฒ ์ค์ ํ๋์?
tModLoader๋ ์์ ๋ง์ ๋ชจ๋ ์ฝํ
์ธ ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฌ๋ฌ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. 'class derivation' ๋๋ 'class inheritance'์ด๋ผ๊ณ ํ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ๋ง์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ๋จํ ์ค๋ช
ํ์๋ฉด, ์ฌ๋ฌ๋ถ์ ํด๋์ค๊ฐ ์ ํฌ์ ํด๋์ค ์ค ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ค๋ ๋ป์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ๋ถ์ ์์ดํ
์ ModItem์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์
๋๋ค: MyItemClass : ModItem
, ์ฌ๊ธฐ์ : ModItem
์ Terraria.ModLoader ๋ค์์คํ์ด์ค์ ์๋ ModItem ํด๋์ค๋ฅผ ์์๋ฐ์์์ ๋ํ๋
๋๋ค. (Java์์ ์จ ๊ฒฝ์ฐ extends ModItem
๊ณผ ๋์ผํฉ๋๋ค.) ์ฆ, SetDefaults ํ
๊ณผ ๊ฐ์ด ModItem์ ์ํด ๋ง๋ ๋ชจ๋ ๊ฒ์ ์ฌ๋ฌ๋ถ์ ํด๋์ค์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ํ๋์ ํด๋์ค์์๋ง ํ์๋ ์ ์์ผ๋ฏ๋ก ModItem์ ModProjectile ๋ฑ์ด ๋ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์.
์์ ๋ชจ๋(Example Mod)์์ ๋ฐฐ์ฐ๊ธฐ
์์ ๋ชจ๋๋ ๋ค์ํ ๋ชจ๋ฉ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด tModLoader ๊ฐ๋ฐ์๊ฐ ๋ง๋ ๋ชจ๋์ ๋๋ค. ์์ ๋ชจ๋๋ฅผ ํ์ฑํํ๊ณ ์ ์ ๋์ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. Cheat Sheet์ ๊ฐ์ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์ดํ ์ ์์ฑํ๊ณ ๋ฐฐ์ฐ๊ณ ์ถ์ ๊ธฐ๋ฅ์ ์ฐพ์๋ณด์ธ์. ๋ค์์ผ๋ก ์์ ๋ชจ๋ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค. 1.4-stable.zip์ ๋ค์ด๋ก๋ํ ๋ค์ ๊ทธ ์์ ์๋ ์์ ๋ชจ๋ ํด๋๋ฅผ ์ฐพ์ต๋๋ค. ํด๋น ํด๋๋ฅผ ์ด๊ณ ModSources ํด๋ ๋ด์ TutorialMod ์์ ๋ฐฐ์นํฉ๋๋ค.
๊ด์ฌ์๋ ๊ฒ์ ์ฐพ์์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ์ญ์์ค. ์ดํดํ๊ธฐ ์ฌ์ ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์์ ๋ชจ๋์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ฒ์์์ ์์ ๋ชจ๋๋ฅผ ๋น๋ ํ ์๋ ์์ต๋๋ค.
์์ ๋ชจ๋ ๋๋ ํํ ๋ฆฌ์ผ ๋ชจ๋์์ ๊ฐ๋จํ ๊ฒ๋ค์ ์ฝ๊ฒ ์์ ํ ์ ์๋ค๋ฉด ๋ชจ๋ ๋น๋ ํ๋ก์ธ์ค์ ์ต์ํด์ก์ ๊ฒ๋๋ค. ๋ค์ ๋จ๊ณ๋ฅผ ์ํด ๋ค๋ฅธ ๊ฐ์ด๋๋ ๋์๋ง์ ์์ ๋กญ๊ฒ ์ดํด๋ณด์ธ์.
๋จ๊ณ๋ณ ํ์ต
๋ชจ๋ฉ์ด ์ฒ์์ด๋ผ๋ฉด ํ๋ก๊ทธ๋๋ฐ ์์ฒด์ C# ์ธ์ด๋ ์ฒ์์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ฌ์ด ๊ฒ๋ถํฐ ์์ํ์ฌ ๋์ด๋๋ฅผ ๋์ฌ๊ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ์ฅ ์ฌ์ด ๊ฒ ์ค ํ๋๋ ์์ ๊ฐ์ด ๊ฒ์ ํ๋๋ฌ ํผํด๋ฅผ ์ ํ ์ ์๋ ๊ฒ์ ๋ง๋๋ ๊ฒ์ด๊ณ , ๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ์ ์์ ํ ๋ณด์ค์ ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋ค์์ ์์ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ ์์ ๋๋ค:
- ๋จผ์ , tModLoader์ ์๋ ๋ฐฉ์์ ์์งํ์ธ์. 'tModLoader 'hooks'๋ ์ด๋ป๊ฒ ์๋ํ๋์?' ์น์ ์ ์ฝ์ด๋ณด์ธ์.
- ๋ค์์ผ๋ก, ํํ ๋ฆฌ์ผ ๊ฒ์ ์์ ํ์ฌ ๋ ๋ง์ ๋ฐ๋ฏธ์ง, ๋ ๋ง์ ๋๋ฐฑ, ๋ ๋น ๋ฅธ ์๋ ๋ฑ์ ์ ์ฉํด๋ณด์ธ์. 'Item.shoot'๋ฅผ ์ค์ ํ์ฌ ํฌ์ฌ์ฒด๋ฅผ ์๊ฒ ํ๊ณ , 'Item.shootSpeed'๋ก ์๋๋ฅผ ์ ์ดํ ์๋ ์์ต๋๋ค.
- ๋ชจ๋ฉ์ ํ๋ก๊ทธ๋๋ฐ์ด๋ฉฐ C#์ด๋ฉฐ ๋ฐ๋๋ผ ์ฝ๋์ ์ต์ํ๋ค๋ ๊ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฌด๋ฃ ์จ๋ผ์ธ ๊ฐ์ข๋ฅผ ํตํด C# ์ธ์ด ๋๋ ํ๋ก๊ทธ๋๋ฐ ์์ฒด๋ฅผ ๋ ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ ์ฉํ ๋ฆฌ์์ค๋ก๋ ๋น ๋ฅธ ํ ๋ผ๋ฆฌ์ ์ ์ฉ C# ํฌ๋์ ์ฝ์ค๊ฐ ์์ต๋๋ค. ๋ฐ๋๋ผ ์ฝ๋์ ๋ ์ต์ํด์ง๋ ค๋ฉด ๊ณ ๊ธ ๋ฐ๋๋ผ ์ฝ๋ ์ ์ฉ ๊ฐ์ด๋๋ฅผ ์ด์ฉํ์ธ์.
- ์์ ๊ฐ์ด ์๊ธฐ๋ฉด ์ง์ ๋ฐ์ฌ์ฒด๋ฅผ ๋ง๋ค์ด ๊ฒ๊ณผ ์ํธ์์ฉํด ๋ณด์ธ์.
- ๋ ์์ ๊ฐ์ด ์๊ธฐ๋ฉด ์ NPC๋ฅผ ๋ง๋๋ ๋ฑ ๋ค์ํ ์๋๋ฅผ ํ ์ ์์ต๋๋ค.
**๋๋ถ๋ถ์ ๋ชจ๋๋ค์ด ์ด๋ ต๊ฒ ์ฌ๊ธธ ์ ์๋ ๋ช ๊ฐ์ง๊ฐ ์์ผ๋, ์ด๋ฐ ๊ฒ๋ค์ ์๋ํ๊ธฐ ์ ์ ์ฌ์ด ๊ฒ๋ถํฐ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์์ ํ ๋ณด์ค
- ํฌ๊ด์ ์ธ UI
- ์ฝ๋ ์ถ์ํ
- ์ํฐํฐ์ ๋ํ ๋ชจ๋ฉ ์ ๋ณด ๋ฐ ์ํธ ์์ฉ
- ํฌ์ฌ์ฒด, NPC, ์ ์๋๋ฌผ ๋ฑ์ ์ํ ์์ ํ ์ปค์คํฐ๋ง์ด์ง๋ AI... ๋ฑ
์ฒ์ฒํ ๋ฐฐ์ฐ๊ธฐ
๋ ๋์ ๋ชจ๋๊ฐ ๋๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ง์ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. ์ฐ์ , ์ด ์ํค์ ๋๋ค. ์ด ํ์ด์ง์ ์ค๋ฅธ์ชฝ์ ์๋ ์ํค ๋ฉ๋ด์๋ ์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ํํ ๋ฆฌ์ผ๊ณผ ๊ฐ์ด๋์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค. ์ด ๋ชจ๋ ํํ ๋ฆฌ์ผ์ ๊ฐ์ฅ ์ฌ์ด ๊ธฐ๋ณธ๋ถํฐ ๊ฐ์ฅ ์ด๋ ค์ด ์ ๋ฌธ๊ฐ๊น์ง ๋์ด๋์ ๋ฐ๋ผ ๊ตฌ๋ถ๋์ด ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์ ๋ณด ์ถ์ฒ๋ TCF์ ๋ชจ๋ฉ ์น์ ์ ๋๋ค. ๋ง์ ๋ชจ๋๋ค์ด ํฐ๋ชจ๋๋ก๋ ๋์ค์ฝ๋์์ ์๋ก ํ๋ ฅํ๊ณ ์ง๋ฌธํ๊ณ ์์ผ๋, ์ด๋ ค์ด ์ ์ด ์๊ฑฐ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์ ๋ถ๋ค์ ๊ผญ ๋ฐฉ๋ฌธํด ์ฃผ์ธ์! ๋ง์ง๋ง์ผ๋ก, ์ด ์ํค์ ํํ์ด์ง์์ ๋ค์ํ ์ ์ฉํ ๋๊ตฌ์ ๊ฐ์ด๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ชจ๋ฉ ํ ๋ฐ ๊ฐ์ด๋๋ผ์ธ
์ด๋ฆ ์ง์ ๊ท์น(Naming convention)
๋ด๋ถ ์ด๋ฆ์ ๊ณต๋ฐฑ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก, 'My Super Sword'๋ ๊ณต๋ฐฑ ์์ด ์ด๋ฆ์ ์ง์ด์ผ ํฉ๋๋ค. ๋ณดํต ๊ณต๋ฐฑ์ ์๋ตํ MySuperSword
๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง, My_Super_Sword
๋ ๊ฐ๋ ๋ณผ ์ ์์ต๋๋ค. ์ ์๋ฅผ 'ํ์ค์นผ ์ผ์ด์ค(pascal case)'๋ผ๊ณ ํ๊ณ ํ์๋ฅผ '์ค๋ค์ดํฌ ์ผ์ด์ค(snake case)'๋ผ๊ณ ํฉ๋๋ค. ์งง๊ณ ์ค๋ช
์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๊ฒ์ ๋ง๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด๋ฆ์ 'Sword'์ ์ฌ์ฉํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ช
๊ท์น์ ์ฃผ๋ก ๋๊ตฌ์ ํจ๊ป/๋๊ตฌ๋ฅผ ์ํด ์ผํ๋์ง(๊ณ ์ฉ๋ ๊ฒฝ์ฐ ๋ฑ)์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ, ํผ์์ ์์
ํ๋ ๊ฒฝ์ฐ ๊ฐ์ธ ์ทจํฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก '์นด๋ฉ ์ผ์ด์ค(camel case)'๋ 'ํ์ค์นผ ์ผ์ด์ค'์ ๋น์ทํ์ง๋ง, ์นด๋ฉ ์ผ์ด์ค์ ๊ฒฝ์ฐ ์ฒซ ๊ธ์๋ ์๋ฌธ์ ๋๋ ๋๋ฌธ์์ด๊ณ ๋ค์ด์ด ์ฐ๊ฒฐ๋๋ ๋จ์ด(์: backColor, timeUtc)๋ ๋๋ฌธ์๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฝ๋๋ฅผ ๊น๋ํ๊ณ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํ๊ธฐ
์ด๊ฒ์ ๊ณ ๊ธ ์ฃผ์ (๋์์ธ ํจํด์ ์ผ๋ถ๋ก ๋์ค์ ์ ๋ฌธ๊ฐ ํํ ๋ฆฌ์ผ์์ ๋ค๋ฃฐ ์ ์์)์ด์ง๋ง ์ฝ๋๋ฅผ ์ ์ ํ๊ฒ ์ถ์ํํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ๋ ์ถ์ํ ๊ฐ์ด๋์์ ํ์ธํ์ธ์. ์ด๋ณด์๋ฅผ ์ํด ์ด ํ์ ์ฐธ๊ณ ํ์ธ์. ํ๋ก๊ทธ๋๋ฐ์ ์๋ฃํ ํ์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ณ ๋ชจ๋ ๊ณณ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด์ธ์. ์ด์ ์ฝ๋๊ฐ ๊น๋ํ์ง ๋ฌผ์ด๋ด์ผ ํฉ๋๋ค. ์ฝ๋์์ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ ์ฐพ์์ ์ ์ฉ ๋ฉ์๋๋ฅผ ์ง์ ํ์ธ์. ๋ค์์ผ๋ก, ์ฝ๋์ ์ผ๋ถ๋ฅผ ๋ก์ง์ ๋ฐ๋ผ ๊ตฌ๋ถํ๊ณ ๊ณ ์ ํ ๋ฉ์๋๋ฅผ ๋ถ์ฌํ์ฌ ํด๋น ์ฝ๋ ๋ถ๋ถ์ด ๋ฌด์์ ํ๋์ง ์ฝ๊ฒ ์๋ณํ ์ ์๋๋ก ์ ์ฉํ ์ค๋ช ์ด๋ฆ(์ด์ ํ ์ฐธ์กฐ)์ ์ ๊ณตํ์ธ์. ๋ค์์ ์ฝ๋ ์ถ์ํ์ ์ผ๋ถ์ ๋ํ ๊ฐ๋ตํ ์์ฝ์ ๋๋ค.
์ฝ๋์ ์ฃผ์ ๋ฌ๊ธฐ
์ฝ๋๊ฐ ์ด๋ค ์์
์ ํ๋์ง ํญ์ ๋ช
ํํ์ง ์๊ฑฐ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ์์ ์ด๋ ๋ค๋ฅธ ๋ชจ๋๋ฅผ ์ํด ๋ฉ๋ชจ๋ฅผ ๋จ๊ธฐ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด // ์ด๊ฒ์ ์ฃผ์์
๋๋ค
์ ๊ฐ์ด ํ ์ค๋ก ์ฃผ์์ ๋ฌ๊ฑฐ๋, ๋ค์๊ณผ ๊ฐ์ด ์ ์ฒด ์ฃผ์ ๋ธ๋ก์ ๋ง๋ค ์ ์์ต๋๋ค:
/*
* ์ด๊ฒ์ ์ฃผ์ ๋ธ๋ก์
๋๋ค
* ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ ์์ต๋๋ค!
*/
์ด๋ณด์์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ ์ดํดํ๊ณ ์๋ค๊ณ ์๊ฐ๋๋ ๋ด์ฉ์ด๋ผ๋ ๊ฐ๋ฅํ ํ ๋ง์ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฅ๊ธฐ์ ์ผ๋ก ๋์์ด ๋ ๊ฒ์
๋๋ค. ๋ช ๋ฌ ํ์ ์ฝ๋ฉ์ ๋ค์ ํ ๋ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ด๋ฒ๋ฆด ์๋ ์์ต๋๋ค. ์๋ จ๋ ๋ชจ๋๋ผ๋ฉด ์ฝ๋ฉํธ๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํด์ ๋ค๋ฅธ ์ฌ๋์ด ๋ณด๊ธฐ๋ง ํด๋ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๊ณผ์ ์
๋๋ค. ๋ง์ ์ธ์ด๊ฐ ์ฃผ์์ ::
๋ฐ #
๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ง๋ง, C#์ ๊ฒฝ์ฐ ์์ ํ์๋ ๊ฒ์ ์ฌ์ฉํ์ธ์.
๋ชจ๋ ๊ฒ์ํ๊ธฐ
๋ชจ๋๊ฐ ์๋ ์ํ๊ฐ ๋๋ฉด Steam ์ฐฝ์๋ง๋น์ ๋ชจ๋๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ tModLoader ์ฌ์ฉ์๊ฐ ๋ชจ๋๋ฅผ ๊ตฌ๋ ํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฐฝ์๋ง๋น ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.