Repository navigation
Runtime API ko
English | ็น้ซไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด
์ด ํ์ด์ง์์๋ BIT8_CLI 0.1.0์์ ์ ๊ณตํ๋ Runtime ์คํฌ๋ฆฝํธ API๋ฅผ ์๊ฐํฉ๋๋ค.
BIT8_CLI๋ Lua 5.4๋ฅผ ์ฌ์ฉํ๋ฉฐ ์คํฌ๋ฆฝํธ ํ์ฅ์๋ .b8์
๋๋ค. ๋ํ function ๋์ func๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
| ํญ๋ชฉ | ์ฌ์ |
|---|---|
| Framebuffer | 64 ร 64 ํฝ์ |
| ์๋ฎฌ๋ ์ด์ | ๊ณ ์ 30 Hz |
| Tile ํฌ๊ธฐ | 8 ร 8 ํฝ์ |
| Map ํฌ๊ธฐ | ์ต๋ 256 ร 256 Tiles |
| ์คํฌ๋ฆฝํธ ์ธ์ด | Lua 5.4 |
| ํ์ฅ์ | .b8 |
๊ฒ์ ์ด๊ธฐํ ์ ํธ์ถ๋ฉ๋๋ค.
func init()
x = 32
y = 32
end๊ฒ์ ์๋ฎฌ๋ ์ด์ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
func update()
x = x + 1
end์๋ฎฌ๋ ์ด์ ์ ๊ณ ์ 30 Hz๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
ํ์ฌ ๊ฒ์ ์ํ๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
func draw()
cls(0)
pix(x, y, 7)
end์ง์ ํ ํ๋ ํธ ์์์ผ๋ก framebuffer๋ฅผ ์ง์๋๋ค.
cls(0)๋ณ์นญ clear()๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์ ํ ํ๋ฉด ์ขํ์ ํฝ์ ์ ๊ทธ๋ฆฝ๋๋ค.
pix(32, 32, 7)๋ณ์นญ pixel()๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฑ์์ง ์ฌ๊ฐํ์ ๊ทธ๋ฆฝ๋๋ค.
rectfill(10, 10, 20, 20, 7)๋ฑ๋ก๋ Asset์์ Tile์ ๊ทธ๋ฆฝ๋๋ค.
BIT8_CLI๋ ์์ ์ ์ธ Asset ID๋ฅผ ์ง์ํฉ๋๋ค.
spr(A4, 16, 16)ํธํ์ฑ์ ์ํด ๊ธฐ์กด ์ซ์ Sprite ์ฐธ์กฐ๋ ๊ณ์ ์ง์ํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ฑ๋ก๋ Tile์ ์ฌ์ฉํ์ฌ Map์ ๊ทธ๋ฆฝ๋๋ค.
func draw()
cls(0)
map()
endMap ๊ทธ๋ฆฌ๊ธฐ๋ ํ์ฑ Camera์ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Map ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ฒํผ์ด ํ์ฌ ๊ณ์ ๋๋ ค ์๋์ง ํ์ธํฉ๋๋ค.
if btn(LEFT) then
x = x - 1
end์ฌ์ฉํ ์ ์๋ ๋ฒํผ ์์:
UP
DOWN
LEFT
RIGHT
A
B
๋ฒํผ์ด ์๋กญ๊ฒ ๋๋ ธ๋์ง ํ์ธํฉ๋๋ค.
if btnp(A) then
print("A pressed")
endbtn()๊ณผ ๋ฌ๋ฆฌ ํ ๋ฒ์ ๋๋ฆ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
Map์์ Tile ๊ฐ์ ์ฝ์ต๋๋ค.
Runtime Map์ Tile ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค.
Map ์ขํ, Tile ID ๋ฐ ํธ์ง ๋์์ ๋ํด์๋ Map ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Node Script์์๋ self๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋ Runtime Node์ ์ ๊ทผํ ์ ์์ต๋๋ค.
func update()
self.x = self.x + 1
end| ์์ฑ | ์ค๋ช |
|---|---|
self.id |
์์ ์ ์ธ Node ID |
self.name |
Node ์ด๋ฆ |
self.x |
์๋ X ์ขํ |
self.y |
์๋ Y ์ขํ |
self.enabled |
Node ํ์ฑํ ์ํ |
์ง์ ํ ๊ฑฐ๋ฆฌ๋งํผ Node๋ฅผ ์ด๋ํ์ ๋ ์ง์๋๋ ์ถฉ๋ ์ง์ค๋ฉํธ๋ฆฌ์ ์ถฉ๋ํ๋์ง ํ์ธํฉ๋๋ค.
if self:collide(1, 0) then
print("Blocked")
end์ด ํจ์๋ ์ถฉ๋ ์ฌ๋ถ๋ง ํ์ธํ๋ฉฐ Node๋ฅผ ์ด๋์ํค์ง ์์ต๋๋ค.
์ถฉ๋ ํ์ ์๋ ํ์ฑํ๋ Node Box Collider์ Solid Tile์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ถฉ๋์ ๊ณ ๋ คํ๋ฉด์ Node ์ด๋์ ์๋ํฉ๋๋ค.
self:move(1, 0)์ด๋์ X์ถ์ ๋จผ์ ์ฒ๋ฆฌํ๊ณ ๊ทธ๋ค์ Y์ถ์ ์ฒ๋ฆฌํฉ๋๋ค.
BIT8_CLI 0.1.0์ ๊ธฐ๋ณธ์ ์ธ ์ถฉ๋ ๋์ ์ด๋์ ์ ๊ณตํ์ง๋ง ์์ ํ ๋ฌผ๋ฆฌ ์์ง์ ์๋๋๋ค.
๋ฑ๋ก๋ Sprite Definition์ Node์ ์ฐ๊ฒฐํฉ๋๋ค.
self:sprite("Player")ํ์ฌ Sprite์ ์ ์๋ Animation์ ์ฌ์ํฉ๋๋ค.
self:play("walk")๊ฐ์ Animation์ ๋ฐ๋ณตํด์ ์์ฒญํด๋ ๋ถํ์ํ๊ฒ ์ฒ์๋ถํฐ ๋ค์ ์์ํ์ง ์์ต๋๋ค.
Node์ ํ์ฌ Sprite Animation Frame์ ๊ทธ๋ฆฝ๋๋ค.
func draw()
self:spr()
endSprite ์ ์๋ ๋ค์ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค.
bit8.sprites.toml
์์ธํ ๋ด์ฉ์ Sprite ๋ฐ Animation ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
BIT8_CLI๋ Camera Node๋ฅผ ์ง์ํฉ๋๋ค.
ํ์ฑ Camera๋ ์ง์๋๋ ์๋ ์ขํ ๊ธฐ๋ฐ ๊ทธ๋ฆฌ๊ธฐ ์์ ์ ์ํฅ์ ์ค๋๋ค.
Camera ์ขํ๋ 64 ร 64 Viewport์ ์ค์ฌ์ ๋ํ๋ ๋๋ค.
cls(), pix(), rectfill() ๊ฐ์ ํ๋ฉด ์ขํ ๊ธฐ๋ฐ ๊ทธ๋ฆฌ๊ธฐ ์์
์ Camera ์ด๋์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Camera ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ค์ ์์ ๋ Sprite๊ฐ ์ฐ๊ฒฐ๋์ด ์๊ณ ํด๋น Animation์ด ์ ์๋ Node๋ฅผ ๊ฐ์ ํฉ๋๋ค.
func update()
if btn(LEFT) then
self:move(-1, 0)
self:play("walk")
elseif btn(RIGHT) then
self:move(1, 0)
self:play("walk")
else
self:play("idle")
end
end
func draw()
self:spr()
endAnimation ์ด๋ฆ์ Sprite Definition์ ์กด์ฌํด์ผ ํฉ๋๋ค.
์ด ํ์ด์ง๋ BIT8_CLI 0.1.0์์ ํ๋ฆฝ๋ API ๊ธฐ๋ฅ์ ์ ๋ฆฌํ ๋ฌธ์์ ๋๋ค. ์ ์ฒด ํจ์ ์๊ทธ๋์ฒ์ ํน์ํ ๋์์ ํด๋น ๋ฆด๋ฆฌ์ค์ ์์ค ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ธํด์ผ ํฉ๋๋ค.
Current Version: 0.1.0