Open-source project
MaikKlein/unreal-rust avatar
MaikKlein/unreal-rust

unreal-rust pins version 5.0 and means the newest engine

Rust integration for Unreal Engine 5

2,249 stars93 forksRustApache-2.0

At a glance

What is it?
unreal-rust is a Rust integration for Unreal Engine 5 delivered as a plugin rather than an engine modification. Its own README calls it a proof of concept, and its supported-version list names 5.0 before promising to track the newest engine build.
Who is it for?
unreal-rust suits a developer prototyping gameplay logic in Rust who already has Unreal Engine 5 installed and accepts breaking API changes between visits. It does not suit production work on a fixed engine version, on macOS, or on any console platform, and the project says so itself.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Activity is slowing. The repository last received commits 7 months ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

It is a plugin, so nothing in the engine is modified

The most consequential choice in this project is architectural and it comes first in the feature list: no engine modifications. unreal-rust ships as a plugin you drop into your project, which means you are not maintaining a forked engine build and you are not rebuilding Unreal from source to add Rust. The second feature is what it calls simple opinionated bindings, covering core APIs such as playing sounds, spawning actors, pathfinding and physics. Opinionated is doing real work in that sentence: it signals that the ergonomics are chosen for you rather than mapped one to one onto the engine's own API, which is a relief and a constraint at the same time. Everything else in the list builds on those two. There is editor integration, so Rust components can be attached to actors in the editor and read back from Blueprint to drive animations. There is hot reloading in the editor and during live play, with panics caught rather than taking the editor down. And the foundation underneath is an Entity Component System.

The warning at the top rules out production use

The README opens its body with a warning that is unusually direct. It says unreal-rust is not ready to be used in a real project, that it is in a very early state and nothing more than a proof of concept, that the API will change quite frequently, and that things might crash or not work as intended with a poor user experience. The stated reason for publishing anyway is to develop it in the open. That framing governs how you should read every other claim on the page. A feature described as available is available today, not a contract. The known-problems section adds the human factor: it is a hobby project worked on outside normal work hours, so responses to issues, questions, feature requests and pull request reviews may be slow. Between the two, the practical reading is that this is a place to experiment and to read, not a dependency to pin in a shipped game. Two files at the repository root carry the terms, one for MIT and one for Apache.

Supported versions names 5.0 and then promises the newest one

The supported versions section reads oddly and is worth quoting exactly. It lists 5.0, then says the project will always try to support the latest version, and then lists the newest Unreal build, the newest Rust, and the newest of all dependencies. So the one concrete number is a floor, and the actual policy is chase-the-newest on three axes at once. That is an unusual combination for an engine binding, where compatibility is normally pinned because the plugin links against engine internals. On the platform side the list is Linux and Windows, with iOS, macOS, Android and html5 or browser named as potential future platforms and consoles excluded outright. The stated reason for the console exclusion is practical rather than technical: it is a closed ecosystem, the author has no developer kits and cannot offer console support. That boundary is permanent as written, so any project targeting consoles rules this out before evaluating anything else.

Cloning the example means fetching a submodule of assets

Getting the sample running takes a sequence of commands, and the author pre-empts the frustration with an apology about the number of steps. The prerequisites are Unreal Engine 5, git lfs with git lfs install run, Rust, and ue4cli installed with pip3 install ue4cli, which is optional but used throughout the guide.

bash
git clone https://github.com/MaikKlein/unreal-rust
cd unreal-rust
git submodule update --init

The submodule matters: it is where the example project and its assets actually live, which is why a plain clone leaves you without a runnable project. A .gitmodules file at the repository root and a submodule-based example/ directory are the visible consequences. The next step is setup, with sh setup.sh on Linux or Setup.bat on Windows. That step symlinks the RustPlugin directory into the unreal example/RustExample/Plugin folder, which is how a plugin gets into a project without copying files by hand.

Build the library, rename it, then build the engine project

