Repository navigation
Assets and Tilesheets ko
English | ็น้ซไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด
BIT8_CLI๋ ๋ฑ๋ก๋ PNG Tilesheet๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ๊ทธ๋ํฝ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๊ฐ Tilesheet๋ 8ร8 ํฝ์ ํฌ๊ธฐ์ Tile๋ก ๋๋ฉ๋๋ค. ๋ฑ๋ก๋ Tile์๋ ์์ ์ ์ธ Asset ID๊ฐ ๋ถ์ฌ๋๋ฉฐ Script, Map, Sprite ๋ฐ Collision ์์คํ ์์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋์์๋ BIT8_CLI 0.1.0์ Asset ์์คํ ์ ์๊ฐํฉ๋๋ค.
Tilesheet๋ ์ฌ๋ฌ Tile์ด ํฌํจ๋ PNG ์ด๋ฏธ์ง์ ๋๋ค.
BIT8_CLI๋ ๊ณ ์ ๋ Tile ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
8 ร 8 ํฝ์
์๋ฅผ ๋ค์ด 32ร16 ํฝ์ PNG์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- 4์ด
- 2ํ
- 8๊ฐ์ Tile
Tile์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ, ์์์ ์๋ ์์๋ก ๋ฒํธ๊ฐ ์ง์ ๋ฉ๋๋ค.
32 ร 16 PNG
+------+------+------+------+
| A1 | A2 | A3 | A4 |
+------+------+------+------+
| A5 | A6 | A7 | A8 |
+------+------+------+------+
๊ฐ Tile์ ์ ํํ 8ร8 ํฝ์ ์ ๋๋ค.
BIT8_CLI๋ Asset Registry๋ฅผ ์ฌ์ฉํ์ฌ ๋ฑ๋ก๋ Tilesheet๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Registry๋ ๋ค์ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค.
bit8.assets.toml
Registry๋ Tilesheet๋ฅผ ์์ ์ ์ธ Group ID์ ์ฐ๊ฒฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด Tilesheet์ Group A๊ฐ ์ง์ ๋์๋ค๋ฉด ํด๋น Tile์ ๋ค์๊ณผ ๊ฐ์ด ์ฐธ์กฐํ ์ ์์ต๋๋ค.
A1
A2
A3
A4
Asset Registry๋ Asset ์๋ณ ์ ๋ณด์ ๊ธฐ์ค์ด ๋๋ ๊ณต์ ๋ฐ์ดํฐ์ ๋๋ค.
PNG๋ฅผ ํ๋ก์ ํธ์ ๋ฐฐ์นํ๋ ๊ฒ๋ง์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์.
ํ๋ก์ ํธ์์ ์ง์ํ๋ Asset ๋ฑ๋ก ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ Registry ํญ๋ชฉ์ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
BIT8_CLI๋ ๋ค์ ํ์์ ์์ ์ ์ธ ์๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Group + Tile Number
์:
A1
A4
B12
C3
Group์ ๋ฑ๋ก๋ Tilesheet๋ฅผ ์๋ณํฉ๋๋ค.
์ซ์๋ ํด๋น Tilesheet ๋ด๋ถ์ Tile์ ์๋ณํฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด Script์ Map์ด ์ ์ญ ์ซ์ ์์์ ์์กดํ์ง ์๊ณ Tile์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด:
spr(A4, 16, 16)์ ์ง์ ๋ ์ขํ์ Tile A4๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
์ฌ๋ฌ Tilesheet๊ฐ ์๋ ํ๋ก์ ํธ๋ฅผ ์๊ฐํด ๋ด ์๋ค.
Asset์ด ์ ์ญ ๋ชฉ๋ก์ ์์น์๋ง ์์กดํ๋ค๋ฉด Tilesheet๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์๋ฅผ ๋ณ๊ฒฝํ ๋ ๊ธฐ์กด ์ฐธ์กฐ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
Stable Asset ID๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค.
BIT8_CLI๋ ์ฌ์ฉ์ด ์ข ๋ฃ๋ Group ID๋ ๊ธฐ๋กํ์ฌ ์ค์๋ก ๋ค์ ์ฌ์ฉํ์ง ์๋๋ก ํฉ๋๋ค.
๋ฑ๋ก๋ Tilesheet๋ ๋ค์๊ณผ ๊ฐ์ ํ์ค ํ์ผ ์ด๋ฆ ํ์์ ์ฌ์ฉํฉ๋๋ค.
<name> (<GROUP>).png
์:
terrain (A).png
characters (B).png
items (C).png
Group ID๋ ๋ฑ๋ก๋ Asset ์๋ณ ์ ๋ณด์ ์ผ๋ถ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ต์ข ๊ธฐ์ค์ Asset Registry์ ๋๋ค.
Registry๋ฅผ ์ ๋ฐ์ดํธํ์ง ์๊ณ ๋ฑ๋ก๋ PNG ํ์ผ์ ์ด๋ฆ์ ์ง์ ๋ณ๊ฒฝํ๋ฉด Asset ์ฐธ์กฐ๊ฐ ๊นจ์ง ์ ์์ต๋๋ค.
๋ฑ๋ก๋ Tile์ ๊ทธ๋ฆฌ๋ ค๋ฉด spr()์ ์ฌ์ฉํฉ๋๋ค.
func draw()
cls(0)
spr(A4, 16, 16)
end์ด ์ฝ๋๋ ํ๋ฉด์ ์ง์ฐ๊ณ Tile A4๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
์ฐธ์กฐํ๋ Tile์ ํ๋ก์ ํธ์ Asset Registry์ ์กด์ฌํด์ผ ํฉ๋๋ค.
BIT8_CLI๋ ์ด์ ํ๋ก์ ํธ์์ ํธํ์ฑ์ ์ํด ๊ธฐ์กด ์ซ์ Sprite ์ฐธ์กฐ๋ ๊ณ์ ์ง์ํฉ๋๋ค.
์ ํ๋ก์ ํธ์์๋ Stable Asset ID๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
BIT8_CLI๋ ๋ฑ๋ก๋ PNG Tilesheet์ ํฌ๋ช ํฝ์ ์ ์ง์ํฉ๋๋ค.
ํฌ๋ช ํฝ์ ์ Tile์ ๊ทธ๋ฆด ๋๋ ํฌ๋ช ํ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค.
PNG ์์์ Runtime์์ ์ฌ์ฉํ๋ ํ๋ ํธ ํํ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
Asset ์ฒ๋ฆฌ ๊ณผ์ ์ Runtime ๋ ๋๋ง ๊ฒฐ๊ณผ์ Editor ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ผ์นํ๋๋ก ์ค๊ณ๋์ด ์์ต๋๋ค.
์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ์์๊ณผ ํฌ๋ช ๋๊ฐ ๋ช ํํ Pixel Art ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Tile์ Collision ํ์ ์ ์ํด Solid๋ก ์ค์ ํ ์ ์์ต๋๋ค.
Solid Tile ์ ๋ณด๋ Asset Registry์ ์ ์ฅ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด Tilesheet์ ์ฌ์ฏ ๋ฒ์งธ Tile์ Solid๋ก ์ง์ ํ๋ ค๋ฉด:
solid = [6]์ด ๊ฐ์ ๋ฑ๋ก๋ Tilesheet Group ๋ด๋ถ์ ์ฌ์ฏ ๋ฒ์งธ Tile์ ์๋ฏธํฉ๋๋ค.
Solid Tile์ Collision ํ์ ์์ ์ ์ฒด 8ร8 ํฝ์ ์์ญ์ ์ฐจ์งํฉ๋๋ค.
Node๋ ๋ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Solid Tile๊ณผ์ Collision์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
self:collide(dx, dy)๊ทธ๋ฆฌ๊ณ :
self:move(dx, dy)solid๋ bit8.assets.toml์ ํด๋น Asset ๋ฑ๋ก ํญ๋ชฉ ๋ด๋ถ์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ด๋ จ ์๋ ์ต์์ ์ค์ ์ผ๋ก ๋ฐฐ์นํ์ง ๋ง์ธ์.
์์ธํ ๋ด์ฉ์ Collision ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Map์ ๋ฑ๋ก๋ Asset ID๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
Map Cell์๋ ๋ค์๊ณผ ๊ฐ์ Tile ID๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
A1
A2
A3
์ด๋ฅผ ํตํด ํ๋์ Map์์ ์๋ก ๋ค๋ฅธ Group์ Tile์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Map Workspace์๋ ๋ฑ๋ก๋ Tile์ ์ ํํ๊ณ Map Cell์ ๋ฐฐ์นํ๋ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Map ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Sprite Definition๋ ๋ฑ๋ก๋ Tile์ ์ฌ์ฉํฉ๋๋ค.
Sprite๋ Tile์ ์ฐธ์กฐํ์ฌ ๋ค์ ์์๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
- ์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- Animation Frame
- ์ด๋ฆ์ด ์ง์ ๋ Animation
Sprite Definition์ ๋ค์ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค.
bit8.sprites.toml
์๋ฅผ ๋ค์ด Player๋ผ๋ Sprite๋ ์ฌ๋ฌ ๋ฑ๋ก๋ Tile์ Animation Frame์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
Node Script์์๋ ๋ค์ ์ฝ๋๋ก Animation์ ์ ์ดํ ์ ์์ต๋๋ค.
self:play("walk")ํ์ฌ Frame์ ๊ทธ๋ฆฌ๋ ค๋ฉด:
self:spr()์์ธํ ๋ด์ฉ์ Sprite ๋ฐ Animation ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Asset์ ๊ด๋ฆฌํ ๋๋ ๋ค์ ์ฌํญ์ ๊ถ์ฅํฉ๋๋ค.
- ์ง์๋๋ Asset ๋ฑ๋ก ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ PNG Tilesheet๋ฅผ ๋ฑ๋กํฉ๋๋ค.
- ๋ฑ๋ก๋ Group ID๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํฉ๋๋ค.
- ๊ธฐ์กด Asset ID๋ฅผ ์๋์ผ๋ก ๋ค์ ํ ๋นํ์ง ์์ต๋๋ค.
- ๋ฑ๋ก๋ Asset ํ์ผ์ ๋ณ๊ฒฝํ ๋ Registry๋ ์ ๋ฐ์ดํธํฉ๋๋ค.
- Asset์ ์ญ์ ํ๊ธฐ ์ ์ Map๊ณผ Sprite์ ์ฐธ์กฐ๋ฅผ ํ์ธํฉ๋๋ค.
- ์ฌ์ฉ์ด ์ข ๋ฃ๋ Group ID๋ฅผ ์ค์๋ก ์ฌ์ฌ์ฉํ์ง ์๋๋ก ํฉ๋๋ค.
Stable ID๋ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ด์ง๋ง Asset์ ์์ ํ ํ์๋ ๊ฐ์ ๊ทธ๋ํฝ์ด ์ ์ง๋๋ค๋ ๊ฒ์ ์๋์ผ๋ก ๋ณด์ฅํ์ง๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ฑ๋ก๋ PNG ๋ด๋ถ์์ Tile์ ์์น๋ฅผ ๋ฐ๊พธ๋ฉด ๊ธฐ์กด Asset ID๊ฐ ๋ค๋ฅธ ๊ทธ๋ฆผ์ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค.
Tilesheet๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
my-bit8-game/
โโโ main.b8
โโโ bit8.assets.toml
โโโ bit8.sprites.toml
โโโ assets/
โโโ terrain (A).png
โโโ characters (B).png
์ด๊ฒ์ ์์ ๊ตฌ์กฐ์ ๋๋ค. ์ค์ Asset ๊ฒฝ๋ก๋ Asset Registry์ ๋ฑ๋ก ์ ๋ณด์ ์ผ์นํด์ผ ํฉ๋๋ค.
๋ค์ ํ์ด์ง:
๊ด๋ จ ๋ฌธ์:
Stable Asset ID๋ฅผ ํตํด Script, Map, Sprite๊ฐ ๋ฑ๋ก๋ Tile์ ์ผ๊ด๋๊ฒ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
Current Version: 0.1.0