Skip to content

Small cross-platform game engine that uses Lua as the scripting frontend

Notifications You must be signed in to change notification settings

blackshibe/luabsge

Repository files navigation

LuaBSGE

Small cross-platform game engine that uses Lua as the scripting frontend.

test raytracer webtest
Test project Ray tracer Test project

Dependencies

Everything is compiled from source.

  • glm
  • glfw
  • freetype2
  • imgui
  • assimp
  • sol2

Compilation

# Native
./setup.sh
./run.sh minimal/native_test

# Web
./setup_web.sh minimal/web_test minimal/web_test
./run_web.sh minimal/web_test minimal/web_test # Path to a folder that will host the wasm files

Features

  • OpenGL window drawing
  • GLM bindings
  • Mesh and texture loading
  • ASCII Font rendering
  • Post process shader effects
  • Ray tracing TBO support
  • ImGUI support
  • ECS-based mesh rendering

TODO

  • Showstoppers

    • The various TODOs
      • Throw error when setting no mesh
      • Make mesh color optional
      • Patching ECS entities at runtime (mesh.color?)
      • Queried mouse position doesn't match up with window position
      • Camera matrix is only sent to the shader once per frame, and afaik right here it's already out of date by 1 frame
      • Remove all remaining functionality from Image and Texture besides loading them
      • Entire engine breaks if BSGE isn't declared
      • Can't use separate cameras for separate buffers(?)
      • Buffer:bind(function() end)
      • mesh_render is a mess
      • VSync controls (ai generated mess)
      • text is stretched
      • window controls (ai generated mess)
      • Don't hardcode js identifiers for bsge canvas and container
      • Gizmo drawing to secondary framebuffers
      • Optimize link times for web
      • Different build types (Release, Debug)
        • Minimize final web build size
    • Datamodel format
      • Scene explorer
        • Child traversal
    • Editor
      • Scene creation format for a datamodel
    • Clean the engine up
      • Inconsistent function calling convention
      • Inconsistent structure
      • Don't use source built libs in native build
    • Audio
  • Other

    • UI Rendering hierarchy + how it's gonna interact with 3D objects
      • New component for UI objects that has helpers for positioning
      • Maybe similiar to Unity rendering?
    • Raytracer BVH
    • UTF-8 Text Rendering

About

Small cross-platform game engine that uses Lua as the scripting frontend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published