Ray Low Level API

Low Level API (Engine.*) は、汎用的な 2D ゲーム制作向けに設計されています。

すべての API 関数はたった 1 つの引数を受け取ります。 その引数は辞書オブジェクトでなければならず、関数に渡すそれぞれのオプションは、キーと値のペアとして辞書に格納する必要があります。 便宜上、そのオプションのことを、このドキュメントでは引数と表現しています。

骨組み

// 関数の外で変数を定義しないでください。構文エラーになります。

// ウィンドウが作成されたときに呼び出されます。
func setup() {
    // ウィンドウ設定を返します。
    return {
        width: 1280,
        height: 720,
        title: "My First Game"
    };
}

// ゲーム開始時に一度だけ呼び出されます。
func start() {
    // グローバル変数はここで定義してください。
    posX = 0;
    posY = 0;

    // 白い 100x100 のテクスチャを作成します。
    tex = Engine.createColorTexture({
        width: 100,
        height: 100,
        r: 255, g: 255, b: 255, a: 255
    });
}

// 描画前に毎フレーム呼び出されます。
func update() {
    posX = Engine.mousePosX;
    posY = Engine.mousePosY;
}

// グラフィックを描画するために毎フレーム呼び出されます。
func render() {
    Engine.draw({ texture: tex, x: posX, y: posY });
}

デバッグ

print()

この API は文字列を表示するか、オブジェクトをダンプします。 辞書ではない引数だけを取ります。

func dumpEnemies() {
    if (Engine.isGamepadXPressed) {
        print("[現在の敵]");
        print(enemies);
    }
}

時間

絶対時間

変数説明
Engine.millisecミリ秒単位の時刻。
func update() {
    // 前回の呼び出しからの経過秒数を取得します。
    var curTime = Engine.millisec;
    var dt = (curTime - lastTime) * 0.001;
    lastTime = curTime;

    updateCharacters(dt);
}

Engine.getDate()

日付の辞書を返します。

func frame() {
    var date = Engine.getDate({});

    var year  = date.year;
    var month = date.month;
    var day   = date.day;
    var hour  = date.hour;
    var min   = date.minute;
    var sec   = date.second;
}

入力

これらは関数ではなく変数です。

