Releases |
Screenshots |
Features |
Wiki |
Contributing
Overload is a 3D game engine inspired by industry standards, initiated by Benjamin VIRANIN, Max BRUN and Adrien GIVRY as a graduation project. It is now a community project open to external contribution.
Overload pillars are:
- Simplicity
- Documentation
- High-quality modern C++ code
Overload is divided into 12 modules (10 DLLs and 2 executables):
The Overload SDK is the core of the engine. It is a set of libraries used by our applications: OvGame
and OvEditor
.
We designed theses libraries with reusability in mind. They are highly modular and easy to extract from a game engine context.
OvAnalytics
: Code and hardware profilingOvDebug
: Logging and assertionsOvTools
: Serialization, INI files, events, clockOvMaths
: Vectors, matrices, quaternions, transformsOvAudio
: Wraps irrKlangOvPhysics
: Wraps Bullet3OvRendering
: Rendering engine using OpenGLOvWindowing
: GLFW and Windows API wrapperOvUI
: Dear ImGui wrapped into an event-based and component-based UI systemOvCore
: Component-based scene system, scripting, and resource management
OvGame
: Uses OvCore, asset-dependent, a generic executable for any game built with OverloadOvEditor
: Uses OvCore, exposes game development to the end-user (from creation to building)
Overload started as a graduation project. The three os us, (Benjamin VIRANIN, Max BRUN and Adrien GIVRY, worked on it for five months. Our task was to create a game engine from scratch, using as few external libraries as possible.
Our goals for this project were to:
- Understand how to architect a game engine
- Design an application with end-users in mind
- Make the game engine as simple as possible
- Produce high-quality modern code
- Create a game using our engine
- Structure and manage a long-term project
- Develop documentation for both developers and end-users
We spent about a month designing our initial architecture. We provided technical solutions using UML diagrams, flowcharts, package diagrams, and use-case diagrams. This helped us to start the production with a clear vision of the engine.
We also defined coding conventions to ensure our work remained consistent throughout the production process. Defining these kinds of rules is crucial to maintaining clean, manageable code over the course of the project.
During production, we realized that our initial understanding of what a game engine entails was naive. As we progressed, our architecture evolved. We discovered that our original design was sometimes overly complex or suboptimal. As a result, we revisited and refined the architecture multiple times throughout the project.
Here is a non-exhaustive list of Overload's main features:
- Game Editor
- Lua scripting
- Physically-Based Rendering (PBR)
- Custom shaders support
- Windows game building
- Profiling tools (Editor and build)
- Material editor
- 3D sound system
- Rigidbody physics
A non-exhaustive list of upcoming features for Overload:
- Expanded input device support (Gamepad)
- Prefab system
- Skeletal animation
- User script profiling
- Visual Studio 2022 (previous versions should also be supported)
- OpenGL with GLEW (Graphics API)
- GLFW (Windowing and inputs)
- Assimp (3D model loader)
- Bullet3 (Physics)
- irrKlang (Audio)
- Tinyxml2 (XML Serializer)
- SOL2 (Lua binder)
- ImGui (GUI)
Overload requires:
- RAM: 100MB
- OS: Windows 7
- GPU: Graphics card supporting OpenGL 4.3
- CPU: x64
Overload uses Premake5 to generate project files. To generate these files, execute GenerateProjects.bat
located at the root of the repository. By default, GenerateProjects.bat
will generate project files for Visual Studio 2022. If you want to use another version of Visual Studio (e.g., VS2019, VS2017) or different IDE (see https://github.com/premake/premake-core/), you can execute GenerateProjects.bat
from the command line with an argument. (e.g., .\GeneratedProjects.bat vs2019
)
Overload only targets Windows 64 bits.
Overload is licenced under an MIT licence.
If you're interested in Overload, you can download our engine and the demo game we created with it on our website:
https://overloadengine.org
Learn about Overload (tutorials and scripting API) by visiting our Wiki:
https://github.com/adriengivry/Overload/wiki
You can also watch our features reel (Overload v1.0.0) on YouTube:
https://www.youtube.com/watch?v=ARXSJh-ZMHM
Join our Discord Server:
https://discord.gg/wqe775s
Learn how to create your own games using Overload by visiting our wiki.
Overload is open to contributions of all kinds. Feel free to open issues (feature requests or bug reports) or submit pull requests.
If you'd like to contribute, please refer to our CONTRIBUTING.md guidelines.