A simple procedural language with hot code reloading
Find a file
2025-12-25 00:14:47 +02:00
assets/fonts init 2025-12-13 16:08:41 +02:00
benches hotwatch only responds once 2025-12-21 14:28:49 +02:00
games move games to dir 2025-12-25 00:14:47 +02:00
html trim deps and make wasm 2025-12-24 23:43:34 +02:00
src move games to dir 2025-12-25 00:14:47 +02:00
.gitignore trim deps and make wasm 2025-12-24 23:43:34 +02:00
Cargo.lock trim deps and make wasm 2025-12-24 23:43:34 +02:00
Cargo.toml trim deps and make wasm 2025-12-24 23:43:34 +02:00
LICENSE init 2025-12-13 16:08:41 +02:00
Makefile move games to dir 2025-12-25 00:14:47 +02:00
readme.md update readme 2025-12-24 22:25:23 +02:00
rustfmt.toml init 2025-12-13 16:08:41 +02:00

Ayin

  • Tiny, procedural, gamedev
  • only user input is controller input
  • Live code reload
  • int, float, string, char, bool
  • arrays and objects
  • variables and functions
  • if, loop, break, return
  • function calls
  • first class functions
let setup = fn() {
  return {
    .player: { .position: { .x: 10, .y: 20 }, },
  }
}

let update = fn(state, events) {
  let new = 100
  state.player.position.x = new
  state
}

let draw = fn(frame, state) {
  frame_clear(0,0,0)
}

let migrate = fn(state) {
    state
}
  • dynamic software updating could occur every frame
  • user might be required to migrate the state (migrate function is hashed and only applied on updates when it is changed)

Build instructions

WASM

rustup target add wasm32-unknown-unknown
make wasm