Skip to content

Mastardy/WCGE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WCGE

WCGE (W Custom Game Engine) is a lightweight C++ game engine built from scratch as a learning-oriented project, focused on understanding the internals of modern real-time engines: rendering, math, input, resource management, an entity–component layer, and a custom physics module.

Features

  • Custom Math Library — vectors, matrices, and transforms implemented from scratch
  • OpenGL Renderer — built on GLAD and GLFW, with shader, texture, mesh, and material abstractions
  • Entity–Component System — composable entities with reusable components (Transform, etc.)
  • Resource Manager — centralized loading and caching of shaders, textures, and meshes
  • Input System — keyboard and mouse polling
  • Physics Module — work-in-progress physics engine, including 2D collision primitives
  • Logging & Time — minimal utilities for diagnostics and frame timing
  • Sandbox Application — example client app demonstrating engine usage

Project Structure

WCGE/
├── WCGE/              # Engine static library
│   └── src/WCGE/
│       ├── Core/      # Math, Logging, Time
│       ├── Graphics/  # Renderer, Window, Shader, Texture, Mesh, Material
│       ├── Input/     # Input handling
│       ├── EntityComponent/
│       ├── Physics/
│       └── Resources/
├── Sandbox/           # Example application using the engine
├── ThirdParty/        # GLAD, GLFW, FastNoiseLite
└── WCGE.sln           # Visual Studio solution

Requirements

  • Visual Studio 2019 or later (with the C++ Desktop workload)
  • Windows 10 / 11
  • A GPU supporting OpenGL 3.3+

Third-party dependencies (GLAD, GLFW, FastNoiseLite) are vendored under ThirdParty/ — no external setup is required.

Building

  1. Clone the repository:
    git clone https://github.com/<your-user>/WCGE.git
  2. Open WCGE.sln in Visual Studio.
  3. Select the Sandbox project as the startup project.
  4. Build and run (F5).

Usage

A minimal client application looks like this:

#include <WCGE.hpp>
#include <WCGE/EntryPoint.hpp>

using namespace WCGE;

class MyGame final : public Application
{
public:
    MyGame()
    {
        window = new Graphics::Window(1280, 720, "My Game", false);
    }

    void Start() override     { /* initialize entities */ }
    void Update() override    { /* per-frame logic */ }
    void LateUpdate() override
    {
        if (Input::GetKey(Key::Escape)) isRunning = false;
    }
};

Application* WCGE::CreateApplication() { return new MyGame(); }

See Sandbox/src/Application.cpp for a complete example.

Status

WCGE is an active learning project. APIs are not stable and may change between commits. The physics engine in particular is in early development.

Third-Party Libraries

License

Released under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors