# What Is Iris And How To Activate It

### The **Iris Replication System** in Unreal Engine is a modern, high-performance, and scalable networking framework designed to support larger, more interactive multiplayer worlds with higher player counts and lower server costs. It is an opt-in system that works alongside the existing UE replication system and is inspired by the networking demands of *Fortnite*.

#### Brief description of this plugin’s Iris setup

* Uses Unreal Engines Iris replication framework to replicate gravity-related state so clients see the same orientation and movement as the server.
* Registers plugin classes (character/movement) as Iris NetObjects and exposes compact replication fragments for key fields (e.g., custom `GravityDirectionVector`/`GravityCenter`, movement mode/"`IsFalling`", and any gravity-state flags).
* Relies on Iris’ server-authoritative updates with client-side prediction compatible data; default polling/prioritization unless specifically overridden in code.
* Initialization is performed at module startup. Replicated fields utilize Iris descriptors/fragments, while custom structs are managed via `NetSerialize`/`NetQuantized` for bandwidth efficiency.
* Plays nicely with standard Character Movement replication so gravity changes, ground/air transitions, and sync corrections are consistent across listen and dedicated servers.

### *This plugin is Iris First but falls back to Traditional Replication when Iris is not active, Iris is not mandatory to use this plugin and is completely opt-in.*

***

### ***NOTICE - I will walk you through activating Iris Replication, BUT I WILL NOT GIVE SUPPORT ON IRIS REPLICATION OUTSIDE OF THIS PLUGIN.***

***

### Lets get started!

* #### This tutorial is done in C++
* #### We will be changing 3 files.
  * &#x20;***.uproject***
  * ***Build.cs (This plugin handles this for you but i will show it for tutorial purposes.)***
  * ***DefaultEngine.ini***

{% stepper %}
{% step %}

### ***.uproject*** file

* We will start with the ***.uproject*** file.
  * Add Iris and enable it.

```cpp
"Plugins": [
		{
			"Name": "ModelingToolsEditorMode",
			"Enabled": true,
			"TargetAllowList": [
				"Editor"
			]
		},
		{
			"Name": "Iris",
			"Enabled": true
		}
	]
```

{% endstep %}

{% step %}

### ***Build.cs*** file

* ***NOTICE*** - (Skip this step if you are using the Replicated Gravity plugin. This Step is done for you inside the plugin.)
  * Next we will update our ***Build.cs*** file.
  * Add `IrisCore` to the `PrivateDependencyModuleNames` and add `SetupIrisSupport(Target);` directly under it.

```cpp
PrivateDependencyModuleNames.AddRange(
			new string[]
			{
				"CoreUObject",
				"Engine",
				"EnhancedInput",
				"IrisCore",
				// ... add private dependencies that you statically link with here ...	
			}
			);
		
SetupIrisSupport(Target);
```

{% endstep %}

{% step %}

### ***DefaultEngine.ini*** file

* And finally we will update the ***DefaultEngine.ini*** file.
  * Just add these lines at the bottom of your DefaultEngine.ini file.

```cpp
[SystemSettings]
net.SubObjects.DefaultUseSubObjectReplicationList=1
net.Iris.UseIrisReplication=1
```

{% endstep %}

{% step %}

### Congratulations your project now uses Iris Replication!

* You will get logs similar to these when running your game indicating your project is now using Iris.

<figure><img src="/files/A3qCwi111dk6AtmCSera" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://replicated-gravity.gitbook.io/replicated-gravity-docs/getting-started/setup-guides-and-tutorials/what-is-iris-and-how-to-activate-it.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
