Ray Low Level API

Der Low Level API (Engine.*) ist für die vielseitige Erstellung von 2D-Spielen konzipiert.

Jede API-Funktion benötigt einen Parameter. Der Parameter muss ein Wörterbuch sein und Argumente müssen als Schlüssel-Wert-Paare gespeichert werden.

Skelton

// Definieren Sie keine Variablen außerhalb von Funktionen, da es sich um einen Syntaxfehler handelt.

// Wird aufgerufen, wenn das Fenster erstellt wird.
func setup() {
    // Gibt die Fensterkonfiguration zurück.
    return {
        width: 1280,
        height: 720,
        title: "My First Game"
    };
}

// Wird einmal aufgerufen, wenn das Spiel beginnt.
func start() {
    // Hier sollten globale Variablen definiert werden.
    posX = 0;
    posY = 0;

    // Erstellen Sie eine weiße 100x100-Textur.
    tex = Engine.createColorTexture({
        width: 100,
        height: 100,
        r: 255, g: 255, b: 255, a: 255
    });
}

// Jeder Frame wird vor dem Rendern aufgerufen.
func update() {
    posX = Engine.mousePosX;
    posY = Engine.mousePosY;
}

// Jeder Frame wird aufgerufen, um Grafiken zu rendern.
func render() {
    Engine.draw({ texture: tex, x: posX, y: posY });
}

Debuggen

drucken()

Diese API gibt eine Zeichenfolge aus oder gibt ein Objekt aus. Akzeptiert nur ein Nicht-Wörterbuch-Argument.

func dumpEnemies() {
    if (Engine.isGamepadXPressed) {
        print("[Current emenies]");
        print(enemies);
    }
}

Zeit

Absolute Zeit

VariableBeschreibung
Engine.millisecZeit in Millisekunden.
func update() {
    // Rufen Sie die Sekunden seit dem letzten Anruf ab.
    var curTime = Engine.millisec;
    var dt = (curTime - lastTime) * 0.001;
    lastTime = curTime;

    updateCharacters(dt);
}

Engine.getDate()

Gibt ein Datumswörterbuch zurück.

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;
}

Eingang

Dies sind Variablen, keine Funktionen.

