# Nu Game Engine: F# APIs for 2D and 3D game development

> Nu is an F# game engine for developers who want to build 2D or 3D games through ImSim or MMCC instead of relying entirely on imperative game code. Its custom dual license, limited setup instructions, and documented WIP samples make adoption require a closer look than the rendering feature list suggests.

**bryanedds/Nu** — Repository hosting the functional Nu Game Engine and related projects.

- Repository: https://github.com/bryanedds/Nu
- Stars: 1,379 · Forks: 204
- Language: F#
- License: NOASSERTION
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/bryanedds-nu

## Nu's problem is game code that keeps accumulating state changes

Nu Game Engine targets developers who want to make 2D or 3D games in F#. Its central concern is architectural rather than graphical. The README says Nu was created as an alternative to highly imperative game programming approaches, where small changes accumulate into difficult-to-manage behavior over time. That is a real design choice, not a cosmetic preference. A team adopting Nu is also deciding to express game structure in a functional language and work with one of the engine's declarative APIs.

The repository contains Breakout examples for both supported programming models. Breakout ImSim presents the immediate-mode path, while Breakout MMCC presents the Model-Message-Command-Content path. This pairing is useful for evaluation because it exposes the same sample genre through two different APIs. Twenty 48 provides a separate 2D puzzle tutorial, Terra Firma is a 3D third-person sample, and the repository also links prototype projects for Project 5 and Project Race. Omni Blade is identified as a commercial game demo, although its full game is distributed separately.

Nu is therefore both an engine and a collection of reference projects. The intended audience includes developers evaluating F# game development, not only teams looking for a conventional editor-driven production pipeline. The README also describes WYSIWYG editing, hot asset and live code reloading, and direct editing of game state. Those features suggest an editing workflow, but the README does not explain how the editor is launched or whether it is part of every project template.

## ImSim and MMCC define two routes through a Nu game

ImSim is described as Nu's immediate-mode API based on ImGui. In that model, interface-like game state is expressed through immediate interactions rather than a retained command model. The Breakout ImSim project is the documented route for examining this style. 

MMCC stands for Model-Message-Command-Content. The README identifies this as a model-driven API, and the Breakout MMCC sample exists specifically to demonstrate it. The terminology points to game data and actions being organized as explicit models, messages, commands, and content rather than being assembled entirely as immediate calls. That model-oriented direction is Nu's main answer to the complexity it attributes to imperative game programming.

The engine layer uses SDL3 and Vulkan, with Box 2D for 2D physics and Jolt for 3D physics. The repository's recent release descriptions also mention ImSim changes, Vulkan fixes, lighting, rendering, Android work, and new user-defined 3D rendering workflows. These details show that Nu covers engine infrastructure as well as programming models, but they do not reveal the internal scene graph, update loop, or message dispatch sequence. Any evaluation should therefore inspect the selected sample's source rather than infer exact runtime behavior from the acronym.

## Rendering spans 2D, 3D, and editor-assisted workflows

Nu's rendering documentation covers a broad set of real-time effects. The README shows deferred, physically based rendering with dynamic lighting, shadows, and image-based lighting. It also lists instancing by default, screen-space reflections, subsurface scattering, screen-space refraction, bloom, tone mapping, exposure controls, chromatic aberration, clear coat, and algebraic terrain rendering. Soft shadows, volumetric fog, and depth of field are associated with a newer Vulkan renderer screenshot.

That feature set is not merely generic 2D support. The repository includes Terra Firma as a third-person 3D game, Project Race as a prototype using Nu and Jolt Physics, and Omni Blade as a 2D indie RPG demo. Box 2D and Jolt are named separately for dimensional physics, which gives developers a concrete split between their 2D and 3D simulation work.

Nu also describes real-time WYSIWYG editing with hot asset and live code reloading. Another screenshot shows direct editing of game state and support for undo and redo of gameplay. These capabilities may reduce the gap between authoring and execution, but the README does not document asset formats, scene serialization, editor commands, or whether every sample uses the same editor workflow. The screenshots demonstrate advertised interfaces, not installation steps or compatibility guarantees.

## Getting started begins with the wiki and sample projects

The README does not provide a package-manager installation command, a prerequisite list, or a first-launch configuration block. It explicitly sends new users to the introductory material in the Nu wiki before showing other projects. That is the documented starting point, so an invented `dotnet` or package command would be misleading. The repository does expose `Nu.slnx`, several platform scripts such as `Configure.Linux.Application.sh` and `Configure.Linux.Development.sh`, and `PropagateDefaultAssets` scripts, but the README does not explain when those files should be run.

A practical first use begins by opening the introductory material, then comparing `Projects/Breakout%20ImSim` with `Projects/Breakout%20Mmcc`. The first teaches the immediate-mode route and the second teaches MMCC. For 2D puzzle work, `Projects/Twenty%2048` is a separate tutorial. A developer evaluating 3D can inspect `Projects/Terra%20Firma`, while the repository links to the WIP Project 5 and Project Race prototypes and contains `Projects/Omni%20Blade` on the `omni-blade` branch.

