A 3D game engine written in crystal opengl 3d-engine game-engine
0.11.1 Latest release released
95 4 16


GitHub release Build Status

This is a stable, though not completely baked, 3D game engine. Documentation is a little sparse right now, but hopefully the example linked below will help. Disclaimer: I barely know anything about game development much less game engine development. This has been a learn-as-i-go project. If you have ideas or suggestions I would love it if you opened an issue.


  • Defaults most things should "just work" with sane defaults.
  • Pure other than a few system level dependencies, this should be 100% pure crystal code. Wrapping an existing project is cheating.
  • Simple try to avoid obtuse graphics language, or at least document it very well so noobs can understand what's going on.
  • Extensible you can extend/replace/add engines to the core with ease.


NOTE: this was recorded at 5fps, but runs at 60fps.

Peek 2020-04-29 09-53

You can find code for this demo at


Add this to your application's shard.yml:

    github: neutrinog/prism

Install GLFW on your system

# on linux
sudo apt-get install libglfw3-dev

# on macOS
brew install glfw3

Install OpenGL

# on linux
sudo apt install mesa-common-dev

# on mac
# TODO: give install instructions


require "prism"

class Game < Prism::GameEngine
  def init
    # Cube
    # TODO: draw a box to look at

    # Sun light
    sun =
    sun_color =, 0.2, 0.2)
    sun.transform.move_to(0, 10000, -7000)
    add_entity sun

    # Camera
end"Hello World",


  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request


  • neutrinog Joel Lonbeck - creator, maintainer

Special Thanks

This project was largely inspired by "The Benny Box" and his 3D Game Engine Tutorial. Thanks for all the good tutorials Benny!

  github: da1nerd/prism
  version: ~> 0.11.1
License MIT
Crystal 0.34.0


Dependencies 8

  • annotation
    {'github' => 'grottopress/'}
  • baked_file_system 0.9.8
    {'github' => 'schovi/baked_file_system', 'version' => '0.9.8'}
  • crash
    {'github' => 'neutrinog/crash'}
  • crystglfw support-crystal-0.31
    {'branch' => 'support-crystal-0.31', 'github' => 'neutrinog/CrystGLFW'}
  • lib_gl master
    {'branch' => 'master', 'github' => 'calebuharrison/LibGL'}
  • matrix master
    {'branch' => 'master', 'github' => 'Exilor/matrix'}
  • render_loop
    {'github' => 'neutrinog/render_loop'}
  • stumpy_png ~> 4.5.2
    {'github' => 'stumpycr/stumpy_png', 'version' => '~> 4.5.2'}

Development Dependencies 0

Dependents 1

Other repos 1

Last synced .
search fire star recently