prism

A 3D game engine written in crystal opengl 3d-engine game-engine
0.11.1 Latest release released
da1nerd/prism
98 4 17
Joel

Prism

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.

Goals

  • 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.

Demo

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

Peek 2020-04-29 09-53

You can find code for this demo at https://github.com/neutrinog/tutorial-game

Installation

Add this to your application's shard.yml:

dependencies:
  prism:
    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

Usage

require "prism"

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

    # Sun light
    sun = Prism::Entity.new
    sun_color = Prism::Maths::Vector3f.new(0.2, 0.2, 0.2)
    sun.add Prism::PointLight.new(sun_color)
    sun.transform.move_to(0, 10000, -7000)
    add_entity sun

    # Camera
    add_entity Prism::GhostCamera.new
  end
end

Prism::Context.run("Hello World", Game.new)

Contributing

  1. Fork it (https://github.com/neutrinog/prism/fork)
  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

Contributors

  • 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!

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

Authors

Dependencies 8

  • annotation
    {'github' => 'grottopress/annotation.cr'}
  • 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