VariableBeschreibung
Engine.mousePosXMausposition X.
Engine.mousePosYMausposition Y.
Engine.isMouseLeftPressedZustand der linken Maustaste.
Engine.isMouseRightPressedZustand der rechten Maustaste.
Engine.isEscapeKeyPressedZustand der Escape-Taste.
Engine.isReturnKeyPressedGibt den Schlüsselstatus zurück.
Engine.isSpaceKeyPressedStatus der Leertaste.
Engine.isTabKeyPressedStatus der Tabulatortaste.
Engine.isBackspaceKeyPressedStatus der Rücktaste.
Engine.isDeleteKeyPressedSchlüsselstatus löschen.
Engine.isHomeKeyPressedZustand des Home-Schlüssels.
Engine.isEndKeyPressedSchlüsselzustand beenden.
Engine.isPageupKeyPressedZustand des PageUp-Schlüssels.
Engine.isPagedownKeyPressedStatus des PageDown-Schlüssels.
Engine.isShiftKeyPressedStatus der Umschalttaste.
Engine.isControlKeyPressedStatus des Steuerschlüssels.
Engine.isAltKeyPressedStatus der Alt-Taste.
Engine.isUpKeyPressedStatus der Aufwärtspfeiltaste.
Engine.isDownKeyPressedStatus der Abwärtspfeiltaste.
Engine.isRightKeyPressedStatus der rechten Pfeiltaste.
Engine.isLeftKeyPressedZustand der linken Pfeiltaste.
Engine.isAKeyPressedSchlüsselzustand „A“.
Engine.isBKeyPressedSchlüsselzustand „B“.
Engine.isCKeyPressedZustand der C-Taste.
Engine.isDKeyPressed'D'-Schlüsselzustand.
Engine.isEKeyPressed'E'-Schlüsselzustand.
Engine.isFKeyPressed„F“-Tastenzustand.
Engine.isGKeyPressed'G'-Schlüsselzustand.
Engine.isHKeyPressed'H'-Schlüsselzustand.
Engine.isIKeyPressedSchlüsselzustand „I“.
Engine.isJKeyPressed'J'-Schlüsselzustand.
Engine.isKKeyPressedSchlüsselzustand „K“.
Engine.isLKeyPressed'L'-Schlüsselzustand.
Engine.isMKeyPressed'M'-Schlüsselzustand.
Engine.isNKeyPressed'N'-Schlüsselzustand.
Engine.isOKeyPressed„O“-Schlüsselzustand.
Engine.isPKeyPressed'P'-Tastenzustand.
Engine.isQKeyPressedStatus der „Q“-Taste.
Engine.isRKeyPressed'R'-Tastenzustand.
Engine.isSKeyPressed'S'-Schlüsselzustand.
Engine.isTKeyPressed'T'-Schlüsselzustand.
Engine.isUKeyPressed'U'-Schlüsselzustand.
Engine.isVKeyPressed'V'-Schlüsselzustand.
Engine.isWKeyPressed'W'-Schlüsselzustand.
Engine.isXKeyPressed'X'-Schlüsselzustand.
Engine.isYKeyPressed'Y'-Schlüsselzustand.
Engine.isZKeyPressedSchlüsselzustand „Z“.
Engine.is1KeyPressedSchlüsselzustand „1“.
Engine.is2KeyPressedSchlüsselzustand „2“.
Engine.is3KeyPressedSchlüsselzustand „3“.
Engine.is4KeyPressedSchlüsselzustand „4“.
Engine.is5KeyPressedSchlüsselzustand „5“.
Engine.is6KeyPressedSchlüsselzustand „6“.
Engine.is7KeyPressedSchlüsselzustand „7“.
Engine.is8KeyPressedSchlüsselzustand „8“.
Engine.is9KeyPressedSchlüsselzustand „9“.
Engine.is0KeyPressedSchlüsselstatus „0“.
Engine.isF1KeyPressedStatus der F1-Taste.
Engine.isF2KeyPressedStatus der F2-Taste.
Engine.isF3KeyPressedStatus der F3-Taste.
Engine.isF4KeyPressedStatus der F4-Taste.
Engine.isF5KeyPressedStatus der F5-Taste.
Engine.isF6KeyPressedStatus der F6-Taste.
Engine.isF7KeyPressedStatus der F7-Taste.
Engine.isF8KeyPressedStatus der F8-Taste.
Engine.isF9KeyPressedStatus der F9-Taste.
Engine.isF10KeyPressedStatus der F10-Taste.
Engine.isF11KeyPressedStatus der F11-Taste.
Engine.isF12KeyPressedStatus der F12-Taste.
Engine.isGamepadUpPressedStatus des Aufwärtspfeils des Gamepads.
Engine.isGamepadDownPressedStatus des Gamepad-Pfeils nach unten.
Engine.isGamepadLeftPressedStatus des linken Pfeils des Gamepads.
Engine.isGamepadRightPressedStatus des rechten Pfeils des Gamepads.
Engine.isGamepadAPressedZustand der Gamepad-A-Taste.
Engine.isGamepadBPressedZustand der Gamepad-B-Taste.
Engine.isGamepadXPressedStatus der Gamepad X-Taste.
Engine.isGamepadYPressedStatus der Y-Taste des Gamepads.
Engine.isGamepadLPressedStatus der L-Taste des Gamepads.
Engine.isGamepadRPressedStatus der R-Taste des Gamepads.
Engine.gamepadAnalogX1Gamepad analog 1 X (-32768, 32767)
Engine.gamepadAnalogY1Gamepad analog 1 J (-32768, 32767)
Engine.gamepadAnalogX2Gamepad analog 2 X (-32768, 32767)
Engine.gamepadAnalogY2Gamepad analog 2 Y (-32768, 32767)
Engine.gamepadAnalogLGamepad analog L (-32768, 32767)
Engine.gamepadAnalogRGamepad analog R (-32768, 32767)
func update() {
    if (Engine.isMouseLeftPressed) {
        player.x = player.x + 100;
    }
}

Rendern

Engine.createColorTexture()

Diese API erstellt eine Textur mit der angegebenen Farbe und gibt eine Textur zurück.

ArgumentnameBeschreibung
BreiteTexturbreite.
HöheTexturhöhe.
RRote Farbe.
GGrüne Farbe.
BBlaue Farbe.
AAlpha-Farbe.
func createBlockTexture() {
    blockTex = Engine.createColorTexture({
                   width:  16,
                   height: 16,
                   r:      255,
                   g:      255,
                   b:      255,
                   a:      255
               });
}

Engine.loadTexture()

Diese API lädt eine Textur aus Assets und gibt eine Textur zurück.

