Composite Engine is a C++ game engine for Windows and Mac featuring OpenGL, a CMake build system, and Chromium Embedded Framework (CEF) for a JavaScript user interface layer. Features include:
- Graphics engine with rendering, texturing, skinning, and animations in OpenGL
- Animation processing tool to import via FBX SDK and export to a custom format
- CEF integration for a JavaScript user interface with React and Redux
- Event system to marshal events between different engine systems
- CMake build system for Windows and Mac that also handles dependency management
Video Demo: https://youtu.be/X7JCg0GNplI
This repository requires Git Large File Storage (Git LFS).
- Install Git LFS.
- This must be done once for your machine.
- Run
git lfs install
in the repository directory.- This must be done once per repository clone.
- If you cloned the repository before installing Git LFS to your machine (see the
Before Cloning
section above):- Run
git lfs fetch
andgit lfs pull
in the repository.
- Run
- Install Visual Studio 2019.
- Include
Desktop development with C++
andGame development with C++
- Include
# Install the command line tools.
xcode-select --install
# Switch to Xcode's command line tools.
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
-
Install the C/C++ Extension from Microsoft.
-
On Windows, open with
x64 Native Tools Command Prompt
.
- Run the CMake build and install steps. This changes frequently; see
.vscode/launch.json
and.vscode/tasks.json
for up-to-date commands.- For Visual Studio Code, run in Debug or Release mode from the debugger.
- For Visual Studio 2019, run "Composite Engine.exe (Install)" from the Select Startup Item menu.
-
- Version in SDL.cmake
- Versions: https://www.libsdl.org/download-2.0.php
- Reference: http://wiki.libsdl.org/FrontPage
-
GLEW: http://glew.sourceforge.net/
- Version in GLEW.cmake
- Repository: https://github.com/nigels-com/glew
- Reference: See Above (sidebar)
-
- 0.9.8.5: https://glm.g-truc.net/0.9.8/index.html
- Reference: See Above (sidebar)
-
stb_image: https://github.com/nothings/stb
- 2.16: https://github.com/nothings/stb/blob/9d9f75eb682dd98b34de08bb5c489c6c561c9fa6/stb_image.h
- Reference: See File
-
Chromium Embedded Framework: https://bitbucket.org/chromiumembedded/cef/src/master/
- Version in CEF.cmake
- Build Index: http://opensource.spotify.com/cefbuilds/index.html
- Reference: https://bitbucket.org/chromiumembedded/cef/wiki/Home
-
RapidJSON: https://github.com/Tencent/rapidjson
- 67fac85 (master): https://github.com/Tencent/rapidjson/tree/67fac85e96220f69076121d569abd15471abb6bf
- Reference: http://rapidjson.org/
-
DirectX:
-
OpenGL:
-
References:
-
Tutorials:
-
Function Loading and GLEW-specific:
- https://stackoverflow.com/questions/3933027/how-to-get-the-gl-library-headers
- https://stackoverflow.com/questions/14413/using-opengl-extensions-on-windows
- https://stackoverflow.com/questions/17370/using-glew-to-use-opengl-extensions-under-windows
- https://gamedev.stackexchange.com/questions/112182/what-is-glew-and-how-does-it-work
- https://www.opengl.org/discussion_boards/showthread.php/175661-Using-OpenGL-without-GLEW
-
Textures:
-
Apple:
-
-
SDL and OpenGL Tutorials: http://lazyfoo.net/
-
Lang's FBX SDK Guide: https://www.gamedev.net/articles/programming/graphics/how-to-work-with-fbx-sdk-r3582/
-
C++ Skeletal Animation Library: http://guillaumeblanc.github.io/ozz-animation/
-
Models and Animations: https://www.mixamo.com/
-
NVIDIA Nsight: http://www.nvidia.com/object/nsight.html