You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Overload is a 3D game engine inspired by industry standards, initiated by [Benjamin VIRANIN](https://github.com/BenjaminViranin), [Max BRUN](https://github.com/maxbrundev) and [Adrien GIVRY](https://github.com/adriengivry) as a graduation project. It is now a community project open to external contribution.
27
+
# What's Overload?
28
+
Overload is a free, open-source 3D game engine made in C++ with Lua as its scripting language.
29
+
30
+
Originally created in 2019 by [Benjamin VIRANIN](https://github.com/BenjaminViranin), [Max BRUN](https://github.com/maxbrundev), and [Adrien GIVRY](https://github.com/adriengivry) as a graduation project, it has since evolved into an community-driven initiative supported by dozens of contributors.
30
31
31
32
Overload pillars are:
32
-
- Simplicity
33
-
- Documentation
34
-
- High-quality modern C++ code
33
+
- 🐣 Ease of use
34
+
- 📄 Documentation
35
+
- 🤝 Community
36
+
- ⚙️ Modern C++20 code
35
37
36
-
## 1.2. Modules
37
-
Overload is divided into 12 modules (10 DLLs and 2 executables):
38
+
# Features
39
+
- Lua scripting
40
+
- Game editor
41
+
- Physically-Based Rendering (PBR)
42
+
- Custom shaders support
43
+
- Windows game building
44
+
- Profiling tools
45
+
- Material editor
46
+
- Spatial audio
47
+
- Rigidbody physics
48
+
- And many more to come...
38
49
39
-
### 1.2.1. Overload SDK
50
+
Check out our [issues](https://github.com/adriengivry/Overload/issues) and [pull requests](https://github.com/adriengivry/Overload/pulls) to learn more about what's coming next!
51
+
52
+
# Architecture
53
+
Overload is divided into 12 modules: 10 libraries (SDK), and 2 executables (Applications).
54
+
55
+
## Overload SDK
40
56
The Overload SDK is the core of the engine. It is a set of libraries used by our applications: `OvGame` and `OvEditor`.
41
57
We designed theses libraries with reusability in mind. They are highly modular and easy to extract from a game engine context.
42
58
-`OvAnalytics`: Code and hardware profiling
@@ -50,107 +66,82 @@ We designed theses libraries with reusability in mind. They are highly modular a
50
66
-`OvUI`: Dear ImGui wrapped into an event-based and component-based UI system
51
67
-`OvCore`: Component-based scene system, scripting, and resource management
52
68
53
-
### 1.2.2. Overload Applications
54
-
-`OvGame`: Uses OvCore, asset-dependent, a generic executable for any game built with Overload
55
-
-`OvEditor`: Uses OvCore, exposes game development to the end-user (from creation to building)
69
+
## Overload Applications
70
+
Overload applications use the Overload SDK to operate.
71
+
-`OvGame`: A data-driven executable for any game built with Overload
Overload started as a graduation project. The three os us, ([Benjamin VIRANIN](https://github.com/BenjaminViranin), [Max BRUN](https://github.com/maxbrundev) and [Adrien GIVRY](https://github.com/adriengivry), worked on it for five months. Our task was to create a game engine from scratch, using as few external libraries as possible.
62
-
63
-
## 2.2. Goals
64
-
Our goals for this project were to:
65
-
- Understand how to architect a game engine
66
-
- Design an application with end-users in mind
67
-
- Make the game engine as simple as possible
68
-
- Produce high-quality modern code
69
-
- Create a game using our engine
70
-
- Structure and manage a long-term project
71
-
- Develop documentation for both developers and end-users
72
-
73
-
## 2.3. Pre-production
74
-
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.
75
-
76
-
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.
77
-
78
-
## 2.4. Production
79
-
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.
80
-
81
-
<spanname="features"></span>
82
-
# 3. Features
83
-
## 3.1. Implemented
84
-
Here is a non-exhaustive list of Overload's main features:
85
-
- Game Editor
86
-
- Lua scripting
87
-
- Physically-Based Rendering (PBR)
88
-
- Custom shaders support
89
-
- Windows game building
90
-
- Profiling tools (Editor and build)
91
-
- Material editor
92
-
- 3D sound system
93
-
- Rigidbody physics
94
-
95
-
## 3.2. To Be Implemented
96
-
A non-exhaustive list of upcoming features for Overload:
97
-
- Expanded input device support (Gamepad)
98
-
- Prefab system
99
-
- Skeletal animation
100
-
- User script profiling
101
-
102
-
# 4. Details
103
-
## 4.1. Software
104
-
- Visual Studio 2022 (previous versions should also be supported)
105
-
106
-
## 4.2. Dependencies
76
+
## Dependencies
77
+
Overload depends on a few third-party libraries:
107
78
- OpenGL with GLEW (Graphics API)
108
79
- GLFW (Windowing and inputs)
109
80
- Assimp (3D model loader)
110
81
- Bullet3 (Physics)
111
82
- irrKlang (Audio)
112
-
- Tinyxml2 (XML Serializer)
113
-
-SOL2 (Lua binder)
83
+
- Tinyxml2 (XML serializer)
84
+
-Sol2 (Lua binding)
114
85
- ImGui (GUI)
86
+
- Premake5 (Project generation)
87
+
88
+
# Getting started
89
+
## Running Overload from a Release Build
90
+
Get started with Overload in no time by downloading one of our [release builds](https://github.com/adriengivry/Overload/releases). While this is the fastest way to get started, you might miss out on some cool features we're cooking up!
115
91
116
-
## 4.3. Requirements
117
-
Overload requires:
118
-
- RAM: 100MB
119
-
- OS: Windows 7
120
-
- GPU: Graphics card supporting OpenGL 4.3
121
-
- CPU: x64
92
+
After downloading the archive, unzip it and run the `Overload.exe` executable file.
122
93
123
-
## 4.4. Compiling sources
124
-
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`)<br><br>
94
+
## Building Overload from Sources
125
95
126
-
*Overload only targets Windows 64 bits.*
96
+
### Quick Start (For Visual Studio 2022)
97
+
To start working with Overload quickly, clone the repository and run the `OpenInVisualStudio.bat` script. Project files will be automatically generated, and Visual Studio will open with the generated solution (`Overload/Sources/Overload.sln`).
127
98
128
-
## 4.5. Licence
129
-
Overload is licenced under an MIT licence.
99
+
```powershell
100
+
# These 2 lines will clone Overload, generate project files, and open the Visual Studio solution.
101
+
git clone https://github.com/adriengivry/Overload
102
+
.\Overload\OpenInVisualStudio.bat
103
+
```
130
104
131
-
## 4.6. More information
132
-
If you're interested in Overload, you can download our engine and the demo game we created with it on our website:<br>
133
-
https://overloadengine.org
105
+
### Generating Project Files (For Any IDE)
106
+
*Note: This step is performed automatically when using `OpenInVisualStudio.bat`*
134
107
135
-
Learn about Overload (tutorials and scripting API) by visiting our Wiki:<br>
136
-
https://github.com/adriengivry/Overload/wiki
108
+
Overload uses Premake5 to generate project files. To generate these files, execute the `GenerateProjects.bat` located in the `Scripts/` folder.
137
109
138
-
You can also watch our features reel (Overload v1.0.0) on YouTube:<br>
139
-
https://www.youtube.com/watch?v=ARXSJh-ZMHM
110
+
By default, `GenerateProjects.bat` will generate project files for Visual Studio 2022.
140
111
141
-
Join our Discord Server:<br>
142
-
https://discord.gg/wqe775s<br>
112
+
If you'd like to use another IDE, you'll need to run `GenerateProjects.bat` from the command line:
*Please refer to [Premake5's documentation](https://premake.github.io/docs/Using-Premake) to find supported IDEs.*
119
+
120
+
> ⚠️ Some Premake5-supported IDEs might still not work with Overload.
121
+
122
+
### Building From the Command Line (MSVC Only)
123
+
*Note: Before building, make sure that you generated the Visual Studio solution.*
124
+
125
+
If you'd like to build Overload directly from the command line (without opening Visual Studio), you can use the `BuildAll.bat` script located in `Scripts/MSVC/`. By default, `BuildAll.bat` will build the project in `Debug` mode, but you can choose the configuration you want by providing an argument:
126
+
```powershell
127
+
.\Scripts\MSVC\BuildAll.bat Release
128
+
```
129
+
130
+
## Tutorials & Scripting API
145
131
Learn how to create your own games using Overload by visiting our [wiki](https://github.com/adriengivry/Overload/wiki).
146
132
147
-
# 6. Contributing
133
+
# Contributing
148
134
Overload is open to contributions of all kinds. Feel free to open issues (feature requests or bug reports) or submit pull requests.
149
135
150
-
If you'd like to contribute, please refer to our [CONTRIBUTING.md](https://github.com/adriengivry/Overload/blob/develop/CONTRIBUTING.md) guidelines.
136
+
If you'd like to contribute, please refer to our [contribution guildelines](https://github.com/adriengivry/Overload/blob/develop/CONTRIBUTING.md).
0 commit comments