ArgumentnameBeschreibung
DateiZu ladender Dateiname.
func loadPlayerTexture() {
   playerTex = Engine.loadTexture({
                   file: "player.png"
               });

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

Engine.destroyTexture()

Diese API zerstört eine Textur.

ArgumentnameBeschreibung
TexturTextur.
func destroyPlayerTexture() {
    Engine.loadTexture({
        texture: playerTex
    });
}

Engine.renderTexture()

Diese API rendert eine Textur auf dem Bildschirm.

ArgumentnameBeschreibung
dstLeftBildschirmkoordinate X.
dstTopBildschirmkoordinate Y.
dstWidthBreite im Bildschirm.
dstHeightHöhe im Bildschirm.
TexturTextur.
srcLeftTextur oben links X.
srcTopTextur oben links Y.
srcWidthBreite des Texturrechtecks.
srcHeightHöhe des Texturrechtecks.
AlphaAlphawert (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()

Diese API rendert eine Textur auf dem Bildschirm (eine einfachere Version von __TECH0__).

ArgumentnameBeschreibung
TexturTextur.
XBildschirmkoordinate X.
jBildschirmkoordinate Y.
func renderPlayer() {
    Engine.draw({
        texture: playerTex,
        x:       playerPos.x,
        y:       playerPos.y
    });
}

Engine.renderTexture3D()

Diese API rendert eine Textur auf dem Bildschirm.

ArgumentnameBeschreibung
x1Bildschirmkoordinate X1.
y1Bildschirmkoordinate Y1.
x2Bildschirmkoordinate X2.
y2Bildschirmkoordinate Y2.
x3Bildschirmkoordinate X3.
y3Bildschirmkoordinate Y3.
x4Bildschirmkoordinate X4.
y4Bildschirmkoordinate Y4.
TexturTextur.
srcLeftTextur oben links X.
srcTopTextur oben links Y.
srcWidthBreite des Texturrechtecks.
srcHeightHöhe des Texturrechtecks.
AlphaAlphawert (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()

Diese API lädt eine Asset-Schriftartdatei in einen angegebenen Schriftarten-Slot.

ArgumentnameBeschreibung
SlotSchriftarten-Slot-Index. (0-3)
DateiZu ladender Dateiname.
func loadNotoSansFont() {
    Engine.loadFont({ slot: 0, file: "NotoSans.ttf" });
}

Engine.createTextTexture()

Diese API erstellt eine Textur und zeichnet einen Text darauf.

ArgumentnameBeschreibung
SlotSchriftarten-Slot-Index. (0-3)
TextText zum Zeichnen.
GrößeSchriftgröße.
RRote Farbe.
GGrüne Farbe.
BBlaue Farbe.
AAlpha-Farbe.
func createScoreTexture() {
    scoreTex = Engine.createTextTexture({
                   slot: 0,
                   text: "Score: " + score,
                   size: 32,
                   r:    255,
                   g:    255,
                   b:    255,
                   a:    255
               });
}

Klang

Engine.playSound()

Diese API startet die Wiedergabe einer Sound-Asset-Datei auf einer angegebenen Soundspur.

ArgumentnameBeschreibung
StromTitelindex. (0-3)
DateiDatei zum Abspielen.
func playJumpSound() {
    Engine.playSound({ stream: 0, file: "jump.ogg" });
}

Engine.playSoundLoop()

Diese API startet die Wiedergabe einer Sound-Asset-Datei auf einer angegebenen Soundspur.

ArgumentnameBeschreibung
StromTitelindex. (0-3)
DateiDatei zum Abspielen.
func playBGM() {
    Engine.playSoundLoop({ stream: 0, file: "jump.ogg" });
}

Engine.stopSound()

Diese API stoppt die Tonwiedergabe auf einer bestimmten Tonspur.

ArgumentnameBeschreibung
StromTitelindex. (0-3)
func playJumpSound() {
    Engine.stopSound({ stream: 0 });
}

Engine.setSoundVolume()

Diese API legt die Lautstärke für eine bestimmte Tonspur fest.

ArgumentnameBeschreibung
StromTitelindex. (0-3, -1 für Master)
VolumenLautstärkewert. (0-1.0)
func playJumpSound() {
    Engine.setSoundVolume({
        stream: 0,
        volume: 1.0
    });
}

Daten speichern

Engine.writeSaveData()

Diese API schreibt einen Speicherdatenwert, der einer Schlüsselzeichenfolge entspricht. Wenn der Speicherdatenwert zu groß ist, schlägt diese API fehl.

ArgumentnameBeschreibung
SchlüsselSchlüsselzeichenfolge.
WertWert. (Ganzzahl, Gleitkomma, Array oder Wörterbuch)

Engine.readSaveData()

Diese API liest den Speicherdatenwert, der einer Schlüsselzeichenfolge entspricht. Der Rückgabewert ist ein Objekt, das einen gespeicherten Datenwert darstellt. Diese API schlägt fehl, wenn der angegebene Schlüssel nicht verfügbar ist.

ArgumentnameBeschreibung
SchlüsselSchlüsselzeichenfolge.

Engine.checkSaveData()

Diese API prüft, ob die Speicherdaten für eine Schlüsselzeichenfolge vorhanden sind oder nicht. Der Rückgabewert ist ein boolescher Wert.

ArgumentnameBeschreibung
SchlüsselSchlüsselzeichenfolge.