変数説明
Engine.mousePosXマウス位置 X。
Engine.mousePosYマウス位置 Y。
Engine.isMouseLeftPressedマウス左ボタンの状態。
Engine.isMouseRightPressedマウス右ボタンの状態。
Engine.isEscapeKeyPressedEscape キーの状態。
Engine.isReturnKeyPressedReturn キーの状態。
Engine.isSpaceKeyPressedSpace キーの状態。
Engine.isTabKeyPressedTab キーの状態。
Engine.isBackspaceKeyPressedBackspace キーの状態。
Engine.isDeleteKeyPressedDelete キーの状態。
Engine.isHomeKeyPressedHome キーの状態。
Engine.isEndKeyPressedEnd キーの状態。
Engine.isPageupKeyPressedPageUp キーの状態。
Engine.isPagedownKeyPressedPageDown キーの状態。
Engine.isShiftKeyPressedShift キーの状態。
Engine.isControlKeyPressedControl キーの状態。
Engine.isAltKeyPressedAlt キーの状態。
Engine.isUpKeyPressed上矢印キーの状態。
Engine.isDownKeyPressed下矢印キーの状態。
Engine.isRightKeyPressed右矢印キーの状態。
Engine.isLeftKeyPressed左矢印キーの状態。
Engine.isAKeyPressed'A' キーの状態。
Engine.isBKeyPressed'B' キーの状態。
Engine.isCKeyPressed'C' キーの状態。
Engine.isDKeyPressed'D' キーの状態。
Engine.isEKeyPressed'E' キーの状態。
Engine.isFKeyPressed'F' キーの状態。
Engine.isGKeyPressed'G' キーの状態。
Engine.isHKeyPressed'H' キーの状態。
Engine.isIKeyPressed'I' キーの状態。
Engine.isJKeyPressed'J' キーの状態。
Engine.isKKeyPressed'K' キーの状態。
Engine.isLKeyPressed'L' キーの状態。
Engine.isMKeyPressed'M' キーの状態。
Engine.isNKeyPressed'N' キーの状態。
Engine.isOKeyPressed'O' キーの状態。
Engine.isPKeyPressed'P' キーの状態。
Engine.isQKeyPressed'Q' キーの状態。
Engine.isRKeyPressed'R' キーの状態。
Engine.isSKeyPressed'S' キーの状態。
Engine.isTKeyPressed'T' キーの状態。
Engine.isUKeyPressed'U' キーの状態。
Engine.isVKeyPressed'V' キーの状態。
Engine.isWKeyPressed'W' キーの状態。
Engine.isXKeyPressed'X' キーの状態。
Engine.isYKeyPressed'Y' キーの状態。
Engine.isZKeyPressed'Z' キーの状態。
Engine.is1KeyPressed'1' キーの状態。
Engine.is2KeyPressed'2' キーの状態。
Engine.is3KeyPressed'3' キーの状態。
Engine.is4KeyPressed'4' キーの状態。
Engine.is5KeyPressed'5' キーの状態。
Engine.is6KeyPressed'6' キーの状態。
Engine.is7KeyPressed'7' キーの状態。
Engine.is8KeyPressed'8' キーの状態。
Engine.is9KeyPressed'9' キーの状態。
Engine.is0KeyPressed'0' キーの状態。
Engine.isF1KeyPressedF1 キーの状態。
Engine.isF2KeyPressedF2 キーの状態。
Engine.isF3KeyPressedF3 キーの状態。
Engine.isF4KeyPressedF4 キーの状態。
Engine.isF5KeyPressedF5 キーの状態。
Engine.isF6KeyPressedF6 キーの状態。
Engine.isF7KeyPressedF7 キーの状態。
Engine.isF8KeyPressedF8 キーの状態。
Engine.isF9KeyPressedF9 キーの状態。
Engine.isF10KeyPressedF10 キーの状態。
Engine.isF11KeyPressedF11 キーの状態。
Engine.isF12KeyPressedF12 キーの状態。
Engine.isGamepadUpPressedゲームパッド上方向の状態。
Engine.isGamepadDownPressedゲームパッド下方向の状態。
Engine.isGamepadLeftPressedゲームパッド左方向の状態。
Engine.isGamepadRightPressedゲームパッド右方向の状態。
Engine.isGamepadAPressedゲームパッド A ボタンの状態。
Engine.isGamepadBPressedゲームパッド B ボタンの状態。
Engine.isGamepadXPressedゲームパッド X ボタンの状態。
Engine.isGamepadYPressedゲームパッド Y ボタンの状態。
Engine.isGamepadLPressedゲームパッド L ボタンの状態。
Engine.isGamepadRPressedゲームパッド R ボタンの状態。
Engine.gamepadAnalogX1ゲームパッドアナログ 1 X (-32768, 32767)。
Engine.gamepadAnalogY1ゲームパッドアナログ 1 Y (-32768, 32767)。
Engine.gamepadAnalogX2ゲームパッドアナログ 2 X (-32768, 32767)。
Engine.gamepadAnalogY2ゲームパッドアナログ 2 Y (-32768, 32767)。
Engine.gamepadAnalogLゲームパッドアナログ L (-32768, 32767)。
Engine.gamepadAnalogRゲームパッドアナログ R (-32768, 32767)。
func update() {
    if (Engine.isMouseLeftPressed) {
        player.x = player.x + 100;
    }
}

描画

Engine.createColorTexture()

この API は指定された色のテクスチャを作成し、テクスチャを返します。

引数名説明
widthテクスチャの幅。
heightテクスチャの高さ。
r赤色。
g緑色。
b青色。
aアルファ値。
func createBlockTexture() {
    blockTex = Engine.createColorTexture({
                   width:  16,
                   height: 16,
                   r:      255,
                   g:      255,
                   b:      255,
                   a:      255
               });
}

Engine.loadTexture()

この API はアセットからテクスチャを読み込み、テクスチャを返します。

引数名説明
file読み込むファイル名。
func loadPlayerTexture() {
   playerTex = Engine.loadTexture({
                   file: "player.png"
               });

   var width = playerTex.width;
   var height = playerTex.height;
}

Engine.destroyTexture()

この API はテクスチャを破棄します。

引数名説明
textureテクスチャ。
func destroyPlayerTexture() {
    Engine.loadTexture({
        texture: playerTex
    });
}

Engine.renderTexture()

この API はテクスチャを画面に描画します。

