/luapixels

Implement event functions in Lua and handle keypresses and draw pixels to a 320x200 256 color canvas backed by GLFW and OpenGL

Primary LanguageGoBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

luapixels

The beginnings of what could be a game engine for using GLFW + Go + Lua.

game.lua + results

Example use

main.go:

package main

import (
    "log"

    _ "embed"

    "github.com/xyproto/luapixels"
)

//go:embed game.lua
var luaCode string

func main() {
    if err := luapixels.Run(luaCode); err != nil {
        log.Fatalln(err)
    }
}

game.lua:

window_title = "Simple Example"

function at_start()
  print("hi")
  -- Set color at palette index 7 to red (RGB 255, 0, 0)
  setpal(7, 255, 0, 0)
end

function at_every_frame()
  -- Set the background color to blue (RGB 0, 128, 255)
  background(0, 128, 255)
  -- At (100, 100), draw a red pixel (index 7 in the palette)
  plot(100, 100, 7)
end

function at_key_pressed()
  quit()
end

function at_end()
  print("bye!")
end

Performance

There is a lot of room for improvements when it comes to performance, since this implementation is fresh and not yet optimized.

The pixels are quads right now, but a texture could be used instead. This would require no changes from the Lua code, though.

General info

  • License: BSD-3
  • Version: 0.0.0