/FinalEngine

This repository is a WIP cross-platform Game Engine developed in C#.

Primary LanguageC#Apache License 2.0Apache-2.0

GitHub-Mark-LightGitHub-Mark-Dark

Final Engine is an open-source, cross-platform Game Engine developed in C# 11.0, using .NET 7.0. What began as a hobby project has rapidly evolved into a project that I'm committed to maintaining and developing actively over time. The primary objective of Final Engine is to offer a feature-rich Game Engine that prioritizes simplicity and accessibility for new users. Our mission statement:

Create an engine that makes game development enjoyable, straightforward, and effortless while granting users complete creative freedom.

Discord GitHub issues

Key FeaturesGetting StartedDownloadContributing

Screenshot

Key Features

Cross-Platform Compatibility

Built using C# 11 and .NET 7.0, the engine boasts excellent cross-platform compatibility. It's important to note that while the engine is actively in development, some features might not function as expected on certain platforms. If you encounter any issues while using Final Engine on a specific platform, please don't hesitate to report it.

Advanced Rendering API

Final Engine offers a meticulously designed, feature-rich rendering abstraction layer built over OpenGL (with plans to support additional backends like Direct3D and Vulkan in the future). This API empowers users to engage directly with the graphics card while also providing systems and features for easily rendering meshes and sprites within scenes.

Rendering Engine

Final Engine has a powerful forward rendering engine that encapsulates a blend of simplicity and robust capabilities. Continuously evolving through active development, the current feature set includes:

  • Forward Rendering: Embraces a classical rendering pipeline for efficient processing.
  • Mesh Rendering: Empowers diverse rendering of intricate mesh structures.
  • Camera System: Orchestrates scene views and perspectives seamlessly.
  • Material System: Enables the utilization of Diffuse, Specular, and Normal Mapping for versatile surface aesthetics.
  • Lighting: Embodies the esteemed Blinn-Phong Lighting Model for lifelike illumination.
  • Light Sources: Encompasses Directional, Point, and Spot lights for scene ambiance.
  • Global Illumination: Augments scene realism through ambient lighting.

More rendering features are constantly being added to Final Engine, check out the features list.

Entity-Component-System (ECS) Architecture

Driven by the ECS architectural pattern, Final Engine employs the entity-component-system model to power its core functionality. Learn more about ECS here. This architectural choice serves as the foundation of the engine, enabling swift game design while maintaining a clear separation of concerns.

Effortless Resource Management

Final Engine incorporates a straightforward and user-friendly Resource Manager to handle various resources utilized within the engine (such as audio, textures, and shaders). Expanding the engine with new resources is made simple through the ResourceLoaderBase abstraction and the IResourceManager.RegisterLoader method.

We're actively developing an editor application for creating games using Final Engine. This editor will grant users the ability to craft entities, components, systems, manage projects, scenes, and resources. Our goal is to offer a preview of the editor by 2024.

image

Getting Started

Below are the prerequisites and instructions for building the engine.

Feel free to reach out to us on Discord if you encounter any challenges while setting up the engine or working with its features. Please note that comprehensive user documentation, including tutorials, have not yet been provided. Your inquiries and feedback are greatly valued as they contribute to the ongoing development of our project.

Prerequisites

Building on Windows, Mac, and Linux

  1. Download or clone the repository.
  2. Open FinalEngine.sln in your preferred IDE.
  3. Build the solution (or use dotnet build).

Download

  • Release builds will be accessible on GitHub and as NuGet packages.

Contributing

Follow our contribution guidelines here if you wish to contribute to the project.