引数名説明
dstLeft画面座標 X。
dstTop画面座標 Y。
dstWidth画面上の幅。
dstHeight画面上の高さ。
textureテクスチャ。
srcLeftテクスチャ左上 X。
srcTopテクスチャ左上 Y。
srcWidthテクスチャ矩形の幅。
srcHeightテクスチャ矩形の高さ。
alphaアルファ値 (0-255)。
func renderPlayer() {
    Engine.renderTexture({
        dstLeft:   playerPos.x,
        dstTop:    playerPos.y,
        dstWidth:  playerTex.width,
	dstHeight: playerTex.height,
        texture:   playerTex,
        srcLeft:   0,
        srcTop:    0,
        srcWidth:  playerTex.width,
        srcHeight: playerTex.height,
        alpha:     255
    });
}

Engine.draw()

この API はテクスチャを画面に描画します (Engine.renderTexture() の簡易版です)。

引数名説明
textureテクスチャ。
x画面座標 X。
y画面座標 Y。
func renderPlayer() {
    Engine.draw({
        texture: playerTex,
        x:       playerPos.x,
        y:       playerPos.y
    });
}

Engine.renderTexture3D()

この API はテクスチャを画面に描画します。

引数名説明
x1画面座標 X1。
y1画面座標 Y1。
x2画面座標 X2。
y2画面座標 Y2。
x3画面座標 X3。
y3画面座標 Y3。
x4画面座標 X4。
y4画面座標 Y4。
textureテクスチャ。
srcLeftテクスチャ左上 X。
srcTopテクスチャ左上 Y。
srcWidthテクスチャ矩形の幅。
srcHeightテクスチャ矩形の高さ。
alphaアルファ値 (0-255)。
func renderPlayer() {
    Engine.renderTexture({
        dstLeft:   playerPos.x,
        dstTop:    playerPos.y,
        dstWidth:  playerTex.width,
	dstHeight: playerTex.height,
        texture:   playerTex,
        srcLeft:   0,
        srcTop:    0,
        srcWidth:  playerTex.width,
        srcHeight: playerTex.height,
        alpha:     255
    });
}

Engine.loadFont()

この API はアセットのフォントファイルを指定されたフォントスロットに読み込みます。

引数名説明
slotフォントスロットのインデックス (0-3)。
file読み込むファイル名。
func loadNotoSansFont() {
    Engine.loadFont({ slot: 0, file: "NotoSans.ttf" });
}

Engine.createTextTexture()

この API はテクスチャを作成し、その上にテキストを描画します。

引数名説明
slotフォントスロットのインデックス (0-3)。
text描画するテキスト。
sizeフォントサイズ。
r赤色。
g緑色。
b青色。
aアルファ値。
func createScoreTexture() {
    scoreTex = Engine.createTextTexture({
                   slot: 0,
                   text: "Score: " + score,
                   size: 32,
                   r:    255,
                   g:    255,
                   b:    255,
                   a:    255
               });
}

サウンド

Engine.playSound()

この API は指定されたサウンドトラックでサウンドアセットファイルの再生を開始します。

引数名説明
streamトラックのインデックス (0-3)。
file再生するファイル。
func playJumpSound() {
    Engine.playSound({ stream: 0, file: "jump.ogg" });
}

Engine.playSoundLoop()

この API は指定されたサウンドトラックでサウンドアセットファイルのループ再生を開始します。

引数名説明
streamトラックのインデックス (0-3)。
file再生するファイル。
func playBGM() {
    Engine.playSoundLoop({ stream: 0, file: "jump.ogg" });
}

Engine.stopSound()

この API は指定されたサウンドトラックのサウンド再生を停止します。

引数名説明
streamトラックのインデックス (0-3)。
func playJumpSound() {
    Engine.stopSound({ stream: 0 });
}

Engine.setSoundVolume()

この API は指定されたサウンドトラックの音量を設定します。

引数名説明
streamトラックのインデックス (0-3、-1 はマスター)。
volume音量値 (0-1.0)。
func playJumpSound() {
    Engine.setSoundVolume({
        stream: 0,
        volume: 1.0
    });
}

セーブデータ

Engine.writeSaveData()

この API はキー文字列に対応するセーブデータ値を書き込みます。 セーブデータ値が大きすぎる場合、この API は失敗します。

引数名説明
keyキー文字列。
value値 (整数、浮動小数点数、配列、または辞書)。

Engine.readSaveData()

この API はキー文字列に対応するセーブデータ値を読み込みます。 戻り値はセーブデータ値を表すオブジェクトです。 指定されたキーが利用できない場合、この API は失敗します。

引数名説明
keyキー文字列。

Engine.checkSaveData()

この API はキー文字列に対応するセーブデータが存在するかどうかを確認します。 戻り値は真偽値です。

引数名説明
keyキー文字列。