Skip to content

A cross-platform 3D game engine written in modern C++17 from scratch.

License

Notifications You must be signed in to change notification settings

programmersunited/Zeus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zeus Game Engine Logo

Zeus Game Engine

A cross-platform game engine written in modern C++17 from scratch.

Microsoft Windows Logo Linux Logo

Summary

Welcome to the Zeus game engine! The Zeus game engine strives to provide a modern approach to writing game engines in C++ using modern techniques. It is important to state a project's general design goals and I think below is perfect for this project.

General Decision Rationale:

  1. User friendly (well-documented and intuitive)
  2. Keep It Simple Stupid (KISS)
  3. Speed & Efficiency
  4. Extensibility

Another Game Engine?

Yes! It has always been a dream of mine to write a cross-platform 3D game engine in C++ from scratch! One of the main goals of this project is to create the most well-documented game engine in history. This includes the architecture, general design decisions and of course the internal frameworks and APIs. It is extremely important that everything is documented. It should be super easy for someone to contribute/understand this project. One of the main goals is to not close doors, but to open them as much as possible. Nothing is a secret.

What Do You Consider From "Scratch?"

My definition of from "scratch" is only using low-level libraries provided by the OS for help. For example X11 for creating/managing windows in Linux. I do not mean doing everything in assembly. I am not that crazy...probably not.

How To Build

Overview

Below contains everything you need to know in order to build the project. The project is mainly developed on Linux. That is why a lot of the examples involve CMake and makefiles. This project's main compiler is Clang. Of course, the project will be tested on other compilers also.

Prerequisites

If you want to build the project in its entirely and use all of its features you will need the following:

Platform Specific

There are specific packages that need to be downloaded in order to build the project.

Windows
Linux

Building The Project

Overview

There are two ways to setup/configure the project. There are scripts created with predefined settings to get the project up and running quickly. Then there is the manual way which is using CMake's GUI or changing the settings on the main CMakeLists.txt file located in the project's root directory.

Using Scripts

There are many PowerShell scripts created to build the project with CMake using different settings located in the build_scripts folder.

  • release_build.ps1 - Builds the project in release mode with optimizations turned on
    • This will also turn off all of the logging except for INFO, WARNING and FATAL ERROR
    • This will also turn off building examples and tests.
  • debug_build.ps1 - Builds the project in debug mode with optimizations turned off
  • hybrid_build.ps1 - Builds the project in hybrid mode with optimizations turned on for certain parts of the engine

Run the build_scripts/release_build.ps1 file to build the project with predefined settings.

# From the root directory of the project
# 'pwsh' is PowerShell
pwsh build_scripts/release_build.ps1

Using CMake

Configuring Settings

CMake GUI

Zeus Game Engine Logo

CMakeLists.txt

Running CMake

# From the root directory

# Create a folder called "build" to build the project in and then change to
# that directory
mkdir build && cd build

# Call CMake using CMake's default settings
cmake ..

Triggering Builds

Overview

Now the project should be setup with your favorite build system. Below is how to build the targets with CMake using your build system.

Makefile
# Run `make help` for targets that can be built if you are using makefiles (common on Linux)
make help

# Run 'make' in the build folder to trigger the building
make

Testing

Testing is done using GoogleTest. There are unit tests and integration tests for the project. The tests can be found in the tests folder in the root directory.

Documentation

The documentation is inside the docs folder in the main directory. The documentation is generated using Doxygen.

Building

Makefile
# Build the documentation using make
make Doxygen

Examples

Examples are provided to show how to use the engine located in the examples folder in the root directory. The examples are dependent on the project. Any changes to the main project will require the examples to be rebuilt.

Platform Support

One of the big goals of Zeus is to support as many platforms as possible. Currently the main focus will be on Windows & Linux. macOS will be added soon after along with support for consoles and for mobile devices (in that order).

Supported Platforms:

  • Windows
  • Linux

Planned Platforms:

  • macOS
  • Xbox
  • Playstation
  • Switch
  • Android
  • iPhone

Contributing

Zeus is not accepting contributors at this time. The project needs to have a foundation before accepting contributors. But please come back often to check to see if the engine is accepting contributors! If you want an idea on how someone would contribute please review the CONTRIBUTING before making any contributions. This document will explain the project's directory, coding style and how to contribute. Big contributors will be added to the CONTRIBUTORS document.

Authors

License

This project currently uses the GPLv3 license. Please look at the LICENSE for more details. This is subject to change in the future. It could become more restrictive or more relaxed. If the engine becomes more restrictive then a repository will be created to keep the code that was created while the project was under the GPLv3 license.

Project Status

The project currently is in its early stages. Changes make take a while. Please be patient :).

About

A cross-platform 3D game engine written in modern C++17 from scratch.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published