TorchAPI.com is powered by Qonzer! Check them out for the ultimate game server hosting experience.
UnauthorizedFunSuppressionField
Author: lord_kesh
Latest Version: v1.0.0
Cumulative Downloads: 0
Configurable Antigrief For Space Engineers
Overview
Griefing is a huge part of the online Space Engineers multiplayer experience, though it lacks any meaningful guardrails. Existing vanilla mechanics provided little safety or enforcement for players, especially new ones. The Unauthorized Fun Suppression Field aims to provide server owners with a configurable antigrief solution. It doesn't actually use safezone mechanics or create a force field; that's just part of the original name. Instead, UFSF will determine when grids cannot be griefed using rules configured by the server owner. Grids that cannot be griefed have a damage sink that automatically disables all damage applied to the grid.
The Unauthorized Fun Suppression Field is also highly configurable, allowing you to configure exactly how you want grids to be griefable on each server. Each "Grief Rule" is a logical component, and overall griefability can be composed from these rule components. These include evalauting if:
- A grid owner is online.
- A block owner is online.
- A faction member is online.
- The grid owner has been inactive.
- Or if a grid is always griefable.
Grief rules also support granularity regarding which grid type the rule applies to:
- Static Grids.
- Moving Large Grids
- Stationary Large Grids
- Moving Small Grids
- Stationary Small Grids.
Setup
To install the plugin do one of the following, do one of the following:
Manual Install
- Download
UnauthorizedFunSuppressionField.zipfrom the Torch Plugin Store or from theReleasessection of the GitLab. - Move
UnauthorizedFunSuppressionField.zipinto yourPlugins/directory inside your torch server installation. - Either set
LocalPlugintotrueor add an entry in thepluginssection of yourtorch.cfgwith the GUID from the torch store.
Automatic Install
- Open the torch desktop app and navigate to the
Pluginstab. - Search for
UnauthorizedFunSuppressionFieldon the Torch Store and install it.
Generating a Config
After installing the plugin, you relaunch your server once, which will automatically generate a plugin config located in:
Instance/UnathorizedFunSuppressionField.cfg. Alternatively, if you are in the Torch desktop app, you can edit the config within Plugins tab.
Configuration
Unauthorized Fun Suppression Field is configured through the Torch plugin configuration UI. The top-level configuration controls how often grief protection state is updated and which grief rules are active.
Top-Level Settings
| Setting | Default | Description |
|---|---|---|
Grief Rules |
Empty list | Collection of rules that define when griefing is allowed for matching grids. |
Update Ticks |
100 |
Number of server update ticks between griefability checks. Lower values update protection state more frequently, but may cost more CPU time. |
Update Ticks
Update Ticks controls how often the plugin recalculates whether each grid can be griefed.
For example:
Update Ticks: 100
means the plugin evaluates grief protection state once every 100 update ticks.
Lower values make the plugin respond more quickly to changes such as players joining, leaving, moving near grids, or grids changing motion state. Higher values reduce update frequency and may be better for large servers with many grids.
Recommended starting values:
| Server Size | Suggested Update Ticks |
|---|---|
| Small/private server | 60–100 |
| Medium server | 100–300 |
| Large/heavily populated server | 300+ |
The default value of 100 is a reasonable starting point.
Grief Rules
Grief Rules is the collection of configured rule entries. Each rule entry has:
| Field | Description |
|---|---|
Grief Kind |
The type of rule to evaluate. |
Grid Kinds |
The grid categories this rule applies to. |
Rule Settings |
Rule-specific settings, such as online grace periods or inactivity period. |
Rules are permissive. They define when griefing is allowed. If an applicable rule authorizes griefing, damage is allowed. If one or more rules apply but none authorize griefing, damage is blocked.
If no rules apply to a grid, damage is allowed by default.
Rule Evaluation Policy
The plugin uses a default-open policy:
- If no rules are configured, grids can be griefed.
- If no rule applies to a grid’s current grid kind, the grid can be griefed.
- If one or more rules apply, griefing is allowed when any applicable rule authorizes it.
- If one or more rules apply but none authorize griefing, damage is blocked.
This means rules should be read as “allow griefing when...” conditions rather than as direct deny rules.
Grief Rule Configuration
Each grief rule controls when damage to a matching grid is allowed.
Grid Kinds
Each rule can be limited to specific grid categories.
| Grid Kind | Description |
|---|---|
Static |
A static large grid, usually a station or voxel-anchored base. |
LargeMoving |
A large grid currently moving. |
LargeStationary |
A large grid that is not static, but is currently stationary. |
SmallMoving |
A small grid currently moving. |
SmallStationary |
A small grid currently stationary. |
The default grid-kind selection includes:
Static
LargeMoving
LargeStationary
SmallMoving
SmallStationary
Remove grid kinds from a rule when that rule should not apply to those grid types.
Grief Rule Types
ByGridOwnerOnline
Allows griefing when the grid’s majority owner is considered online.
This rule is useful for protecting player bases or ships while their owner is offline, while still allowing combat or raiding when the owner is present.
Uses the shared online-rule settings.
ByBlockOwnerOnline
Allows griefing when one of the relevant block owners is considered online.
This is similar to ByGridOwnerOnline, but evaluates block ownership instead of only the grid’s majority owner. This may be useful for shared or partially-owned grids.
Uses the shared online-rule settings.
ByFactionMemberOnline
Allows griefing when a member of the grid owner’s faction is considered online.
This is useful for faction protection rules where any faction member being online may make faction assets eligible for attack.
Uses the shared online-rule settings.
GridOwnerInactive
Allows griefing when the grid owner has been offline for a configured number of days.
| Setting | Default | Description |
|---|---|---|
Inactivity Period |
30.0 days |
Number of days after logout before the owner’s grid may be griefed. |
This rule is useful for cleaning up abandoned grids or allowing inactive-player assets to become attackable after a grace period.
Always
Always allows griefing for the selected grid kinds.
This rule is useful when certain grid categories should never be protected. For example, a server may allow all moving ships to be damaged while protecting only static bases.
Online Rule Settings
The following settings apply to:
ByGridOwnerOnlineByBlockOwnerOnlineByFactionMemberOnline
| Setting | Default | Description |
|---|---|---|
Seconds After Join Grief Allowed |
30 seconds |
Time after a player joins before they are considered valid for enabling griefing. This prevents a player from becoming immediately vulnerable during join/loading. |
Seconds After Leave Grief Allowed |
500 seconds |
Time after a player leaves during which griefing may still be allowed. This prevents immediate protection from logout/disconnect events. |
Required Proximity |
0 meters |
Required player proximity to the target grid. Set to 0 to disable the proximity requirement. |
Example Configurations
Protect static bases unless the owner is online
Create a ByGridOwnerOnline rule with only Static selected under Grid Kinds.
Grief Kind: ByGridOwnerOnline
Grid Kinds:
- Static
Online Rules:
- Seconds After Join Grief Allowed: 30
- Seconds After Leave Grief Allowed: 500
- Required Proximity: 0
This allows static grids to be damaged only when the grid owner is online or recently disconnected within the logout grace window.
Allow combat against moving ships
Create an Always rule with moving ship grid kinds selected:
Grief Kind: Always
Grid Kinds:
- LargeMoving
- SmallMoving
This makes moving grids always damageable.
Allow inactive-player grids to be attacked
Create a GridOwnerInactive rule:
Grief Kind: GridOwnerInactive
Grid Kinds:
- Static
- LargeStationary
- SmallStationary
Rule Settings:
- Inactivity Period: 30
This allows stationary grids owned by inactive players to become griefable after 30 days.
Notes
Required Proximity = 0disables distance checking.Update Tickscontrols how often grid griefability state is recalculated.- Rules are permissive: an applicable rule returning true allows griefing.
- If a rule does not apply to the current grid kind, it is ignored.
- If no rules apply to a grid, the plugin defaults to allowing damage.
For Developers
Requirements
Ensure that the following are installed on your machine:
- dotnet 4.8 SDK
- GNU Make
- zip
- VSCode or Visual Studio (for convenience)
- Torch game files.
Setup
Ensure you have the latest version of torch downloaded. Ideally, it should be placed a directory above the project root.
├── Essentials
│ ├── Essentials.dll
│ ├── Essentials.pdb
│ ├── manifest.xml
│ ├── netstandard.dll
│ ├── Newtonsoft.Json.dll
│ └── Newtonsoft.Json.xml
├── torch-server
│ ├── ControlzEx.dll
│ ├── ControlzEx.pdb
│ ├── DedicatedServer64
│ ├── Instance
│ ├── Logs
│ ├── MahApps.Metro.dll
│ ├── MahApps.Metro.pdb
│ ├── MahApps.Metro.xml
│ ├── Markdown.Xaml.dll
│ ├── Microsoft.Win32.Registry.dll
│ ├── netstandard.dll
│ ├── Newtonsoft.Json.dll
│ ├── Newtonsoft.Json.xml
│ ├── NLog.config
│ ├── NLog.dll
│ ├── NLog-user.config
│ ├── NLog.xml
│ ├── Plugins
│ ├── protobuf-net.dll
│ ├── protobuf-net.xml
│ ├── steam
│ ├── steam_api64.dll
│ ├── steamapps
│ ├── steamclient64.dll
│ ├── steamclient.dll
│ ├── SteamKit2.dll
│ ├── SteamKit2.pdb
│ ├── SteamKit2.xml
│ ├── steamwebrtc64.dll
│ ├── steamwebrtc.dll
│ ├── Steamworks.NET.dll
│ ├── System.ComponentModel.Annotations.dll
│ ├── System.Security.AccessControl.dll
│ ├── System.Windows.Interactivity.dll
│ ├── TempContent
│ ├── tier0_s64.dll
│ ├── tier0_s.dll
│ ├── tmp
│ ├── Torch.API.dll
│ ├── Torch.API.pdb
│ ├── Torch.API.xml
│ ├── Torch.cfg
│ ├── Torch.dll
│ ├── Torch.dll.config
│ ├── Torch.pdb
│ ├── Torch.Server.exe
│ ├── Torch.Server.exe.config
│ ├── Torch.Server.pdb
│ ├── Torch.Server.xml
│ ├── Torch.xml
│ ├── vstdlib_s64.dll
│ └── vstdlib_s.dll
├── UnauthorizedFunSuppresionField
│ ├── Makefile
│ ├── manifest.xml
│ ├── README.md
│ ├── tests
│ ├── UnauthorizedFunSuppressionField
│ └── UnauthorizedFunSuppressionField.sln
Running the Unit Tests
Unit testing coverage is in place for greif-rule logic. You can run them by doing the following:
make test
Building The Plugin
Inside your project root, run the following:
make build
If you have the torch / game files not located a directory above the project root, manually specify them:
make build TORCH_DIR="path/to/torch-server" GAME_DIR="path/to/torch-server/DedicatedServer64
The compiled plugin should be located inside of /bin/Release/UnauthorizedFunSuppressionField.zip
Credits
- Isothermal
Ways to support the author directly