| name | prepare-assets |
| description | Downloads and configures MetroCity pixel art assets for the Pixel Office project. Generates programmatic placeholder sprites when external downloads are unavailable. Triggers when asset setup, sprite sheet creation, or tile map definition is needed.
|
Pixel Office Asset Preparation
์ด ์คํฌ์ Pixel Office์ ํฝ์
์ํธ ์์
์ ์ค๋นํ๋ค.
์ ๋ต
itch.io์์ ์ง์ ๋ค์ด๋ก๋๋ ์๋ํ๊ฐ ์ด๋ ต๋ค (์น ์ธํฐํ์ด์ค + ๊ฒฐ์ ํ๋ก์ฐ).
๋ฐ๋ผ์ ํ๋ก๊ทธ๋๋งคํฑ ํ๋ ์ด์คํ๋ ์ ๋ต์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์์
์ ๋ฃ์ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.
Step 1: ํ๋ก๊ทธ๋๋งคํฑ ์คํ๋ผ์ดํธ ์์ฑ๊ธฐ
scripts/generate-sprites.ts ์์ฑ:
Canvas API๋ก ๊ฐ ์์ด์ ํธ๋ณ ํฝ์
์ํธ ์บ๋ฆญํฐ๋ฅผ ์ฝ๋๋ก ์์ฑํ๋ค.
์บ๋ฆญํฐ ๋์์ธ (16x24 ํฌ๊ธฐ)
๊ฐ ์์ด์ ํธ๋ณ ์์ ํ๋ ํธ:
- Claude (๋ณด๋ผ/์ฃผํฉ): ๊ธฐ๋ณธ ์์ด์ ํธ ์์
- ๋จธ๋ฆฌ: #8B5CF6, ๋ชธ: #A78BFA, ์
์ผํธ: #F97316
- Codex (๋
น์): ํฅํ ์ง์์ฉ ์๋น
- ๋จธ๋ฆฌ: #22C55E, ๋ชธ: #4ADE80, ์
์ผํธ: #FFFFFF
- Gemini (ํ๋): ํฅํ ์ง์์ฉ ์๋น
- ๋จธ๋ฆฌ: #3B82F6, ๋ชธ: #60A5FA, ์
์ผํธ: #FBBF24
์ ๋๋ฉ์ด์
ํ๋ ์
์ํ๋ณ ํ๋ ์ ์:
idle: 2 ํ๋ ์ (๊ฐ๋งํ + ์ด์ง ์จ์ฌ๊ธฐ)
typing: 4 ํ๋ ์ (์ ์ฌ๋ฆผ โ ํ์ดํ โ ๋ฐ๋ณต)
reading: 2 ํ๋ ์ (์ฑ
๋ค๊ณ ์๊ธฐ + ํ์ด์ง ๋๊น)
executing: 4 ํ๋ ์ (ํ๋ฐํ ๋์)
waiting: 2 ํ๋ ์ (๋ฌผ์ํ ๋งํ์ ๊น๋นก)
done: 2 ํ๋ ์ (์ฒดํฌ๋งํฌ + ์ ํด)
error: 2 ํ๋ ์ (๋๋ํ ๊น๋นก)
์คํ๋ผ์ดํธ์ํธ ๋ ์ด์์
ํ๋์ PNG์ ๋ชจ๋ ํ๋ ์ ๋ฐฐ์น:
- ํ: ๊ฐ ์ํ (7ํ)
- ์ด: ํ๋ ์ (์ต๋ 4์ด)
- ์ด ํฌ๊ธฐ: 64 x 168 (16px * 4์ด x 24px * 7ํ)
Step 2: ํ์ผ ์์
์์ฑ
scripts/generate-tiles.ts ์์ฑ:
์คํผ์ค ํ์ผ์
์ ์ฝ๋๋ก ์์ฑํ๋ค:
- ๋ฐ๋ฅ ํ์ผ (๋ฐ์ ํ์)
- ๋ฒฝ ํ์ผ (์ด๋์ด ํ์)
- ์ฑ
์ ํ์ผ (๋๋ฌด์)
- ์์ ํ์ผ (ํ๋์)
- ์ฅ์ ํ์ผ (ํ๋ถ ๋ฑ)
ํ์ผ ํฌ๊ธฐ: 16x16
Step 3: ์คํผ์ค ๋ ์ด์์ ์ ์
src/shared/office-layout.ts ์์ฑ:
๊ธฐ๋ณธ ์คํผ์ค (20x15 ํ์ผ):
WWWWWWWWWWWWWWWWWWWW
W..................W
W.DC..DC..DC..DC..W
W..................W
W..................W
W.DC..DC..DC..DC..W
W..................W
W..................W
W......DDDD.......W
W..................W
W.DC..DC..DC..DC..W
W..................W
W..................W
W..................W
WWWWWWWWWWWWWWWWWWWW
W=๋ฒฝ, D=์ฑ
์, C=์์, .=๋ฐ๋ฅ
Step 4: ์์
๋งค๋ํ์คํธ ์์ฑ
src/shared/asset-manifest.ts ์์ฑ:
src/shared/types.ts์ AssetManifest ํ์
์ค์
- ๋ชจ๋ ์คํ๋ผ์ดํธ์ํธ/ํ์ผ์ํธ URL
- ํ๋ ์ ํฌ๊ธฐ, ์ ๋๋ฉ์ด์
์ ๋ณด
Step 5: ๋น๋ ์คํฌ๋ฆฝํธ
package.json์ ์คํฌ๋ฆฝํธ ์ถ๊ฐ:
{
"scripts": {
"generate:sprites": "npx tsx scripts/generate-sprites.ts",
"generate:tiles": "npx tsx scripts/generate-tiles.ts",
"generate:assets": "npm run generate:sprites && npm run generate:tiles"
}
}
์ค์ ์์
๊ต์ฒด ๊ฐ์ด๋
์ฌ์ฉ์๊ฐ MetroCity ์์
์ ์๋ ๋ค์ด๋ก๋ํ ๊ฒฝ์ฐ:
public/assets/sprites/ ์ ์บ๋ฆญํฐ ์คํ๋ผ์ดํธ์ํธ ๋ฐฐ์น
public/assets/tiles/ ์ ํ์ผ์ํธ ๋ฐฐ์น
src/shared/asset-manifest.ts ์ URL/ํ๋ ์ ์ ๋ณด ์์
- ๊ฒ์ ์์ง์ด ์๋์ผ๋ก ์ ์์
๋ก๋
ํ์ง ์ฒดํฌ๋ฆฌ์คํธ