This repository contains the Unreal Engine 5 (UE5) source code and Stimpack plugins for the games used in the Stimpack research paper. It acts as the "End-point" that communicates with the Stimpack Central Runtime to adaptively optimize rendering quality.
The repository is organized into three separate Unreal Engine projects, each representing a different game environment:
- Game1, Game2, Game3: Individual UE project folders containing source code, ZeroMQ plugins, and configuration files.
- Plugins/ZeroMQ: The C++ implementation of the Stimpack-Runtime communication bridge.
.
├── Game1
│ ├── Config # Contains userinfo.txt and emul.txt for runtime and emulation modes
│ ├── Content # 3D assets (not included due to size, must be downloaded from Marketplace)
│ ├── Game1.uproject
│ ├── Plugins # Contains the Stimpack plugin for ZeroMQ communication
│ └── Source # C++ source code for the game and Stimpack plugin
├── Game2
│ ├── Config # Contains userinfo.txt and emul.txt for runtime and emulation modes
│ ├── Content # 3D assets (not included due to size, must be downloaded from Marketplace)
│ ├── Game2.uproject
│ ├── Plugins # Contains the Stimpack plugin for ZeroMQ communication
│ └── Source # C++ source code for the game and Stimpack plugin
├── Game3
│ ├── Config # Contains userinfo.txt and emul.txt for runtime and emulation modes
│ ├── Content # 3D assets (not included due to size, must be downloaded from Marketplace)
│ ├── Game3.uproject
│ ├── Plugins # Contains the Stimpack plugin for ZeroMQ communication
│ └── Source # C++ source code for the game and Stimpack plugin
├── LICENSE
└── README.md
- Unreal Engine: v5.0.3 (Tested on Ubuntu 22.04)
- Compiler: Clang (Standard for UE Linux build)
- Dependencies: Stimpack uses ZeroMQ for IPC. The plugin is included, but ensure your system supports ZMQ libraries.
Dependencies: Stimpack uses ZeroMQ for IPC. While the plugin source is included, you may need to install the ZMQ library on your Linux system:
sudo apt-get update && sudo apt-get install -y libzmq3-dev
Due to file size constraints (several GBs), 3D assets (Content folder) are not included in this repository. You must download them from the Unreal Engine Marketplace and move them manually:
- Identify Assets: Refer to the links below for the required Marketplace assets for each game.
- Download: Use the Epic Games Launcher (Windows or macOS) to download the assets.
- Migrate: Copy the
Contentfolder from your Windows/Mac machine to the respective project folder on your Linux build machine (e.g.,Stimpack-UE-Plugin/Game1/Content).
Each game project contains two key configuration files in the Config/ directory:
| File | Mode | Description |
|---|---|---|
userinfo.txt |
Live Mode | Defines Codec, initial QP, Frame Latency SLO (Target FPS), and FPS Upper Bound. Used when connecting to the Stimpack Runtime. |
emul.txt |
Emulation Mode | Defines pre-set RQ/FPS state changes. If this file exists, the game runs locally without the Stimpack Runtime for testing purposes. |
Note: By default, the plugin attempts to connect to the runtime at localhost:10000 for initial port negotiation.
- Open the
.uprojectfile in the Unreal Editor. - If prompted to rebuild missing modules (ZeroMQ/GameSource), click Yes.
- Go to Platforms > Linux and select Package Project.
Once packaged, ensure the userinfo.txt (and emul.txt if needed) are present in the packaged Config folder.
To run with Stimpack Runtime (Live Mode):
- Start the Stimpack Runtime first.
- Launch the game executable:
./Game1.sh
Important
Config File Packaging: Unreal Engine might not include .txt files in the packaged build by default. After packaging, manually copy your userinfo.txt and emul.txt into the [Packaged_Project]/Game1/Config/ directory.
@inproceedings{heo2026stimpack,
title={Stimpack: An Adaptive Rendering Optimization System for Scalable Cloud Gaming},
author={Heo, Jin and Wang, Vic and Bhardwaj, Ketan and Gavrilovska, Ada},
booktitle={23rd USENIX Symposium on Networked Systems Design and Implementation (NSDI 26)},
year={2026}
}- Stimpack plugin codes licensed under the MIT License.
- The used 3D assets are licensed under their respective Unreal Engine Marketplace licenses.
The name Stimpack is a tribute to the iconic ability of the Terran Marine in Blizzard's StarCraft series.
In the game, a Marine injects a Stimpack to trade a bit of health for a massive boost in combat speed and efficiency. Similarly, our system strategically adjusts (or "sacrifices") unnecessary rendering details to significantly boost the overall scalability and utility of the cloud gaming server.
As a former competitive StarCraft player, the lead author designed Stimpack with a "gamer-first" mindset: ensuring that every bit of computing power is spent where it actually improves the experience.
