Skip to content

Latest commit

ย 

History

History
48 lines (39 loc) ยท 7.5 KB

File metadata and controls

48 lines (39 loc) ยท 7.5 KB

Tower Defense - ํ”„๋กœ์ ํŠธ ๊ทœ์น™

ํŒŒ์ผ ๊ตฌ์กฐ

  • index.html - ํŽ˜์ด์ง€ ๊ตฌ์กฐ + ์Šคํƒ€์ผ
  • game.js - ๊ฒŒ์ž„ ๋กœ์ง ์ „์ฒด (๋‹จ์ผ ํŒŒ์ผ)
  • GUIDE.md - ์ฝ”๋“œ ๊ตฌ์กฐ & ๊ฐœ๋… ๊ฐ€์ด๋“œ (ํ•œ๊ธ€)

๊ฐœ๋ฐœ ๊ทœ์น™

์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ํ•„์ˆ˜ ์ž‘์—…

  1. game.js ์ˆ˜์ • (๊ธฐ๋Šฅ ๊ตฌํ˜„)
  2. GUIDE.md ์—…๋ฐ์ดํŠธ (๋ณ€๊ฒฝ๋œ ์‹œ์Šคํ…œ ์„ค๋ช… ๋ฐ˜์˜)
  3. CLAUDE.md ํ•˜๋‹จ ์—…๊ทธ๋ ˆ์ด๋“œ ๋กœ๊ทธ์— ๊ธฐ๋ก ์ถ”๊ฐ€

GUIDE.md ์—…๋ฐ์ดํŠธ ์›์น™

  • ์ƒˆ ์‹œ์Šคํ…œ ์ถ”๊ฐ€ ์‹œ โ†’ ํ•ด๋‹น ์„น์…˜ ์ƒˆ๋กœ ์ž‘์„ฑ
  • ๊ธฐ์กด ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ ์‹œ โ†’ ํ•ด๋‹น ์„น์…˜ ๋‚ด์šฉ ์ˆ˜์ •
  • ์ˆซ์ž(์ค„ ๋ฒˆํ˜ธ, ์ˆ˜์น˜ ๋“ฑ)๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ฐ˜๋“œ์‹œ ๊ฐฑ์‹ 
  • ์—…๊ทธ๋ ˆ์ด๋“œ ์•„์ด๋””์–ด ์ฒดํฌ๋ฆฌ์ŠคํŠธ์—์„œ ์™„๋ฃŒ๋œ ํ•ญ๋ชฉ ์ฒดํฌ

์ฝ”๋“œ ์ปจ๋ฒค์…˜

  • Vanilla JS + Canvas API only (ํ”„๋ ˆ์ž„์›Œํฌ ๊ธˆ์ง€)
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ธˆ์ง€
  • ํ•œ๊ธ€ UI ํ…์ŠคํŠธ ์œ ์ง€
  • ๋ชจ๋ฐ”์ผ + ๋ฐ์Šคํฌํ†ฑ ์ž…๋ ฅ ๋ชจ๋‘ ์ง€์›

๊ธฐ์ˆ  ์Šคํƒ

  • HTML5 Canvas
  • Vanilla JavaScript (ES6+)
  • localStorage (์ตœ๊ณ  ์ ์ˆ˜ ์ €์žฅ)

์—…๊ทธ๋ ˆ์ด๋“œ ๋กœ๊ทธ

