README.md
May 3, 2026 · View on GitHub
groverburger's 3D engine (g3d) simplifies LÖVE's 3d capabilities to be as simple to use as possible.

Getting Started
- Download the latest release version.
- Add the
g3dfolder to your LÖVE project. - Add
local g3d = require "g3d"to yourmain.luafile.
The entire main.lua file for the Earth and Moon demo is under 30 lines:
local g3d = require "g3d"
local earth = g3d.newModel("assets/sphere.obj", "assets/earth.png", {4,0,0})
local moon = g3d.newModel("assets/sphere.obj", "assets/moon.png", {4,5,0}, nil, 0.5)
local background = g3d.newModel("assets/sphere.obj", "assets/starfield.png", nil, nil, 500)
local timer = 0
function love.update(dt)
timer = timer + dt
moon:setTranslation(math.cos(timer)*5 + 4, math.sin(timer)*5, 0)
moon:setRotation(0, 0, timer - math.pi/2)
g3d.camera.firstPersonMovement(dt)
if love.keyboard.isDown "escape" then
love.event.push "quit"
end
end
function love.draw()
earth:draw()
moon:draw()
background:draw()
end
function love.mousemoved(x,y, dx,dy)
g3d.camera.firstPersonLook(dx,dy)
end
Features
- Textured 3D model rendering
- OBJ file loading
- Perspective and orthographic cameras
- Custom vertex and fragment shader support
- Basic first-person movement and camera controls
- Lightweight collision queries
- Simple, commented, and organized
Documentation
The g3d wiki explains the camera, models, custom shaders, collisions, and other topics in more detail. The original forum post has more project history and discussion.
Games and demos made with g3d
Hoarder's Horrible House of Stuff by alesan99

Lead Haul by YouDoYouBuddy

Plan Meow by SaceMakesGame
First Person Test by groverburger

g3d voxel engine by groverburger