The documentation also links to the Nu API reference at `https://bryanedds.github.io/Nu/`. Until the wiki supplies the platform-specific setup sequence, the verifiable first step is to compare the tutorial branches and API reference rather than to assume that cloning the repository alone creates a runnable project.

## The custom license blocks an easy commercial decision

Nu does not use a standard open source license identified by the repository metadata. Its README states a dual-licensing model with the Nu Game Engine Noncommercial License and the Nu Game Engine Commercial License. The repository license permits distribution of software made with Nu when it is distributed without charge and does not compete with Nu Game Engine itself. The exact terms are in `License.md`; this review does not interpret them as legal advice.

Commercial distribution is available through a separate license offered by Form Factor Technologies. The README states a fee of $99 USD for distribution of commercial software made with the engine for one year, under the condition that the software does not compete with Nu Game Engine. It also states that the commercial license includes 10 hours of first-priority development support per licensing term within 12 business hours through Discord or the listed support email.

This model has a direct consequence for adoption. Noncommercial work may fit the repository license if its distribution is free and noncompetitive. A paid game cannot simply assume that the source repository grants the needed rights. Teams also need to check what happens after the one-year term and whether their distribution model matches the stated conditions. The custom classification is not a minor packaging detail because it changes who can ship software using Nu.

## Nu's trade-off is a distinctive F# workflow with thinner adoption instructions

Nu is a reasonable candidate for a developer who wants to evaluate functional or model-driven game architecture in F#. The paired Breakout samples make that choice concrete, and the repository includes both 2D and 3D projects rather than presenting only a rendering component. The recent release history also shows work on Vulkan, ImSim, Android, rendering, and lighting. The last push was on 2026-10-15, so the repository is not archived and its recent activity is documented.

The limitation is operational documentation. The README sends users to a wiki for introductory material but does not itself provide a complete installation procedure, platform prerequisites, or commands for launching a sample. It also labels Project 5 and Project Race as WIP prototypes. That does not make them unusable, but it makes their status materially different from a finished tutorial or engine release.

A real alternative is an established imperative game-engine workflow in which systems expose conventional imperative APIs and the editor owns the usual scene and asset pipeline. Nu takes a different approach by centering F# and offering ImSim or MMCC, with SDL3, Vulkan, Box 2D, and Jolt underneath. Teams that prioritize familiar imperative APIs, documented onboarding, or a standard open source license may find that alternative easier to assess. Teams that want to work in F# with Nu's declared APIs still need to inspect the wiki and sample projects closely.

## Recent Nu releases show active feature work, not a settled interface

The release list provides the clearest maintenance signal. Version `v20.3.0` was published on 2026-10-15 with anisotropic lighting and a new user-defined 3D rendering workflow. Version `v20.2.0` was published on 2026-10-03 with Vulkan fixes, ImSim changes, and a new radius value for point and spot lights. Version `v20.1.0` was published on 2026-09-11 with rendering improvements, Android fixes, and general maintenance.

The repository is not archived, and the last push was on 2026-10-15. These facts support describing a recent release cadence at the stated dates, but they do not establish the stability of every API. Changes in ImSim and rendering workflows may require developers to follow release-specific migration work, although the README and release descriptions do not document compatibility guarantees or upgrade procedures.

Before choosing a version, engineers should compare the release notes with the tutorial they plan to use. A project based on Breakout ImSim may be affected by ImSim changes, while a 3D project may depend on the newer rendering workflow or lighting values. The README and release list do not state rollback behavior, semantic versioning policy, or a formal upgrade guide, so those checks belong in the evaluation.

## Conclusion

Nu fits F# developers and small teams that want to work through ImSim or MMCC and can accept a custom license. It is a poor fit for commercial projects that need the noncommercial license or need a documented, command-based setup path. Before adopting it, verify that the wiki's introductory workflow covers the intended platform and that the $99 commercial license permits the planned distribution.

## FAQ

### How do I install Nu Game Engine?

The README does not provide installation commands or prerequisites. It directs new users to the Introductory Material in the Nu wiki, then points them to the Breakout ImSim and Breakout MMCC sample projects.

### Which programming APIs does Nu Game Engine support?

Nu documents an immediate-mode API based on ImGui called ImSim and a model-driven API called MMCC. The repository includes Breakout tutorials for both APIs.

### Can I use Nu Game Engine for a commercial game?

The README describes a Nu Game Engine Commercial License available for a fee of $99 USD. It states that commercial software may be distributed for one year under the condition that it does not compete with Nu Game Engine.

## Sources

- [bryanedds/Nu on GitHub](https://github.com/bryanedds/Nu)
- [Issues](https://github.com/bryanedds/Nu/issues)
- [README](https://github.com/bryanedds/Nu/blob/master/README.md)
- [Releases](https://github.com/bryanedds/Nu/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bryanedds-nu
