Skip to content

Latest commit

 

History

History
161 lines (133 loc) · 8.46 KB

README.md

File metadata and controls

161 lines (133 loc) · 8.46 KB

Overload Logo

Releases | Screenshots | Features | Wiki | Contributing


platforms release size
issues pulls
license downloads


1. What's Overload?

1.1. Description

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

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 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 profiling
  • OvDebug: Logging and assertions
  • OvTools: Serialization, INI files, events, clock
  • OvMaths: Vectors, matrices, quaternions, transforms
  • OvAudio: Wraps irrKlang
  • OvPhysics: Wraps Bullet3
  • OvRendering: Rendering engine using OpenGL
  • OvWindowing: GLFW and Windows API wrapper
  • OvUI: Dear ImGui wrapped into an event-based and component-based UI system
  • OvCore: Component-based scene system, scripting, and resource management

1.2.2. Overload Applications

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

Editor

2. History of Overload

2.1. Context

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.

2.2. Goals

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

2.3. Pre-production

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.

2.4. Production

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.

3. Features

3.1. Implemented

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

3.2. To Be Implemented

A non-exhaustive list of upcoming features for Overload:

  • Expanded input device support (Gamepad)
  • Prefab system
  • Skeletal animation
  • User script 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 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.

4.5. Licence

Overload is licenced under an MIT licence.

4.6. More information

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

5. Getting started

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

6. Contributing

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.

7. Screenshots

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