R-BASIC (Robot BASIC) ドキュメント
← RBS 総合ヘルプ・プレイヤーズガイド (player_guide.md)
Robot Building Simulator (RBS) の自律ロボット制御用スクリプト言語 R-BASIC のマニュアルです。
📚 ドキュメント構成
- 言語仕様書 (rbasic_spec.md)
- R-BASIC の完全な言語仕様、文法、演算子優先順位、組み込み定数、センシング関数、物理アクション命令、リソース制限を網羅しています。
- 入門・実践チュートリアル (rbasic_tutorial.md)
- 初めてスクリプトを書く人向けに、パトロールから資材運搬、自律移動(
find/go)、変数・メモリー配列によるマルチタスク、マーカー連携、座標指定ナビゲーション(target_at/move_to)までをステップ形式で解説しています。
⚡ クイックチートシート (Quick Reference)
物理アクション命令 (1 Tick 消費)
| 命令 | 動作 |
|---|---|
get |
正面の資材スタックから材料を 1 個拾う |
put |
手持ちの材料を正面の建築指示に投入、または地面に置く |
step (または move) |
前方に 1 歩進む(1段の階段・段差昇降対応) |
turn <方向式> |
向きを変える(定数・変数・式を指定可能。例: turn NORTH + 1) |
go |
find(...) でロックしたターゲットへ最短経路で 1 歩進む |
wait |
その場で何もしないで 1 Tick 待機 |
制御構文
| 構文 | 動作 |
|---|---|
*label または label: |
ジャンプ先ラベルの定義 |
goto *label |
指定ラベルへ無条件ジャンプ |
if <条件> then <文> [else <文>] |
条件に応じて1文を実行(then 必須、else は省略可能) |
gosub *label |
サブルーチン呼び出し(最大128段) |
return |
サブルーチンから復帰 |
end |
プログラム終了(ロボットを待機・スリープ状態にする) |
状態変数・センシング関数 (0 Tick / 即時評価)
| 式・関数 | 戻り値・内容 |
|---|---|
carrying |
手に持っている材料種別 (NONE, LIGHT, BALANCED, HEAVY, TENSILE) |
units |
手持ち材料のユニット数 (0〜8) |
pos_x, pos_y, pos_z |
現在座標 (X, Y, Z) |
dir |
現在の方角 (NORTH, EAST, SOUTH, WEST) |
assigned_mat |
UIで設定された担当材料種別 |
assigned_part |
UIで設定された担当部材種別 (PILLAR, FLOOR, STAIR, WALL) |
check(dir) |
指定方向のセル種別 (EMPTY, MATERIAL, ORDER, CONSTRUCTION, MARKER) |
material(dir) |
指定方向の材料種別 |
order(dir) |
指定方向の予定部材種別 |
marker(dir) |
指定方向のマーカー形状 (MK_RED_CONE など) |
find(target) |
対象を表す定数・変数・式を評価して探索し、ロック(成功時 1、失敗時 0) |
has_target |
ナビゲーション目標が設定済みなら 1、未設定なら 0 |
target_x, target_y, target_z |
対象物のセル座標(未設定時は -1) |
dest_x, dest_y, dest_z |
ロボットが立つ作業位置・移動先のセル座標(未設定時は -1) |
go_result |
直前の go の結果 (GO_NONE, GO_MOVED, GO_ARRIVED, GO_FAILED) |
target_at(x, y, z) |
指定セルの対象物(材料・指示・施工中・マーカー)の作業位置を目標設定(成功時 1、失敗時 0) |
move_to(x, y, z) |
歩行・到達可能な指定セルそのものを移動先に目標設定(成功時 1、失敗時 0) |
メモリ・変数・ログ
| 構文 | 説明 |
|---|---|
<変数名> = <式> |
ローカル変数への代入(最大128個、初期値0) |
mem[<式>] = <式> |
メモリー配列への書き込み(インデックス 0〜63) |
mem[<式>] |
メモリー配列からの読み込み |
print <式> |
ログ出力およびロボット頭上にフキダシ表示(タグ付き定数はシンボル名に変換、文字列・数値連結対応) |
定数シンボル
- 方向 (相対):
FRONT(下位値0),RIGHT(1),BACK(2),LEFT(3) - 方角 (絶対):
NORTH(下位値0),EAST(1),SOUTH(2),WEST(3) - 材料:
NONE(下位値0),GROUND(1),LIGHT(2),BALANCED(3),HEAVY(4),TENSILE(5) - 部材:
PART_NONE(下位値0),PILLAR(1),FLOOR(2),WALL(3),STAIR(4) - セル:
EMPTY(下位値0),MATERIAL(1),ORDER(2),CONSTRUCTION(3),MARKER(8) - マーカー:
MK_NONE(下位値0),MK_RED_CONE(下位値1),MK_BLUE_CUBE(2),MK_GREEN_SPHERE(3),MK_YELLOW_DIAMOND(4),MK_PURPLE_CYLINDER(5) - ナビゲーション結果:
GO_NONE(0),GO_MOVED(1),GO_ARRIVED(2),GO_FAILED(-1)
定数は上位バイトにカテゴリを持つため、下位値が同じ LIGHT、FLOOR、SOUTH、BACK は互いに異なる値です。加減算は可能ですが、命令が値を使う時点でカテゴリと範囲を検査します。PRINT 文で出力する際は、対応するシンボル名(例: "HEAVY", "NORTH")として自動的に文字列変換されます。