#unreal-engine #integration #api

macro maikklein/unreal-api-derive

Rust integration for Unreal Engine 5

1 unstable release

0.1.0 Aug 3, 2022

#986 in Procedural macros

2,121 stars & 45 watchers

MIT/Apache

10KB
223 lines

🦀 unreal-rust

Opinionated Rust integration for Unreal Engine

Build Status LICENSE LICENSE Discord

☣️ Warning

unreal-rust is not ready to be used in a real project. unreal-rust is in a very early state and nothing more than a proof of concept right now. The API will change quite frequently. Things might crash, or not work as intended. The user experience will not be great.

I am releasing unreal-rust on github to develop it in the open.

🎯 Features

  • Simple opinionated bindings: Easy access to core APIs like playing sounds, spawning actors, pathfinding, physics etc.
  • Developer friendly: Fast iteration times with hot reloading in the editor and during live play. Panics are caught and do not crash the editor
  • Editor integration: Add Rust components to actors in the editor, or access Rust components from Blueprint to drive animations.
  • Entity Component System: unreal-rust is built on top of an ECS.
  • Built on top of AActor: Most gameplay features like GameMode, Characters, GameState, GAS are not directly accessible in unreal-rust. Instead unreal-rust will provide optional alternatives. But you can still interact with most parts of the engine as Rust components can be accessed in Blueprint.
  • No engine modifications: unreal-rust is only a Plugin, just drop it in your project. See Supported versions for more information.
  • Samples: The development of unreal-rust is heavily driven by samples.
  • Free: Dual licensed under MIT/APACHE

🖥️ Supported Platforms

  • 🐧 Linux
  • 🪟 Windows

Potential future platforms: iOS, macOS, Android, html5/browser(possibly)

Consoles are unsupported. I simply can not offer console support as it is a closed off ecosystem. Nor do I have access to any developer kits myself.

💌 Blog posts / media

🚩 Known problems

  • This is just a hobby project of mine that I work on outside of my normal work hours. I might be slow to respond to issues, questions, feature requests, or PR reviews.

🦮 Getting started

Running the example

I am aware that these are a lot of steps. I am sorry, I will try to simplify this in the future

  • Prerequisites:
    • Get git lfs, and run git lfs install
    • ue4cli, You can get it with pip3 install ue4cli. This step is optional but I will use ue4cli in this guide.

We start by cloning this repository

git clone https://github.com/MaikKlein/unreal-rust

Next we clone the submodule. This will download the actual example with all the assets.

cd unreal-rust
git submodule update --init

Next we need to setup the example

    • Linux sh setup.sh
    • Windows setup.bat

This will symlink the RustPlugin into the unreal example/RustExample/Plugin folder.

Now we need to build the actual Rust code:

Simply run

cargo build --release

This will build the whole project. This also produces our dll that we are going to load into Unreal.

Copy the dll/so file into the project

  • Linux: cp target/release/libunreal_rust_example.so example/RustExample/Binaries/rustplugin.so
  • Windows: copy .\target\release\unreal_rust_example.dll .\example\RustExample\Binaries\rustplugin.dll

Now we need to build the unreal example

cd example/RustExample
ue4 build Development Editor

Now you can run the example with ue4 run

🚀 Supported versions

  • 5.0

This project will always try to support the latest version.

  • Latest version of Unreal
  • Latest version of Rust
  • Latest version of all dependencies

🤝 Alternatives

🥰 Thank you

Dependencies

~2.5MB
~53K SLoC