Skip to main content

Overview

Core functions provide essential game loop utilities, frame timing, random number generation, and window lifecycle management.

Timing Functions

setTargetFPS

Sets the target frames-per-second for the game loop.
fps
Number
required
Target frames per second (typically 60)
import "raylib" for Raylib

Raylib.initWindow(800, 450, "FPS Example")
Raylib.setTargetFPS(60)

while (!Raylib.windowShouldClose()) {
  Raylib.beginDrawing()
  Raylib.clearBackground(Color.RayWhite)
  Raylib.endDrawing()
}

getFrameTime

Returns the time in seconds for the last frame drawn (delta time). Returns: Number - Time in seconds between frames
var deltaTime = Raylib.getFrameTime()
// Use for frame-independent movement
player.x = player.x + (speed * deltaTime)

getTime

Returns elapsed time in seconds since window initialization. Returns: Number - Total elapsed time in seconds
var elapsedTime = Raylib.getTime()
System.print("Game has been running for %(elapsedTime) seconds")

getFPS

Returns the current frames per second. Returns: Number - Current FPS
var fps = Raylib.getFPS()
Raylib.drawText("FPS: %(fps)", 10, 10, 20, Color.Green)

Random Number Generation

setRandomSeed

Sets the seed for random number generation.
seed
Number
required
Seed value for the random number generator
Raylib.setRandomSeed(12345)

getRandomValue

Generates a random integer between min and max (inclusive).
min
Number
required
Minimum value (inclusive)
max
Number
required
Maximum value (inclusive)
Returns: Number - Random integer between min and max
var buildings = []
var i = 0
while (i < 100) {
  var height = Raylib.getRandomValue(100, 800)
  var width = Raylib.getRandomValue(50, 200)
  buildings.add(Rectangle.new(-6000 + spacing, screenHeight - height, width, height))
  i = i + 1
}

System Functions

waitTime

Wait for some time (halt program execution).
seconds
Number
required
Time to wait in seconds
Raylib.waitTime(1.0)  // Wait 1 second

takeScreenshot

Takes a screenshot of current screen (filename extension defines format).
fileName
String
required
Path to save the screenshot (supports .png, .bmp, .tga, .jpg)
if (Raylib.isKeyPressed(KeyCode.KEY_S)) {
  Raylib.takeScreenshot("screenshot.png")
}

setConfigFlags

Setup init configuration flags (before window creation).
flags
Number
required
Configuration flags (bitwise OR combination)
// Must be called before initWindow
Raylib.setConfigFlags(ConfigFlags.FLAG_VSYNC_HINT)
Raylib.initWindow(800, 450, "My Game")

openURL

Open URL with default system browser (if available).
url
String
required
URL to open
if (Raylib.isKeyPressed(KeyCode.KEY_H)) {
  Raylib.openURL("https://github.com/jossephus/talon")
}

setTraceLogLevel

Set the current trace log level.
logLevel
Number
required
Log level (0=ALL, 1=TRACE, 2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL, 7=NONE)
Raylib.setTraceLogLevel(3)  // Show only INFO and above

Advanced Functions

swapScreenBuffer

Swaps front and back buffers (manual frame control).
// Advanced usage - typically handled by endDrawing()
Raylib.swapScreenBuffer()

pollInputEvents

Register all input events (manual input polling).
// Advanced usage - typically handled automatically
Raylib.pollInputEvents()

Best Practices

Always call setTargetFPS(60) after initWindow to ensure consistent frame rate across different hardware.
Use getFrameTime() for frame-independent movement to ensure your game runs consistently regardless of frame rate.
setConfigFlags() must be called before initWindow() to take effect.

Build docs developers (and LLMs) love