Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 20 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,28 @@
# RLBot Core

The RLBot Core Project builds a `RLBotServer.exe` binary that allows custom bots and scripts
to interface with Rocket League.
RLBot Core is the server component of the RLBot v5 framework. It allows custom bots, scripts, and match managers to communicate with Rocket League in offline mode.

This is a C# rewrite of the old C++ backend that lived at
[RLBot/src/main/cpp/RLBotInterface](https://github.com/RLBot/RLBot/tree/00720d1efc447e5495d3952a03e10b5b762421ee/src/main/cpp/RLBotInterface) in v4.
To use RLBot as a player or bot developer, please download the installer at https://rlbot.org/.

## Developer Setup

- Install .NET 10 SDK [https://dotnet.microsoft.com/en-us/download/dotnet/10.0]
- Install an IDE
- Visual Studio 2022 was used for initial development.
- Rider and VS Code are also known to work.
- Ensure submodules got cloned
- `git submodule update --init`

## Building

In Visual Studio 2022, you can build the solution in Release mode, and find the
compiled binaries at `RLBotCS\bin\Release\net10.0`.

- Note: You can also build with the command `dotnet build -c "Release"`
1. Install (.NET 10 SDK)[https://dotnet.microsoft.com/en-us/download/dotnet/10.0]
1. Initialize submodules: `git submodule update --init`
1. Build: `dotnet build -c Release`

## Deployment

1. Ensure all changes are on the `master` branch.
1. Ensure the version number is correct in `RLBotCS/Main.cs`.
1. In GitHub’s UI, create and publish a new release (this will create the tag for you).
- Use the next version number, e.g. `v1.0.0`.
- Mark the release as **pre-release** initially.
1. In GitHub, create a new release.
- Name the release and the new tag after the version number, e.g. `v5.0.1`
- Mark the release as **pre-release** initially.
- Write/generate an appropriate change log.
1. Wait for the GitHub Actions workflow to build the release and upload it to the release page.
1. After the workflow finishes, edit the release and set it as the **latest release**.

### Release rollbacks

Instances of RLBot download the version tagged as the latest release. To rollback a release or otherwise change the version being distributed, simply **mark any other verison at the latest release** in GitHub's UI.
> [!TIP]
> RLBot clients download the version tagged as the latest release. To rollback a release or otherwise change the version being distributed, simply mark an older version at the latest release in GitHub.

## Maintenance

Expand All @@ -44,16 +32,16 @@ This project uses the CSharpier formatter. You can run it with `dotnet csharpier

### Flatbuffers

The Core project uses flatbuffers, which involves generating C# code based on a specification
file called `rlbot.fbs`. Find this in `./FlatBuffer` after it's been generated.

The [flatbuffers-schema](https://github.com/RLBot/flatbuffers-schema) submodule should be kept update to date:
Communication with RLBotServer uses [FlatBuffers](https://flatbuffers.dev/).
The schema is held in the [flatbuffers-schema](https://github.com/RLBot/flatbuffers-schema) submodule
and used to generate FlatBuffers classes during compilation.
The generated C# files are written to `FlatBuffer/`.

- `cd flatbuffers-schema`
- `git checkout main`
- `git pull`
Update the submodule as follows:

The needed Flatbuffers code is automatically generated upon compilation of the project.
1. `cd flatbuffers-schema`
1. `git checkout main`
1. `git pull`

### Bridge

Expand All @@ -64,7 +52,7 @@ The dll file is platform-independent and works for building the project on both

### rl_ball_sym

The native binaries that live in `RLBotCS/lib/rl_ball_sym` generate the ball prediction that core then distributes to bots & scripts that request it.
The native binaries that live in `RLBotCS/lib/rl_ball_sym` generate ball predictions that core then distributes to bots & scripts that request them.
The `dll`/`so` are dynamically loaded at run time while developing core, and the `a`/`lib` files are statically linked during publishing.

All source code and releases for building the dlls can be found at <https://github.com/VirxEC/rl_ball_sym_dll> but the core of the code is a library that's published for anyone's use at <https://crates.io/crates/rl_ball_sym>.
Loading