The Rust side is a single build from the workspace root, and the Cargo.toml defines six members: unreal-api, unreal-ffi, unreal-reflect, unreal-api-derive, unreal-rust-example and gameplay-plugins/unreal-movement.

bash
cargo build --release

The output has to be copied into the Unreal binaries directory under a different name, and that rename differs per platform: libunreal_rust_example.so becomes rustplugin.so on Linux, and unreal_rust_example.dll becomes rustplugin.dll on Windows. That mismatch between the crate name and the loaded library name is a detail worth remembering when a load fails. The engine side then builds and runs through two ue4 commands, ue4 build Development Editor followed by ue4 run. What you should see is the example project launching with the Rust plugin loaded.

Most of the engine is reachable only as a Rust component

The feature list names its own biggest gap, and reading it carefully saves a lot of wasted design work. Most gameplay features such as GameMode, Characters, GameState and GAS are not directly accessible in unreal-rust. The stated alternative is that unreal-rust will provide optional alternatives instead. The mechanism that keeps the door open is that the bindings are built on top of AActor, and Rust components can be accessed in Blueprint, so you can drive an engine system from the editor or from Blueprint by going through a component rather than calling the system directly from Rust. That is a workable pattern and a real constraint: anything outside the actor model needs an adapter written by the project, and the README frames those adapters as optional and coming later. The ECS foundation interacts with this design, since actors and components are what the entity system wraps. For a team whose gameplay logic is expressed as data on actors, that fits. For a team whose architecture centers on GameMode or the Gameplay Ability System, the cost of the bridge falls on you.

Where unreal-rust is the wrong tool

Four cases rule it out quickly. The first is any project that cannot accept a changing API, because the project itself says the API will change quite frequently and panics are expected during development. The second is a fixed engine version. The version policy is to track the newest Unreal release, so there is no promise that a specific engine version keeps working, and upgrading the engine means rebuilding against internals. The third is platform coverage: only Linux and Windows are listed, macOS and Android are named as potential, and consoles are refused outright because of developer kit access. The fourth is team shape. A hobby project maintained outside work hours with slow issue response is a poor foundation for a production title, and the two alternatives named in the README make that comparison concrete. UnrealCLR takes the other approach of running a .NET runtime inside Unreal, and Unreal Angelscript embeds a scripting language with engine-facing tooling. The difference in approach is the point: this project compiles Rust into a plugin, while those two host a managed runtime, so the trade is native speed and a rougher API against immediate access to engine object models.

Editorial conclusion

unreal-rust suits a developer prototyping gameplay logic in Rust who already has Unreal Engine 5 installed and accepts breaking API changes between visits. It does not suit production work on a fixed engine version, on macOS, or on any console platform, and the project says so itself. Before adopting, follow the example path end to end with the workspace build and the ue4 commands, and read the AActor-based design note, since GameMode, Characters, GameState and GAS are not directly reachable from Rust.

Frequently asked questions

Is unreal-rust ready for production use?

No. The README states it is not ready to be used in a real project, that it is a proof of concept, that the API will change quite frequently, and that things might crash or not work as intended.

Which Unreal Engine versions does unreal-rust support?

The supported versions section lists 5.0 and then says the project will always try to support the latest version of Unreal, Rust and all dependencies. Linux and Windows are the supported platforms; consoles are explicitly unsupported.

How do I build the unreal-rust example?

Clone the repository, run git submodule update --init, run setup.sh on Linux or Setup.bat on Windows, then cargo build --release and copy the resulting library into the Unreal Binaries directory. The engine build uses ue4 build Development Editor and ue4 run.

Can I access GameMode or the Gameplay Ability System from Rust?

Not directly. GameMode, Characters, GameState and GAS are named as not directly accessible, since the bindings are built on top of AActor. Optional alternatives are planned, and Blueprint can still reach Rust components.

Does unreal-rust modify the Unreal Engine installation?

No. It is distributed as a plugin you drop into your project, and the setup script symlinks the RustPlugin directory into the example project's Plugin folder rather than patching the engine.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. MaikKlein/unreal-rust on GitHub
  4. README