All Projects → da1nerd → prism

da1nerd / prism

Licence: MIT license
A 3D game engine written in crystal

Programming Languages

crystal
512 projects
GLSL
2045 projects

Projects that are alternatives of or similar to prism

Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+159.49%)
Mutual labels:  3d-engine
ColumbusEngine
3D cross-platform game engine written in C++
Stars: ✭ 45 (-43.04%)
Mutual labels:  3d-engine
MoltenEngine
A spare-time C# .NET 6 game engine project. Cross-platform, multi-threaded.
Stars: ✭ 113 (+43.04%)
Mutual labels:  3d-engine
jse3d
(DEPRECATED) AWT software-rendered 3D engine, predecessor to NEO3D (by @tarbaII)
Stars: ✭ 13 (-83.54%)
Mutual labels:  3d-engine
Raylib-Forever
:.raylib headers for Nim anytime.:
Stars: ✭ 63 (-20.25%)
Mutual labels:  3d-engine
FWK
💎 3D game framework in C, with Luajit bindings now.
Stars: ✭ 423 (+435.44%)
Mutual labels:  3d-engine
Matplotlib 3d
Experimental 3D axis for matplotlib
Stars: ✭ 198 (+150.63%)
Mutual labels:  3d-engine
thelema-engine
Thelema - 3D graphics engine, written in Kotlin. Based on sources of libGDX.
Stars: ✭ 51 (-35.44%)
Mutual labels:  3d-engine
android-3d-model-viewer
Android app to load 3D models in obj, stl, dae & gltf format using pure OpenGL ES 2.0. Published on Play Store https://play.google.com/store/apps/details?id=org.andresoviedo.dddmodel2
Stars: ✭ 150 (+89.87%)
Mutual labels:  3d-engine
lore
WebGL engine for (big) data visualization.
Stars: ✭ 24 (-69.62%)
Mutual labels:  3d-engine
exengine
A C99 3D game engine
Stars: ✭ 487 (+516.46%)
Mutual labels:  3d-engine
GroundEngine
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++
Stars: ✭ 61 (-22.78%)
Mutual labels:  3d-engine
makegameengineatnight
从零编写游戏引擎教程 Writing a game engine tutorial from scratch
Stars: ✭ 1,348 (+1606.33%)
Mutual labels:  3d-engine
Librw
A re-implementation of the RenderWare Graphics engine
Stars: ✭ 223 (+182.28%)
Mutual labels:  3d-engine
Legion-Engine
Rythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Stars: ✭ 502 (+535.44%)
Mutual labels:  3d-engine
Python Raytracer
A basic Ray Tracer that exploits numpy arrays and functions to work fast.
Stars: ✭ 204 (+158.23%)
Mutual labels:  3d-engine
frak
FRAK WebGL Engine
Stars: ✭ 20 (-74.68%)
Mutual labels:  3d-engine
rbfx
Game engine with (optional) C# support and WYSIWYG editor.
Stars: ✭ 511 (+546.84%)
Mutual labels:  3d-engine
storm-engine
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.
Stars: ✭ 636 (+705.06%)
Mutual labels:  3d-engine
asciimare
3D engine powered by ASCII art
Stars: ✭ 47 (-40.51%)
Mutual labels:  3d-engine

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/da1nerd/tutorial-game

Installation

Add this to your application's shard.yml:

dependencies:
  prism:
    github: da1nerd/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/da1nerd/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

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].