Skip to content

MaikKlein/unreal-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

21f0006 ยท Oct 2, 2022
Jan 17, 2022
Apr 17, 2022
Sep 11, 2022
Sep 3, 2022
Aug 27, 2022
Sep 3, 2022
Aug 31, 2022
Aug 31, 2022
Aug 16, 2022
Aug 31, 2022
Sep 2, 2022
Sep 1, 2022
Aug 3, 2022
Feb 16, 2022
Feb 16, 2022
Oct 2, 2022
Aug 31, 2022
Aug 17, 2022
Aug 31, 2022

Repository files navigation

๐Ÿฆ€ 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

About

Rust integration for Unreal Engine 5

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages