1.44 MB 3D game engine made in C++17 with OpenGL holding in a floppy disk
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Engine
Lib
.gitignore
CMakeLists.txt
LICENSE
README.md

README.md

Floppy-Bug

Floppy-Bug is a game created for the Floppy game jam with the OOM-Engine, a custom game engine realized for the occasion.

The game was created by :

The game won the design and the quality prices and the second place in gameplay :

OOM-Engine

1.44 MB 3D game engine made in C++17 with OpenGL holding in a floppy disk. The engine fits in 440 KB only and was made for the Floppy game jam in approximately 15 days.

Third party libraries :

The project is under CMake 3.2 and is compatible (tested) with Microsoft Visual Studio 2017 (CMake support). The engine is no more compatible with GCC since DirectX headers have missing definitions.

Scene example preview

Features

General

  • Full entity-component pattern
  • Game objects
  • A complete SDK

Rendering

  • Post-processing

    • Post-processing stack
    • Vignette
    • Depth of field
    • Fog
    • FXAA
  • Renderer

    • MeshRenderer
    • TextRenderer
    • SpriteRenderer
  • Lighting

    • Directional light
    • Point light
  • Debug

    • Gizmos (Box, Cone, lights etc.)
    • Lines
    • Rays

Audio

  • DirectX (Direct Sound)
    • Wav file loading
    • 3D Audio listener
    • 3D Audio source
    • Support of WAV files
    • Support of OGG files

Physics

  • Integration of qu3e
    • Box collider
    • Rigid body
    • Ray cast

Usage

Code

#include "SDK/SDK.hpp"

int main(int argc, char** argv)
{
    Sdk::Debug::EnableGizmo(EGizmo::Axis);
    Sdk::Debug::EnableGizmo(EGizmo::Grid);
    Sdk::Debug::EnableGizmo(EGizmo::Transform);
    Sdk::Debug::EnableGizmo(EGizmo::AllColliders);

    Sdk::GameObject::CreateFreeCamera();
    Sdk::GameObject::CreateDirectionalLight();

    // Import a mesh
    Sdk::Import::ImportMesh("Resources/Mesh/Mesh_Cube.obj");

    // Create the ground
    auto* p_ground_go   = Sdk::GameObject::CreateGameObjectFromMesh("Cube");
    auto* p_ground_body = p_ground_go->AddComponent<CRigidBody>();
    auto* p_ground_box  = p_ground_go->AddComponent<CBoxCollider>();

    // The ground is a static body
    p_ground_body->SetBodyType(CRigidBody::EBodyType::Static);

    return 0;
}