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.
Key Features • Getting Started • Download • Contributing
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.
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.
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.
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.
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.
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.
- Download or clone the repository.
- Open
FinalEngine.sln
in your preferred IDE. - Build the solution (or use
dotnet build
).
- Release builds will be accessible on GitHub and as NuGet packages.
Follow our contribution guidelines here if you wish to contribute to the project.