• Stars
    star
    1,770
  • Rank 26,303 (Top 0.6 %)
  • Language
    C++
  • License
    MIT License
  • Created over 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

3D game engine with lua scripting

Overload Logo

Releases | Screenshots | Features | Wiki | Contributing


platforms release size
issues pulls
license downloads


1. What is Overload

1.1. Description

Overload is an alternative game engine, inspired by industry standards, initiated by Benjamin VIRANIN, Max BRUN and Adrien GIVRY. Overload is now a community project, opened to any contribution.

Overload pillars are:

  • Simplicity
  • Documentation
  • High-quality modern C++ code

1.2. Modules

Overload is divided into 12 modules (10 DLLs and 2 executables):

1.2.1. Overload SDK

The Overload SDK is the core of the engine. It is a set of libraries that our applications (OvGame and OvEditor) are using. We designed theses libraries with reusability in mind. They are extremely modular and easy to extract from a game engine context.

  • OvAnalytics: Code and hardware profiling
  • OvDebug: Logging, assertions
  • OvTools: Serialization, ini files, events, time
  • OvMaths: Vectors, Matrices, Quaternion, Transform
  • OvAudio: Wraps irrKlang
  • OvPhysics: Wraps Bullet3
  • OvRendering: Rendering engine using OpenGL
  • OvWindowing: GLFW + Windows API wrapper
  • OvUI: Dear imGui wrapped into an event-based and component-based UI system
  • OvCore: Mediator, resource management, scripting, component-based scene system

1.2.2. Overload Applications

  • OvGame: Uses OvCore, asset dependent, generic executable for any game built with Overload
  • OvEditor: Uses OvCore, expose game development to the end-user (From creation to building)

Editor

2. History of Overload

2.1. Context

Initially, Overload was a graduation project. We were 3 (Benjamin VIRANIN, Max BRUN and Adrien GIVRY) working on it for 5 months. We had to create a game engine from scratch, using the fewest libraries possible.

2.2. Goals

Our goals for this project were:

  • Understanding how to architect a game engine
  • Designing an application thinking of end-users
  • Making a game engine as simple as possible
  • Producing high-quality modern code
  • Creating a game with our engine
  • Dealing with a long-term project
  • Developping documentation for developers and end-users

2.3. Pre-production

We spent about a month designing our initial architecture. We tried to provide a technical solution with UML diagrams, flowcharts, package diagrams and use-case diagrams. This was a long and tedious work, but it really helped us to start the production with a clear vision of the engine. We defined some coding convention to ensure that all of our work will stay homogeneous during the production. Defining these kinds of rules is crucial to keep a maintainable code during the whole project.

2.4. Production

The production made us realize that we had a naive idea of what a game engine is. During this phase our architecture has evolved. We found that our initial architecture was sometimes too complex, non-optimal. We went back to architecture design multiple times during the project.

3. Features

3.1. Implemented

Here is a non-exhaustive list of Overload 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

3.2. To implement

Again, a non-exhaustive list of Overload in-coming features:

  • Shadow mapping
  • Custom post-processing
  • Renderer Hardware Interface (Multiple graphics backend support)
  • More input device support (Gamepad)
  • Prefab system
  • Skeletal animation
  • User scripts profiling

4. Details

4.1. Software

  • Visual Studio 2022 (previous versions should also be supported)

4.2. Dependencies

  • 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)

4.3. Requirements

Overload requires:

  • RAM: 100MB
  • OS: Windows 7
  • GPU: Graphics card supporting OpenGL 4.3
  • CPU: x64

4.4. Compiling sources

Overload is using Premake5 to generate project files. To generate these project 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 (vs2019, vs2017...) or another IDE (c.f. https://github.com/premake/premake-core/), you can execute GenerateProjects.bat from the command line with an argument. (ex: .\GeneratedProjects.bat vs2019)

Overload only targets Windows x64.

4.5. Licence

Overload is licenced under an MIT licence.

4.6. More information

If you are interested in Overload, you can download our engine and the demo game we made with it on our website:
http://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

And join our Discord Server:
https://discord.gg/wqe775s

5. Getting started

Learn how to create your own games using Overload by visiting our wiki.

6. Contributing

Overload is opened to any contribution. Do not hesitate to open issues (Features or bugs) or create pull requests.

If you want to help us, visit our CONTRIBUTING.md guidelines document.

7. Screenshots

PBR Shading Material Editor Standard Shader Library Custom Shaders Realtime Lighting Scene Edition Build System Project Hub

More Repositories

1

SimplexEngine

Game engine with a custom made software renderer (OpenGL-like rendering pipeline)
C++
19
star
2

ElkCraft

Minecraft clone in C++/OpenGL
C++
19
star
3

AnimationProgramming

Skeletal animation player using the WhiteBoxEngine
C++
13
star
4

Software-Rasterizer

CPU Software Rasterizer project made with SDL
C++
10
star
5

Unity-Scripts-For-Beginners

This repository aims to give beginners some examples of scripts that they can freely use in their Unity projects
4
star
6

GyvrTools

Some tools that I made for my future C++ projects
C++
3
star
7

GyvrIni

A simple and fast library to use .ini files in your project
C++
2
star
8

CppReflection

Here is a short research work about C++ reflection
C++
2
star
9

Tower-Defense

This is my SDL TowerDefense made as a student project in 1 week
C
2
star
10

ElkEngine

A C++/OpenGL game engine made in 2 weeks
C++
2
star
11

Linked-List

Implementing my linked list class in CPP
C++
2
star
12

Rendering-Engine

An OpenGL Rendering Engine student project made in 4 weeks
C++
2
star
13

perfolio

Python GUI application to measure portfolio performance using different investment return calulation strategies
Python
2
star
14

Carrie-The-Game

Here is our Ludum Dare #40 project
C++
1
star
15

BaguetteEngine

WIP Rendering Engine
C++
1
star
16

Malloc-And-Free

Student project to recreate malloc and free on linux
C
1
star
17

adriengivry

1
star
18

GyvrEngine

Personal Game Engine project
1
star
19

The-Six-Million-Dollar-Arcade-Turbo

Here is "The Six Million Dollar Arcade Turbo", the new physic game that your children are going to snatch
C++
1
star
20

Printf

MyPrintf is a C student project. The goal was to recreate the behavior of printf with Variable Argument Lists
C
1
star
21

ddimport

Import and Update Data Files from the Disk to your Project
R
1
star
22

Platformer-Engine

This is my first project with the Cinder library.
C++
1
star
23

portfolyahoo

Unofficial API to manage your portfolios on Yahoo Finance
Python
1
star
24

GrabAndDrop

Simple Unity package to add grab/drop and throw interactions to your games
C#
1
star