Header menu logo Mibo

Mibo: A Functional Game Framework for F#

Mibo is a lightweight, Elmish-based game framework built on top of MonoGame. It brings the power of the Model-View-Update (MVU) architecture to game development, encouraging pure game logic and predictable state management.

Getting Started

To get started with Mibo, you need the dotnet SDK installed.

Install the templates:

dotnet new install Mibo.Templates

Create a new Mibo project using the provided template:

dotnet new mibo2d -n MyMiboGame
cd MyMiboGame
dotnet run

Or the 3D template:

dotnet new mibo3d -n MyMibo3DGame
cd MyMibo3DGame
dotnet run

If you prefer learning by example, the projects in src/Sample and src/3DSample show complete, working setups.

You can then start building your game using any of the following

Why Mibo?

Traditional game engines often rely heavily on mutable state and complex object hierarchies. Mibo offers an alternative:

Core Patterns

The Elmish Loop

Every Mibo game follows a simple loop:

  1. Init: Define your initial state.
  2. Update: Purely calculate the next state based on messages (input, timers, etc.).
  3. View: Describe what should be rendered based on the current state.
  4. Subscribe: Listen to external events like keyboard or touch input.

Semantic Input Mapping

Instead of checking for specific keys in your player logic, Mibo encourages mapping keys to Actions. This allows for easy input rebinding and multi-device support.

Getting Started

Run one of the samples, then copy its program setup (composition root) into your own project.

Documentation

Type something to start searching.