Skip to content

A project for me to explore writing a game engine from scratch.

Notifications You must be signed in to change notification settings

tuzz/game-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game Engine

A project for me to explore writing a game engine from scratch using an ECS design pattern. My game engine is written in Rust, compiles to WebAssembly and binds to a WebGL canvas. That means it runs in a browser.

Currently, it supports the following features:

  • 3D meshes built from vertex normals
  • Surface normals calculated for models
  • Phong lighting model (ambient, diffuse, specular)
  • Multiple directional and point lights
  • Orthographic and perspective cameras
  • Multiple cameras, rendered to portions of the view
  • Dynamic generation of GLSL shaders
  • Materials, or colors specified per vertex
  • Scene graph that's optimised for lazy updates
  • Game loop that's frame rate independent
  • Keyboard input event handling

Usage

$ make setup
$ make build
$ make server

If you're not on a Mac, you'll need to install binaryen manually. There are a few more Makefile commands you might find useful (e.g. build-watch). For more examples, check out the wasm-bindgen documentation.

About

A project for me to explore writing a game engine from scratch.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages