Cryru / Emotion

A game engine.
MIT License
56 stars 5 forks source link
c-sharp cross-platform emotion engine game game-development game-engine linux macos opengl

Emotion

CI-Windows

What is it?

Emotion is a cross-platform 2D oriented game engine written in C#. Its goal is to have no native dependencies and be truly portable (apart from the platform specific code of course). The core principle is that making games as a programmer should be about coding. Not about drag and drop interfaces and navigating menus, nor wrestling with linking libraries and making the same interfaces over and over again. I made this to provide indie developers (and mostly myself) with a foundation which can be extended and adapted to a game's needs.

Documentation

Check out the "Tests" project for examples, the comments in code, and the Emotion Examples project to learn more about how to use the engine. Proper documentation is a longterm goal.

Requirements for Developers and Players:

That's it.

Platforms

Supported platforms are those implemented in Emotion.Platform. You are free to implement one yourself. Refer to the code for more information.

The goal is for the following platforms to be supported:

Currently supported:

Note: WebAssembly support (Emotion.Web) isn't functional since .Net 7

Configurations Tested On:

Features So Far

and many more!

Building and Using

If you want to use all of Emotion's features such as, the testing library (Emotion.Test) to create unit/intergration tests for your game, the tools library (Emotion.Tools) to easily create developer tools (or use the included tools), or any of the plugins, you should clone the repo and build using Visual Studio 2019 or higher. Then reference the "Emotion" project in your project. It shouldn't take more than that.

If you just want to write some code or take it for a spin you can use the Nuget package - https://www.nuget.org/packages/Emotion The package includes a precompiled debug version of Emotion, but doesn't include any of the native libraries. You don't really need those for most use cases, but you can download them seperately from the repo at Emotion/AssetsNativeLibs.

It is recommended you develop with a cloned version of the Emotion repo referenced rather than using the precompiled nuget.

Projects Used

This includes dependencies and projects which were used for research references.

Library License Used For Inclusion
.Net Core MIT Runtime Nuget
System.Numerics MIT Data structures and hardware intrinsics Nuget
Forks
WinApi Apache Windows API Interop Headers Platform/Implementation/Win32/Native
OpenGL.Net MIT OpenGL API Platform/OpenGL
StbTrueType & StbTrueTypeSharp MIT & GPL3 Font Rendering Option and Comparison Referenced by Tests @ Tests/StbTrueType and Graphics/Text/StbGlyphRenderer
TiledSharp Apache 2.0 .TMX Support Uses custom XML and engine integration @ Standard/TMX
Optional
Roslyn/Microsoft.CodeAnalysis.CSharp MIT Runtime C# Script Compilation Emotion.Plugins.CSharpScripting
CimGui & CimGui.Net MIT Developer UI Emotion.Plugins.ImGuiNet, Precompiled for Mac64, Linux64, and Win64
ANGLE Google License Compatibility Precompiled for Win32 and Win64, Add "ANGLE" symbol
llvmpipe / Gallium / Mesa MIT Compatibility via Software Renderer Precompiled for Win32 and Win64
Glfw & Glfw.Net Zlib Mac and Linux Window Creation Precompiled for Mac64, Linux64, Win32, and Win64, Add "GLFW" symbol
OpenAL-Soft & OpenAL.NetCore LGPL & MIT Mac and Linux Audio Precompiled for Mac64, Linux64, Win64, Add "OpenAL" symbol
Assimp & AssimpNet Modified BSD Reading FBX files The Emotion build tool
Assimp (Engine) & Silk.NET.Assimp Modified BSD & MIT 3D Model preview and conversion Add "ASSIMP" symbol
SixLabors.ImageSharp Six Labors Split License Developer loading and conversion of unsupported image types such as "jpg" Add "MORE_IMAGE_TYPES" symbol
References
McGill Engineering X Hardening WAV and Audio Implementation None
PNGSuite X Hardening PNG Implementation None
OpenType.JS X Font Parsing Reference None
Nine.Imagine X Image Parsing Comparison None
ImageSharp X Quirky Image Format Reference None
OpenAL-Soft X Audio Code Reference None
NAudio X Audio Code Reference None
Audacity X Audio Code Reference None
Astiopin's SDF generator X EmotionSDF4 atlas generation reference None

If you're distributing code using this project include the "LICENSE THIRD-PARTY" file from the repository.

Inspired By: