omegaengine

DirectX 9-based general-purpose 3D graphics engine for .NET Framework 2.0 and up

OmegaEngine

Build status
The OmegaEngine is a general-purpose 3D graphics engine written in C# using the .NET Framework 2.0 and DirectX 9 via SlimDX. The engine is designed to be light-weight, modular and gameplay-agnostic.
The complementary OmegaGUI, AlphaFramework and AlphaEditor help you build games using the OmegaEngine.

Documentation

Code sample

Renders a textured sphere:

var engine = new Engine(...);
var scene = new Scene
{
    Positionables = {Model.Sphere(engine, XTexture.Get(engine, "flag.png"))}
};
var view = new View(scene, new TrackCamera());
engine.Views.Add(view);

Downloads

Prerequisites:

OmegaEngine NuGet packages

API documentation

  • OmegaEngine is the main package. If you are unsure where to start, this is a safe bet.
  • OmegaEngine.Backend contains the actual library binaries for the OmegaEngine without the default assets (content and shader files). It is automatically included by the main package. Use this package directly if another project in your solution with the same build output directory already references the main package to avoid duplicating the assets.
  • OmegaGUI is a skinable GUI toolkit for the OmegaEngine with an XML file format und Lua scripting. The AlphaEditor contains a WYSIWYG editor for the toolkit.

AlphaFramework NuGet packages

API documentation

The AlphaFramework is a Model-View-Presenter framework for creating game worlds based on OmegaEngine.

  • AlphaFramework.World is used to build Models.
  • The OmegaEngine acts as a View.
  • AlphaFramework.Presentation is used to build Presenters that bind Models to Views.
  • AlphaEditor is an IDE-like editor for AlphaFramework games. You can use it to create GUI screens, maps, particle systems, etc…

Visual Studio templates

The OmegaEngine Templates Visual Studio extension can help you to quickly set up a suitable structure for an OmegaEngine project.

Frame of Reference

API documentation

“Frame of Reference” is the official sample game for the OmegaEngine. It is included in the OmegaEngine source code but is not a part of the released library binaries.
The FrameOfReference\Game project places the files _portable and config\Settings.xml in the build directories which together cause the game content files to be loaded from \content\.
When releasing the binaries as standalone applications these files are not present and game content files are instead expected be located in a subdirectory of the installation path named content.

To open the Debug Console when running the sample project press Ctrl + Alt + Shift + D.

Command-line arguments for the sample project:

Usage Description
/map MapName Loads MapName in normal game mode
/modify MapName Loads MapName in modification mode
/benchmark Executes the automatic benchmark
/menu MapName Loads MapName as the background map for the main menu

Source structure

Path Description
\build.ps1 A script that compiles the entire project
\src\ The actual source code in a Visual Studio project
\lib\ Pre-compiled 3rd party libraries which are not available via NuGet
\nuget\ Specification files for building NuGet packages
\templates\ Source code for Visual Studio templates
\doc\ Files for creating source code documentation
\content\ Game content files (.X files, PNGs, …)
\artifacts\Debug\ The compiled debug binaries (created by \src\build.ps1 Debug)
\artifacts\Release\ The compiled release binaries (created by \src\build.ps1 Release)
\artifacts\Packages\ The compiled NuGet packages (created by \nuget\build.ps1)
\artifacts\Templates\ The packaged Visual Studio templates (created by \templates\build.ps1)
\artifacts\Documentation\ The compiled source code documentation (created by \doc\build.ps1)

VERSION contains the version numbers used by build scripts. Use .\Set-Version.ps1 "X.Y.Z" in PowerShall to change the version number. This ensures that the version also gets set in other locations (e.g. GlobalAssemblyInfo.cs).

The build.ps1 script assumes that Visual Studio 2017 or newer is installed. To compile the included shader code the DirectX SDK needs to be installed.

The engine requires shader files to be located in a subdirectory of the installation path named Shaders.