Engine
A basic cross-platform 3D game engine
Install / Use
/learn @Shervanator/EngineREADME
Engine
A basic cross-platform (Mac, Windows, Linux, HTML5, Android) 3D game engine.
ONLINE DEMO: https://shervanator.github.io/Engine/
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

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 git@github.com:Shervanator/Engine.git
All builds require cmake 3.6.0, so the first step is to download that here
Windows Build
- 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
- 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
- Fork it ( http://github.com/Shervanator/Engine/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Related Skills
node-connect
339.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
