Super Game Engine Pre-alpha Help

Super Game Engine

https://SuperGameEngine.com

Introduction

SuperGameEngine (SGE) is a project by Scott Foster to explore programming in C++ by creating a 2D Engine in SDL2. This document is the engineering reference for this project containing the current coding standards and any documentation which may assist when working with the code base. The engine is incomplete so do not expect a fully featured setup such that from Unity or Godot.

Download

This project is in its infancy and this help documentation is sparse. This link is the GitHub download for the project, taking a look at this link will paint a million words!

What is the plan here?

This is the most ambitious project I have ever taken on with one Goal: Make a 2D Game Engine I can make my projects in.

I want an engine to exist which works in the way I think about Game Engines and that I know will not be sold or change its business plan down the line. There are only two ways to meet this goal, acquire the company making an engine perfectly suited to my mind or make it. Considering I am not currently a millionaire I opted for the second option - which is more fun in my opinion 😉.

The plan with this is a 2D Engine to make:

  1. Top down RPG Games

  2. Platformers

  3. Card Games

  4. Visual Novels

  5. Anything else you could make in 2D

When I run out of 2D games, then move on to DirectX and make Super Game Engine 3D.

Why call it Super Game Engine?

If you have faith in something becoming amazing give it the best name in the world. This Engine might not be the best, it will not beat Unreal 5, Unity, Godot or GameMaker.

What this Engine is though is my Super Game Engine to take my ideas to the Moon!

Features

  1. Entity Component System

    • SGE uses a EGS system in an Object type method (as opposed to data oriented) to organise its update loop and collisions.

    • The EGS system simplifies the update loop and event system somewhat for the user

    • This system is modeled after Unity's general setup to make a transition easier.

  2. Controller Support

    • The input system is set up such that given an acceptable mapping to a controller any modern controller should work.

    • The engine will increase in the controllers it support over time and by default will support all X-Input controllers.

  3. Texture Rendering

    • Texture rendering is currently implemented with caching implemented.

Long term Goals

  1. Tilemaps

    • The concept of many textures rendered with colliders considered for all them.

    • For this the Tilemaps would be considered statically collided

    • Textures would be reused and there would be a consideration for Animated Tiles.

  2. Packaging

    • Serialization does not come for free when you make your own engine.

    • Create a format to take all the data and package it up - textures and all.

  3. Audio

    • Currently, no consideration for Audio in the system

    • Should not be too big of an issue as I have done this before.

Next Features

  1. Player Movement stopped with Collision

    • Now collision has been implemented the next step is on collision halt the movement

    • This is to be implemented using a RigidBody component to handle the collisions.

  2. Split Textures or 'Sprites'

    • Textures are implemented but not the concept of rendering part of a texture.

    • This is required for text rendering and people rendering

  3. Text Rendering

    • Particularly useful for Scenes loaded on the fly or from file.

    • It is almost impossible to tell what is occurring during a given scene (create object or destroy) without debugging. Adding text fixes this and would allow us to test this functionality. It is also the start of tools.

    • This would be a split tileset and at first just a monospaced font.

  4. Loading Scenes, GameObjects and Components from File

    • Basically required for a 'GameEngine' is the concept that the data is not embedded into the code.

    • Add a format to load the whole game from File.

    • Unserialized at first, then look into the packaging process.

  5. Create Scenes, GameObjects and Components from a Tool

Licence

The code presented in under: Attribution-NonCommercial-ShareAlike 4.0 International licence as outlined in this page Licence.
Q: Why this licence? This project is publicly available at the moment as a portfolio piece not as a product.
Q: Can I use this for a commercial product / outside the licence? Message me if this is the case.

Terms

SGE

Short-hand for Super Game Engine

ECS

Entity Component System, comprises entities composed from components of data, with systems which operate on the components

Unreal 5

Unreal Engine 5 is a Game Engine from Epic Games

Unity

Unity Engine is a Game Engine

Godot

Godot is a free Game Engine

GameMaker Studio

Game Maker is a 2D Game Engine.

Last modified: 04 April 2024