๋‚ ์งœ ๋ฒ„์ „ ๋‚ด์šฉ
2026-03-02 v1.0 ์ดˆ๊ธฐ ๋ฒ„์ „ ์™„์„ฑ. ํƒ€์›Œ 4์ข…(ํ™”์‚ด/๋Œ€ํฌ/์–ผ์Œ/๋ฒˆ๊ฐœ), ์  4์ข…(์ผ๋ฐ˜/๋น ๋ฅธ/ํƒฑํฌ/๋ณด์Šค), ์›จ์ด๋ธŒ ์‹œ์Šคํ…œ, 5๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ, S์ž ๊ฒฝ๋กœ ๋งต
2026-03-02 v1.0.1 ๋ฒ„๊ทธ ์ˆ˜์ • - resize()์—์„œ towers ๋ณ€์ˆ˜ TDZ ์—๋Ÿฌ ํ•ด๊ฒฐ
2026-03-02 v1.1.0 ํ™”๋ฉด ํฌ๊ธฐ ํ™•๋Œ€ (800ร—680 โ†’ 1200ร—900), ๋… ํƒ€์›Œ ์ถ”๊ฐ€ (DOT 4์ดˆ, 0.5์ดˆ ๊ฐ„๊ฒฉ ํ‹ฑ, ์Šคํ”Œ๋ž˜์‹œ ๋… ์ „ํŒŒ), ํƒ€์›Œ๋ณ„ ํˆฌ์‚ฌ์ฒด ์ดํŽ™ํŠธ ์ฐจ๋ณ„ํ™” (ํ™”์‚ด=์ง์„ /๋Œ€ํฌ=์—ฐ๊ธฐ+ํฌํƒ„/์–ผ์Œ=ํšŒ์ „๊ฒฐ์ •/๋ฒˆ๊ฐœ=์ „๊ธฐ์ค„๊ธฐ/๋…=๋ฌผ๊ฒฐ๋ฐฉ์šธ)
2026-03-02 v1.2.0 ๊ฒŒ์ž„ ์†๋„ ์กฐ์ ˆ (x1/x2/x3, Qํ‚ค ๋˜๋Š” ํด๋ฆญ), ์  ๋น„์ฃผ์–ผ ์ „๋ฉด ๊ฐœ์„  (์ผ๋ฐ˜=ํšŒ์ „ ๋Œ๊ธฐ+ํ†ฑ๋‹ˆ ์ž…/๋น ๋ฅธ=๋‚ ์นด๋กœ์šด ๋‹ค์ด์•„+์†๋„์„ /ํƒฑํฌ=์žฅ๊ฐ‘ํŒ+๋ชจ์„œ๋ฆฌ ๋ฟ”/๋ณด์Šค=๋ฟ”+์™•๊ด€+๋ถ‰์€ ์˜ค๋ผ+๋น›๋‚˜๋Š” ๋ˆˆ+์†ก๊ณณ๋‹ˆ), ๋ณด์Šค ์ด๋ฒคํŠธ ๊ฐ•ํ™” (5์›จ์ด๋ธŒ๋งˆ๋‹ค ๋นจ๊ฐ„ ๊ฒฝ๊ณ  ์—ฐ์ถœ 2.5์ดˆ, ๋ณด์Šค ๋ ˆ๋ฒจ ์Šค์ผ€์ผ๋ง HP 8โ†’10โ†’12๋ฐฐ, ํ˜ธ์œ„๋ณ‘ ๋™๋ฐ˜ ์ถœํ˜„, ๋ณด์ƒ ์ฆ๊ฐ€)
2026-03-02 v1.3.0 ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ๊ฐœ์„  โ€” ๋‚ด๋ถ€ ์บ”๋ฒ„์Šค ํ•ด์ƒ๋„์™€ CSS ํ‘œ์‹œ ํฌ๊ธฐ ๋ถ„๋ฆฌ (TILE ์ตœ์†Œ 36 ๋ณด์žฅ, cssScale๋กœ ์ถ•์†Œ), isMobile ํ”Œ๋ž˜๊ทธ ๊ธฐ๋ฐ˜ ์กฐ๊ฑด๋ถ€ UI (ํ‚ค๋ณด๋“œ ํžŒํŠธ ์ˆจ๊น€, ํ„ฐ์น˜ ์•ˆ๋‚ด ํ…์ŠคํŠธ), ๋ชจ๋ฐ”์ผ CSS ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ (h1 ์ถ•์†Œ, #info ์ˆจ๊น€, iOS Safari ๋ฐ”์šด์Šค ๋ฐฉ์ง€)
2026-03-02 v2.0.0 ๋น„์ฃผ์–ผ+์‚ฌ์šด๋“œ ์ „๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ โ€” SoundManager(Web Audio API ํ”„๋กœ์‹œ์ €๋Ÿด 8bit ์‚ฌ์šด๋“œ 15์ข…, OscillatorNode/GainNode/WhiteNoise), ์•ฐ๋น„์–ธํŠธ ์‹œ์Šคํ…œ(์ž”๋”” ๋ธ”๋ ˆ์ด๋“œ ๋ฐ”๋žŒ ํ”๋“ค๋ฆผ, ๊ฒฝ๋กœ ์กฐ์•ฝ๋Œ/๊ท ์—ด, ๋จผ์ง€/๋ฐ˜๋”ง๋ถˆ์ด ํŒŒํ‹ฐํด), ์Šคํฌ๋ฆฐ์‰์ดํฌ(๋ณด์Šค์‚ฌ๋ง/๋Œ€ํฌ์Šคํ”Œ๋ž˜์‹œ/๋ผ์ดํ”„๊ฐ์†Œ), ์ถฉ๊ฒฉํŒŒ ๋ง(์  ์‚ฌ๋ง ์‹œ ํ™•์žฅ ๋ง), ํˆฌ์‚ฌ์ฒด ๊ธ€๋กœ์šฐ(shadowBlur), ํƒ€์›Œ ๋จธ์ฆ ํ”Œ๋ž˜์‹œ, ์ง€๋ฉด ์ถฉ๋Œ ๋งˆํฌ, ํƒ€์›Œ/์  ๊ทธ๋ฆผ์ž, UI ๊ทธ๋ผ๋””์–ธํŠธ ํŒจ๋„, ๋ฒ„ํŠผ ํ˜ธ๋ฒ„ ๊ธ€๋กœ์šฐ, ๊ณจ๋“œ/๋ผ์ดํ”„ ๋ณ€๊ฒฝ ํ”Œ๋ž˜์‹œ, ์›จ์ด๋ธŒ ์ „ํ™˜ ์Šฌ๋ผ์ด๋“œ ์˜ค๋ฒ„๋ ˆ์ด, ๊ฒŒ์ž„์˜ค๋ฒ„ ์—ฐ์ถœ(์–ด๋‘์›Œ์ง€๊ธฐโ†’์Šค์ผ€์ผ์ธโ†’์นด์šดํŠธ์—…โ†’์ตœ๊ณ ์ ์ˆ˜โ†’์žฌ์‹œ์ž‘), ๋ณผ๋ฅจ ํ† ๊ธ€(๐Ÿ”Š/๐Ÿ”‡ ๋ฒ„ํŠผ, Mํ‚ค)
2026-03-06 v2.1.1 UI ๊ฐœ์„  โ€” ์ƒ๋‹จ ๋ฐ” ๋ฒ„ํŠผ ๊ณ ์ • ๋„ˆ๋น„(์†๋„/๋ณผ๋ฅจ/์–ธ์–ด ํฌ๊ธฐ ๋ถˆ๋ณ€), [Q] ํžŒํŠธ ๋ฒ„ํŠผ ์•„๋ž˜ ๋ถ„๋ฆฌ, ์Šคํƒฏ ๋ฑƒ์ง€ ๊ฒน์นจ ํ•ด๊ฒฐ(3๋ฒ„ํŠผ ์ด ๋„ˆ๋น„ ์˜ˆ์•ฝ), ์‹œ์ž‘ ํ”„๋กฌํ”„ํŠธ ์ค‘์•™ ์ •๋ ฌ(measureText ๋™์  ๋ฐ•์Šค), ๊ฒŒ์ž„์˜ค๋ฒ„ ์žฌ์‹œ์ž‘ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜• ๋ฒ„ํŠผ(ํŒŒ๋ž€ ํ…Œ๋‘๋ฆฌ, ์˜์—ญ ํด๋ฆญ๋งŒ ๊ฐ์ง€, ๊ด‘๊ณ  ์ œ๊ฑฐ), restartBtn ๋กœ์ปฌ๋ผ์ด์ œ์ด์…˜
2026-03-06 v2.1.0 ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด+๋ชจ๋ฐ”์ผ ์—…๊ทธ๋ ˆ์ด๋“œ โ€” ๋‚œ์ด๋„ ์ƒํ–ฅ(HP=30+wร—18+w^1.7ร—6, ์†๋„/์ˆ˜๋Ÿ‰ ๊ฐ•ํ™”, ๋น ๋ฅธ์  ์›จ์ด๋ธŒ2๋ถ€ํ„ฐ+๋ฐฉ์–ด๋ ฅ, ํƒฑํฌ ์›จ์ด๋ธŒ4๋ถ€ํ„ฐ), ํ™”์‚ดํƒ‘ ์น˜๋ช…ํƒ€(20%ํ™•๋ฅ ร—2.5๋ฐฐ, ๊ธˆ์ƒ‰ ํŒŒํ‹ฐํด+๊ธ€๋กœ์šฐ+์‚ฌ์šด๋“œ), ๋ฒˆ๊ฐœํƒ‘ ์—ฐ์‡„๊ณต๊ฒฉ(3๋ฐ”์šด์Šค, 70%๊ฐ์‡„, ์ง€๊ทธ์žฌ๊ทธ ๋ฒˆ๊ฐœ ์‹œ๊ฐํšจ๊ณผ), ๋ณด์Šค ํŠน์ˆ˜๋Šฅ๋ ฅ 3์ข…(๋ฐฉ์–ด๋ง‰=ํŒŒ๋ž€ ์œก๊ฐํ˜• ๋ฐฐ๋ฆฌ์–ด maxHPร—15%+์‹ค๋“œ๋ฐ”/์†Œํ™˜=2~4๋งˆ๋ฆฌ ์†Œํ˜•์ /๊ฐ€์†๋Œ์ง„=2์ดˆ ์†๋„ร—2.5 ๋นจ๊ฐ„ ์†๋„์„ ), applyDamageToEnemy ๋ฐ๋ฏธ์ง€ ์ค‘์•™ํ™” ํ—ฌํผ, ์‚ฌ์šด๋“œ 5์ข… ์ถ”๊ฐ€(arrowCrit/lightningChain/bossShield/bossSummon/bossSpeedBurst), ๋ชจ๋ฐ”์ผ ๊ฐ€๋กœ๋ชจ๋“œ ์ตœ์ ํ™”(์—ฌ๋ฐฑ์ถ•์†Œ/MIN_TILE 28/์„ธ๋กœ๊ฐ์ง€ "ํ™”๋ฉด์„ ๋Œ๋ ค์ฃผ์„ธ์š”" ์˜ค๋ฒ„๋ ˆ์ด/orientation ๋ฆฌ์Šค๋„ˆ/CSS landscape ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ)
2026-04-21 v3.0.0 ๋ชจ๋ฐ”์ผ+๋ฐธ๋Ÿฐ์Šค+ํ”ฝ์…€ ์Šคํ”„๋ผ์ดํŠธ 1์ฐจ โ€” DPR ๋ Œ๋”๋ง, MAX_TILE 96, HP ์ง€์ˆ˜ w^1.95ร—8, ์—…๊ทธ๋ ˆ์ด๋“œ ๋น„์šฉ ์ง€์ˆ˜ํ™”, ๋Ÿฌ์‹œ/ํ—ค๋น„ ํŠน์ˆ˜ ์›จ์ด๋ธŒ ์ถ”๊ฐ€ (ํ›„์† v3.1์—์„œ UI/๋ฐฐ๊ฒฝ ๋ชจ๋˜์œผ๋กœ ์ „ํ™˜)
2026-04-21 v3.1.0 ํ”ฝ์…€ ์บ๋ฆญํ„ฐ + ๋ชจ๋˜ UI ํ•˜์ด๋ธŒ๋ฆฌ๋“œ โ€” image-rendering: pixelated ์ „์—ญ ์ œ๊ฑฐ, imageSmoothingEnabled๋Š” drawSprite ๋‚ด๋ถ€์—์„œ๋งŒ false๋กœ ํ† ๊ธ€ํ•ด UI/๋ฐฐ๊ฒฝ์€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์œ ์ง€. HUD ๋ณต์›(๊ทธ๋ผ๋””์–ธํŠธ ํŒจ๋„+๋„ค์˜จ ๋ผ์ธ+๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ 6px), ๋ฐฐ๊ฒฝ ๋ชจ๋˜ํ™”(์ˆ˜์ง ๊ทธ๋ผ๋””์–ธํŠธ ์ž”๋””+๋ผ๋””์–ผ ๊ฒฝ๋กœ+๋ถ€๋“œ๋Ÿฌ์šด ์–ผ๋ฃฉ, ์˜คํ”„์Šคํฌ๋ฆฐ backgroundCache๋กœ ์ •์  ํ”„๋ฆฌ๋ Œ๋”), ์  ์Šคํ”„๋ผ์ดํŠธ ํ•ด์ƒ๋„ ์ƒํ–ฅ(Normal/Fast 16โ†’24, Tank 20โ†’28, Boss 28โ†’40)+ํ•˜์ด๋ผ์ดํŠธยท์„€๋„์šฐ ํ”ฝ์…€ยท๋ณผํ„ฐ์น˜ ์ถ”๊ฐ€, ํƒ€์›Œ ์Šคํ”„๋ผ์ดํŠธ ์ƒํ–ฅ(8โ†’16ร—16 base)+์™ธ๊ณฝ์„ /ํ•˜์ด๋ผ์ดํŠธ/์ฐฝ๋ฌธ/์Šคํ†ค ๊ธฐ๋‹จ ๋””ํ…Œ์ผ, ํ‘œ์‹œ ํฌ๊ธฐ TILE ๊ธฐ๋ฐ˜ ์žฌ๊ณ„์‚ฐ(displayScale=round(TILEร—N/spriteW) ์ •์ˆ˜ ๋ฐฐ์œจ), ์  HP ๋ฐ” ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ+ํ•˜์ด๋ผ์ดํŠธ, ์  ๊ทธ๋ฆผ์ž/ํƒ€์›Œ ๊ทธ๋ฆผ์ž ctx.filter='blur(2px)' ์ ์šฉ, ๋ ˆ๋ฒจ ๋ณ„์„ 5๊ฐ๋ณ„+ํ™ฉ๊ธˆ ๊ธ€๋กœ์šฐ๋กœ ๊ต์ฒด, ๋ฒˆ๊ฐœ ํƒ€์›Œ ์ค‘์•™ ์˜ค๋ธŒ ๋งฅ๋ฐ• ๊ธ€๋กœ์šฐ
2026-04-21 v3.2.0 UI ๋ฆฌ์›Œํฌ + ๋ฐธ๋Ÿฐ์Šค 2์ฐจ + ์ดํŽ™ํŠธ ๊ฐ•ํ™” โ€” ์ƒ๋‹จ ์šฐ์ธก ์˜๊ตฌ ์›จ์ด๋ธŒ ๋ฑƒ์ง€(โš” ์•„์ด์ฝ˜+๋ณด์Šค์›จ์ด๋ธŒ ๋นจ๊ฐ• ํ‹ดํŠธ), IN/OUT ์•„์ด์ฝ˜ํ™”(โ–ถ ์ดˆ๋ก ํ™”์‚ดํ‘œ+โ—Ž ๋นจ๊ฐ• ๊ณผ๋… ๋งฅ๋ฐ•), HUD ๋ ˆ์ด์•„์›ƒ ์žฌ์กฐ์ •(์™ผ์ชฝ ์Šคํƒฏ 3๊ฐœ=๊ณจ๋“œ/ํ•˜ํŠธ/๋ณ„ TILEร—1.95 ๊ณ ์ • ๋„ˆ๋น„ยท๊ทธ๋ผ๋””์–ธํŠธ ๋ฑƒ์ง€ยท์ƒ๋‹จ ๊ด‘ํƒ, ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ 3๊ฐœ=ํ•œ/๋ณผ๋ฅจ/์†๋„ ๋™์ผ TILEร—1.5 ๋„ˆ๋น„ยทdrawIconBtn ๊ณตํ†ต ํ—ฌํผ, ์Šคํƒฏโ†”๋ฒ„ํŠผ ์„ธ๋กœ ๋„ค์˜จ divider, UI_PAD=max(10,TILEร—0.22) ์ขŒ์šฐ ๊ณตํ†ต ํŒจ๋”ฉ), drawRoundRect์— ์ฝ”๋„ˆ๋ณ„ ๋ฐ˜๊ฒฝ({tl,tr,bl,br}) ์ง€์›, ํƒ€์›Œ ์—…๊ทธ๋ ˆ์ด๋“œ ํŒจ๋„ overflow ํ•ด๊ฒฐ(drawActionBtn ๊ณตํ†ต ํ—ฌํผ๋กœ upgrade/sell/max ํ†ต์ผยท๋ผ๋ฒจ ์ตœ๋Œ€๋„ˆ๋น„ ์ธก์ • ํ›„ btnMinW=max+btnPadHร—2ยทํฐํŠธ ์ž๋™ ์ถ•์†Œ ๋ฃจํ”„), ํƒ€์›Œ ์„ ํƒ ๋ฒ„ํŠผ ๋ฆฌ๋””์ž์ธ(์•„์ด์ฝ˜ 30% ๊ณ ์ • ์˜์—ญยทํ…์ŠคํŠธ maxWidth ํฐํŠธ ์ถ•์†Œ), HTML h1 "TOWER DEFENSE" ์ œ๊ฑฐ+info ์ œ๊ฑฐ+์—ฌ๋ฐฑ 24๋กœ ์ถ•์†Œ, ์‹œ์ž‘/์›จ์ด๋ธŒ ํ”„๋กฌํ”„ํŠธ ์•Œ์•ฝํ˜• CTA ๋ฆฌ๋””์ž์ธ(โ–ถ ์•„์ด์ฝ˜+๋ฉ”์ธ ๋ผ๋ฒจ+ํžŒํŠธ, ์‹œ์ž‘=์ดˆ๋ก/๋Œ€๊ธฐ=ํŒŒ๋ž‘ ๊ทธ๋ผ๋””์–ธํŠธ, ์™ธ๊ณฝ ๊ธ€๋กœ์šฐ ๋งฅ๋ฐ•), Game Over ์˜ค๋ฒ„๋ ˆ์ด ์ „๋ฉด ๋ฆฌ๋””์ž์ธ(๋ผ๋””์–ผ ๋น„๋„คํŠธ+์ค‘์•™ ๋ชจ๋‹ฌ ํŒจ๋„ยท์ƒ๋‹จ ๋นจ๊ฐ• ์•ก์„ผํŠธยท๊ด‘ํƒ, ์ ์ˆ˜ ์นด๋“œ ์›จ์ด๋ธŒ/์ ์ˆ˜ 2๋ถ„ํ• ยท์„ธ๋กœ dividerยท์ƒ‰ ๊ตฌ๋ถ„, ์ตœ๊ณ ์ ์ˆ˜ ๋ฑƒ์ง€ ์‹ ๊ธฐ๋ก์‹œ ๐Ÿ† ๋งฅ๋ฐ•, CTA ๋ฒ„ํŠผ 2์ข…=๋ถ€ํ™œ ์ดˆ๋ก ๋งฅ๋ฐ•+์žฌ์‹œ์ž‘ ํŒŒ๋ž‘ drawCTA ํ—ฌํผ), ํ™”์‚ด ํˆฌ์‚ฌ์ฒด ๊ฐ•ํ™”(์ง„ํ–‰๋ฐฉํ–ฅ ํšŒ์ „+๊นƒํ„ธ ๊ผฌ๋ฆฌ+ํ™”์‚ด๋Œ€ ์„ +ํ•˜์ด๋ผ์ดํŠธ ์ +์™ธ๊ณฝ/๋‚ด๋ถ€ 2๊ฒน ๋น›์ค„๊ธฐ+์น˜๋ช…ํƒ€ ๊ธˆ์ƒ‰ ํ™•๋Œ€), ๋Œ€ํฌ ํˆฌ์‚ฌ์ฒด ๊ฐ•ํ™”(์ž์ฒด ํšŒ์ „ ํฌํƒ„+๊ธˆ์† ๋ฐด๋“œ+์˜ค๋ Œ์ง€ ํ•˜์ด๋ผ์ดํŠธ+2์ธต ์—ฐ๊ธฐ ๊ผฌ๋ฆฌ+๋’ค์ชฝ ๋ถˆ๊ฝƒ 3๊ฐœ), ํƒ€์›Œ ๋ ˆ๋ฒจ ํ‹ฐ์–ด ์‹œ๊ฐํ™”(Lv2 ํŒŒ๋ž‘ ๋‹ค์ด์•„ 1ยทLv3 ์ดˆ๋ก ๋‹ค์ด์•„ 2ยทLv4 ๋ณด๋ผ ๋‹ค์ด์•„ 3ยทLv5 ํ™ฉ๊ธˆ ํฌ๋ผ์šดโ™›+๋งฅ๋ฐ• ๊ธ€๋กœ์šฐ), ๋ฐธ๋Ÿฐ์Šค 2์ฐจ ์™„ํ™”(HP=30+wร—18+w^1.78ร—6.5ยท์†๋„ wร—0.04+floor(w/10)ร—0.06ยท์นด์šดํŠธ floor(w/7)ร—3ยท๊ณจ๋“œ wร—0.55ยท์—…๊ทธ๋ ˆ์ด๋“œ๋น„์šฉ 0.7ร—1.5^(lv-1)ยท๋Ÿฌ์‹œ/ํ—ค๋น„ ๊ฐ•๋„โ†“ยท๋ณด์ŠคHP 4.8+lvร—1.4)