Repository navigation
Runtime API ja
このページでは、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