---
title: "Choosing An Engine"
date: 2019-05-22T09:53:32-07:00
weight: 5
---

Encompass is not a game engine.

It does not provide any tools for drawing graphics to the screen, playing sounds, handling inputs, or anything of the sort.

Encompass is purely a tool for managing the code that handles the *simulation* aspects of your game.

That means it needs to run on top of an engine.

**Which engine should I use?**

Ultimately, this is a question that you have to answer for your project. Is there an engine you're already comfortable with? Which platforms are you targeting? Linux? PS4? Android? Are there any features you would really like to have, like a built-in physics simulator? These are questions that could help you choose an engine.

Encompass-CS can hook into any engine that supports C# scripting.

So you have a lot of choices!

Here are some engines that I have used:

[FNA](https://fna-xna.github.io/) is a free-software implementation of the XNA 4.0 libraries. It is very portable and stable and dozens of games have shipped with it. We are using it to build Samurai Gunn 2 and it has been delightful to work with.

[MonoGame](http://www.monogame.net/) is another popular cross-platform 2D/3D framework, also based on XNA but deviates in a few crucial ways.

[sokol-sharp](https://github.com/lithiumtoast/sokol-sharp) is a C# wrapper for the Sokol game library. It features powerful support for modern 3D APIs.

Unity uses C# scripting, but you would have to adapt Encompass to the bastardized Unity architecture. I personally have never tried this but you are certainly welcome to give it a shot!

Encompass gives you the power to develop using many different frameworks and engines, so feel free to experiment and find one you like! It's actually very easy to switch engines, because the simulation layer is mostly self-contained. Most of your engine coupling will probably be in your renderers.
