All Projects → Shervanator → Engine

Shervanator / Engine

Licence: gpl-3.0
A basic cross-platform 3D game engine

Projects that are alternatives of or similar to Engine

Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+768.27%)
Mutual labels:  cmake, game-engine, engine, 3d-game-engine, opengl, sdl2
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+1692.31%)
Mutual labels:  cmake, emscripten, game, game-engine, opengl, 3d
Rigelengine
A modern re-implementation of the classic DOS game Duke Nukem II
Stars: ✭ 393 (+88.94%)
Mutual labels:  game, game-engine, opengl, sdl2, cross-platform
Vulkust
An engine for Vulkan in Rust, tries to implement modern graphic features. (suspended for now)
Stars: ✭ 64 (-69.23%)
Mutual labels:  game, game-engine, engine, 3d, cross-platform
Exengine
A C99 3D game engine
Stars: ✭ 391 (+87.98%)
Mutual labels:  game, engine, 3d-game-engine, opengl, 3d
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+5050%)
Mutual labels:  cmake, game, game-engine, engine, opengl
Protogame
This project has been sunset as of 1st Jan 2018 and is no longer supported or maintained
Stars: ✭ 166 (-20.19%)
Mutual labels:  game, game-engine, engine, cross-platform
Voxelman
Plugin-based client-server voxel game engine written in D language
Stars: ✭ 105 (-49.52%)
Mutual labels:  game, game-engine, engine, opengl
Dagon
3D game engine for D
Stars: ✭ 165 (-20.67%)
Mutual labels:  game-engine, opengl, 3d, sdl2
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+691.35%)
Mutual labels:  game-engine, engine, opengl, cross-platform
Magnum Examples
Examples for the Magnum C++11/C++14 graphics engine
Stars: ✭ 180 (-13.46%)
Mutual labels:  cmake, emscripten, game-engine, opengl
Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+887.5%)
Mutual labels:  game, game-engine, engine, 3d
Fishengine
Simple, Unity-like Game Engine.
Stars: ✭ 191 (-8.17%)
Mutual labels:  game-engine, engine, opengl, cross-platform
Openrct2
An open source re-implementation of RollerCoaster Tycoon 2 🎢
Stars: ✭ 10,115 (+4762.98%)
Mutual labels:  cmake, game, opengl, sdl2
Corona
Solar2D Game Engine main repository (ex Corona SDK)
Stars: ✭ 1,679 (+707.21%)
Mutual labels:  game, game-engine, engine, cross-platform
Openra
Open Source real-time strategy game engine for early Westwood games such as Command & Conquer: Red Alert written in C# using SDL and OpenGL. Runs on Windows, Linux, *BSD and Mac OS X.
Stars: ✭ 10,220 (+4813.46%)
Mutual labels:  game, game-engine, engine, cross-platform
Novelrt
A cross-platform 2D game engine accompanied by a strong toolset for visual novels.
Stars: ✭ 81 (-61.06%)
Mutual labels:  game, game-engine, engine, cross-platform
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (-28.37%)
Mutual labels:  game-engine, engine, opengl, cross-platform
Minijvm
Develop iOS Android app in java, Cross platform java virtual machine , the minimal jvm .
Stars: ✭ 127 (-38.94%)
Mutual labels:  game, opengl, 3d, cross-platform
Fxgl
Stars: ✭ 2,378 (+1043.27%)
Mutual labels:  game, game-engine, 3d-game-engine, 3d

Engine

A basic cross-platform (Mac, Windows, Linux, HTML5, Android) 3D game engine.

ONLINE DEMO: https://shervanator.github.io/Engine/

Build Status

Feature:

  • Scene Graph
  • 3D model loading (most common file formats)
  • Entity/Component Object Model
  • Lighting system (ambient/spot/point/directional lights) - Forward rendering
  • Bump mapping
  • Perspective/Ortho camera
  • Object picking (basic ray tracing/sphere collider collision detection)
  • Bullet Physics colliders + simulation
  • Fully cross platform

engine screenshot

Uses the following 3rd party libraries:

  • SDL2 window library.
  • stb_image.h image library.
  • OpenGL 3 / OpenGL ES 2.0 / OpenGL ES 3.0 Graphics APIs.
  • Assimp asset importing library.
  • GLEW extension loading library.
  • Dear ImGui UI library.
  • Bullet Physics Library.

Usage

First clone repo with the following command to download all submodules (which are located in the dependencies folder): git clone --recursive [email protected]:Shervanator/Engine.git

All builds require cmake 3.6.0, so the first step is to download that here

Windows Build

  1. Run the cmake gui and point it to this projects folder, configure and then generate a project using whatever toolchain you want. Tested with visual studio 2015
  2. Build the project

Mac/Linux Build

Run:

./scripts/cmake-make.sh -j8

Then run with:

./bin/bin/game

This will run the first build for you! After that if you need to rebuild do the following:

cd bin
make -j8

HTML 5 WebGL engine Build

To build the html5 engine:

First install emscripten:

brew install emscripten

Then build the engine:

./scripts/cmake-emscripten.sh -j8

Then run with:

cd bin-emscripten/bin

python -m SimpleHTTPServer

open http://localhost:8000/

If you make a change you can rebuild with the following command:

cd bin-emscripten/
make -j8

Android Build

To build for android do the following:

First download the android ndk and sdk (https://developer.android.com/tools/sdk/ndk/) and (https://developer.android.com/sdk/index.html)

Then add the SDK and NDK to your path:

e.g. (you can add this to your .bash_profile for convenience)

export ANDROID_SDK=$HOME/Library/Android/sdk/
export ANDROID_NDK=$HOME/workspace/android-ndk-r12b

export PATH="$ANDROID_NDK:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$PATH"

Then to build (connect phone in dev mode to computer if you want it to install and run):

./scripts/cmake-android.sh -j8

To rebuild do the following:

cd bin-android
make -j8
make android-build android-install android-start

If you want to view the backtrace (to see logs and errors do the following):

cd bin-android
make android-backtrace

To Use:

To use the engine in a game build the engine library and include Engine.h in your game.

View the example in ./src/example/main.cpp

Or a simple case:

Eg:

#include "Engine.h"

class CoolGame : public Game
{
public:
  virtual void init(void);
};

void CoolGame::init(void)
{
  auto test_entity = std::make_shared<Entity>();
  test_entity->addComponent<MeshRenderer>(std::make_shared<Mesh>(Asset("../assets/monkey3.obj")), std::make_shared<Texture>(Asset("../assets/t.jpg")));
  addToScene(test_entity);
}

int main(int argc, char **argv){
  CoolGame game;
  Engine gm(&game);

  gm.start();

  return 0;
}

Contributing

  1. Fork it ( http://github.com/Shervanator/Engine/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 new Pull Request
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].