This plugin is a Unreal Engine 4 C++ runtime plugin provides server admins of your game with an easy to use interface to control their online multiplayer game servers while they are connected to the game.
The controls range from changing the currently loaded map to any other available map, to kicking and banning users and modifying the game rules while the game is running. It is the perfect tool for both every day server administration as well as competitive match moderation.
Find the plugin on the Unreal Engine marketplace here.
Q: Are you going to release the 4.27 version soon?
A: The update for it is currently under review. Expect it to be available in the very near future.
Q: What is this plugin exactly?
This engine plugin provides you with an easy-to-use interface to control your online multiplayer game server while you are connected to the game.
The controls range from changing the currently loaded map to any other available map, to kicking and banning users and modifying the game rules while the game is running.
It is the perfect tool for both every day server administration as well as competitive match moderation.
Q: Is this plugin right for me and my game?
We built this plugin for an existing multiplayer game, a multiplayer FPS shooter that is running on the traditional Server-Client model, using the framework of Epic’s Shootergame. In other words, we saw a real need for the functionality that this plugin provides and want to share our solution with you.
So, if you are in a similar situation, then implementing this plugin is very simple. In principal it will work with the vast majority of MP games, even if you built your game from UE4’s base classes instead.
- Integrated into a MP game based on the Epic’s ShooterGame template
- Written in C++, needs to be compiled against the source of UE4
- The UI is made in UMG
- It comes with three components that are added to three of your game’s classes
- It provides a class that acts as a parent for your game’s GameInstance class
- Steam IDs or a simple password as authentication. In principle, any other persistent and unique user ID of the other online sub systems should work, too.
Q: How does it work?
A: The Player Controller’s connection is used to communicate between client and server to send and receive commands. Server admins are identified via their OnlineSubSystem UniqueNetID or a password and allowed access to the administration panel.
Q: Can I just download this plugin and make it work?
A: It is designed to be easy and straight forward to use, however, as mentioned above there is some effort required to hook it up.
Q: What do I need and what do I have to do?
A: For the full integration of the plugin, you’ll want to have the GitHub version of UE4 setup for your project and Visual Studio, or another IDE of your choice ready to modify your game’s code. From there, you have two options to implement the plugin:
- The way we are using it, too: The plugin’s GameInstance Blueprint inherits from ShooterGame’s GameInstance class and there are three components that are added to the PlayerController, GameMode, GameState respectively. These components handle most of the work that makes this plugin tick.
- Alternatively, you can use the plugin’s GameInstance C++ class and work the the components in code, too, ignoring all the BP that’s layered on top.
Q: Why is there so much work to do in C++? Does the plugin not work out of the box?
A: The plugin itself will compile and do the work it can do just fine without the changes in code above. However, in the example shown, it is modifying values in ShooterGame classes which happen to be C++ only. And in order to modify them via BP, there are some lines of code needed. That’s what’s the documentation above is mostly about.
Q: Do I need to work with ShooterGame or can I integrate this plugin into any type of game?
A: You can implement this plugin into any kind of UE4 based game. The details of the implementation may differ in this case, but since most of the plugin is component driven, the majority of the guide above is still going to work for you.
Q: Do I have to have a C++ code based game to make full use of the plugin?
A: You can implement this plugin in a fully Blueprint driven game. However, since this plugin is designed to work for a server/client environment and the server target can only be built from code, chances are, you won’t be building this kind of project in blueprints only.
Q: I have a fully blueprint driven game that is built on code I don’t modify. Can I use the plugin in this case?
A: In this case, too, you can implement the plugin in full provided you have built the game’s logic that the plugin is meant to control in blueprints and can interface your blueprints with the plugin’s functions.
Q: I have a code only project, can I use the plugin despite it having Blueprint components?
A: Yes, this will also work, you will have to do some of the work that’s done in BP in C++ though to model the functionality in code that currently exists in BP, such as including the components in your game’s classes and calling the interfaces and delegates from there.
In this scenario, you do not need to implement additional functions in your game class, but can add the functionality directly into the plugin code or Blueprint, provided you are making use of the RoundTime and TimeRemaining variables that the ShooterGame comes with.
Q: I want players to see what settings admins are changing, how can I achieve that?
A: The plugin is using the GameMode’s broadcast channel to communicate what it does. It does so using the FName “Annc” as broadcast type. You can intercept it in the game mode and then hook up UI element that display the changes on all player’s HUDs.
At the time of the first release, there are two methods for authentication available; via Steam ID and via password. The Steam version requires the admins’ Steam IDs to be listed in your GameMode.ini and authenticates matching users automatically. The password variant requires a password to be stored in the GameMode.ini and entered manually in the first panel of the Admin menu. However, the password is sent and stored unencrypted, so this method of authentication is not recommended.
The map rotation feature is enabling you to setup servers that revolve through a predefined list of maps.
It works by letting you call the DetermineNextMap() function in the ServerAdminGameMode class when your game has determined that the round end conditions were met, i.e. someone or a team won. There is selects the next map in line to play.
For servers that are playing one map 24/7, not defining a map rotation signals the plugin to loop the current map indefinitely.
This feature expects you to start your server with the first map being the same as the first entry in the map rotation list in your game config. You can start another map, too, overriding the first entry in the list until the map rotation rolls over for the first time.
Map Switch and Restart
This feature allows you to restart the current map, skip ahead one position in the map rotation or choose another map altogether. This can be any map, even those that are not listed in the server rotation. The Game instance class memorizes the current position in the list and will continue the map rotation after the selected map has concluded.
Kicking and Banning Players
The Server Admin plugin provides you with a list of currently connected players. You can kick or ban them here. The implementation is based off of their unique NetID.
Note: Kicking bots is currently not supported. Kicking yourself while hosting a listen server will fail silently.
- Default round time: Set the time that each round is playing while you are playing. Note: As of now, this modification goes into effect when a new map is loaded. One of the coming updates will put this change into effect while the current game is running.
- Time remaining: Set how long the current round will last
- Friendly fire: Toggle friendly fire on or off
- TK Limit: How many TKs can a player incur before they get kicked or banned. 0 to disable this feature • TK Punishment: Kick players or ban them
The following features are planned for already, as we want to have them ourselves:
Kick and ban feature: Show more infos about players that are connected Ban list: Manage banned players from inside the admin menu Ban duration: Ban players for a set amount of time or indefinitely Saving values set on runtime are saved to the game’s ini file. Currently they are transient
- Admin protection from kicking and banning: Currently you can kick and ban anyone, even registered admins.
- – Localization
- – Interface for controlling the amount of bots per game
These features are a possibility, if enough of you want us to make them:
- Themes. You can already manually modify the menu to your needs, but we are considering adding a small selection of themes to make the menu look even more like it is part of your game.
- Password authentication with encryption/hashes
- Remote control via an external interface
For easy integration of the plugin into your own game, we are offering an example integration, based on a modified version of ShooterGame: