# C# Game Project Template > A modular template for building games using my C# game engine. --- ## 📦 About This repository provides a starting point for developing games using my C# game engine. It is structured to separate shared game logic from platform-specific implementations. I mostly use it for my own projects. ## ✨ Uses - [MonoGame](https://monogame.net/) Integration, for it's windowing, audio, packaging etc. You might wanna get familiar with it since most stuff is not abstracted yet like audio. - [Yaml](https://yaml.org/) Integration, for serialization - [LiteNetLib](https://revenantx.github.io/LiteNetLib/index.html) Integration, for networking ## 🧱 Project Structure ```txt 📁 Root/ ├── Shared/ # Game logic ├── Platforms/ │ ├── Desktop/ # Desktop build target (Windows/Linux/macOS) │ └── Server/ # Headless/server build target ├── Engine/ # Game engine (as a Git submodule) └── README.md ``` ## 🚀 Getting Started ### 1. Clone the Repository (with Submodules) ```bash git clone --recursive https://git.syntriax.com/Syntriax/Engine-Template.git ``` ⚠️ Make sure to use --recursive to initialize all submodules correctly. If you've already cloned the repo without submodules, run: ```bash git submodule update --init --recursive ``` ### 2. Write Your Logic Code All your universe logic should go inside the Shared/ folder. This structure allows your code to be reused across multiple platform targets like Desktop and Server. ```txt 📁 Root/ └── Shared/ └── Behaviours/ ├── Movement.cs └── Jump.cs ``` ### 3. Add Your Objects to Your Universe `Shared/UniverseSource.cs` is set up to be your main shared entry point where you can define your universe objects and their behaviours, add systems you see fit etc. ```txt 📁 Root/ └── Shared/ └── UniverseSource.cs ``` ### 4. Set Project Names (Optional) Update every mention of the `MyUniverse` to reflect your project's name and namespace. For example: ```csharp MyUniverse.Shared.UniverseSource.ApplyUniverse(universe); ``` ## 🛠 Requirements - .NET SDK (version 9)