Skip to content

Runtime API ja

Shiraishi_AKi edited this page Oct 6, 2026 · 1 revision

Runtime API

English | 繁體中文 | 日本語 | 한국어

このページでは、BIT8_CLI 0.1.0 の Runtime スクリプト API を紹介します。

BIT8_CLI は Lua 5.4 を使用し、スクリプトの拡張子は .b8 です。また、function の代わりに func を使用できます。

Runtime の概要

項目 仕様
Framebuffer 64 × 64 ピクセル
シミュレーション 固定 30 Hz
Tile サイズ 8 × 8 ピクセル
Map サイズ 最大 256 × 256 Tiles
スクリプト言語 Lua 5.4
拡張子 .b8

ライフサイクル関数

init()

ゲームの初期化時に呼び出されます。

func init()
    x = 32
    y = 32
end

update()

ゲームのシミュレーションロジックを処理します。

func update()
    x = x + 1
end

シミュレーションは固定 30 Hz で更新されます。

draw()

現在のゲーム状態を描画します。

func draw()
    cls(0)
    pix(x, y, 7)
end

描画 API

cls(color)

指定したパレットカラーで framebuffer をクリアします。

cls(0)

エイリアス clear() も使用できます。

pix(x, y, color)

指定したスクリーン座標にピクセルを描画します。

pix(32, 32, 7)

エイリアス pixel() も使用できます。

rectfill(...)

塗りつぶされた矩形を描画します。

rectfill(10, 10, 20, 20, 7)

spr(...)

登録済み Asset から Tile を描画します。

BIT8_CLI は安定した Asset ID に対応しています。

spr(A4, 16, 16)

互換性のため、従来の数値 Sprite 参照も引き続き使用できます。

map(...)

プロジェクトに登録された Tile を使用して Map を描画します。

func draw()
    cls(0)
    map()
end

Map 描画はアクティブな Camera の影響を受ける場合があります。

詳しくは Map を参照してください。

入力 API

btn(button)

ボタンが現在押され続けているかを確認します。

if btn(LEFT) then
    x = x - 1
end

使用できるボタン定数:

UP
DOWN
LEFT
RIGHT
A
B

btnp(button)

ボタンが新しく押されたかを確認します。

if btnp(A) then
    print("A pressed")
end

btn() とは異なり、押下イベントの処理に適しています。

Map API

mget(...)

Map から Tile の値を読み取ります。

mset(...)

Runtime Map の Tile 値を変更します。

Map 座標、Tile ID、編集動作については Map を参照してください。

Node API

Node Script では self を使用して対応する Runtime Node にアクセスできます。

func update()
    self.x = self.x + 1
end

Node プロパティ

プロパティ 説明
self.id 安定した Node ID
self.name Node 名
self.x ワールド X 座標
self.y ワールド Y 座標
self.enabled Node の有効状態

self:collide(dx, dy)

指定した移動量で Node が移動した場合、対応する衝突ジオメトリと衝突するかを確認します。

if self:collide(1, 0) then
    print("Blocked")
end

この関数は衝突を確認するだけで、Node を移動しません。

衝突判定には、有効な Node Box Collider と Solid Tile が使用されます。

self:move(dx, dy)

衝突を考慮しながら Node の移動を試みます。

self:move(1, 0)

移動は X 軸、次に Y 軸の順で処理されます。

BIT8_CLI 0.1.0 は基本的な衝突対応移動を提供しますが、完全な物理エンジンではありません。

Sprite と Animation API

self:sprite(name)

登録済み Sprite Definition を Node に割り当てます。

self:sprite("Player")

self:play(animation)

現在の Sprite に定義された Animation を再生します。

self:play("walk")

同じ Animation を繰り返し指定しても、不必要に最初から再生されることはありません。

self:spr()

Node の現在の Sprite Animation Frame を描画します。

func draw()
    self:spr()
end

Sprite 定義は次のファイルに保存されます。

bit8.sprites.toml

詳しくは Sprite と Animation を参照してください。

Camera

BIT8_CLI は Camera Node に対応しています。

アクティブな Camera は、対応するワールド座標描画に影響します。

Camera 座標は 64 × 64 Viewport の中心を表します。

cls()、pix()、rectfill() などのスクリーン座標描画は Camera によって移動しません。

詳しくは Camera を参照してください。

例:Node の移動とアニメーション

次の例は、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()
end

Animation 名は Sprite Definition に存在する必要があります。

関連ドキュメント

このページは BIT8_CLI 0.1.0 で確立された API 機能をまとめたものです。完全な関数シグネチャや特殊な動作については、対応するリリースのソースコードを参照してください。

Clone this wiki locally