BAR lobby tweaks and modoptions do not always carry over to single player matches. Here is what causes the problem and how to get your settings working.
When setting up a local or single player match in Beyond All Reason, some modoptions fail to apply. The issue traces back to how the game handles nil values in the Spring.GetModOptions function. Options that were set in the lobby arrive as nil in the actual game session, which breaks any lua script expecting concrete values.
A community fix exists that overrides the standard GetModOptions call. This override replaces nil values with their defaults from the modoptions.lua file and converts string values to proper booleans and numbers so scripts receive the data types they expect.
Modoptions control map settings, starting conditions, and script parameters. When these values do not carry through to single player, maps may load with wrong starting resources, script triggers fail, or custom rulesets simply do not activate. For players testing builds or practicing on specific maps, this is a real frustration.
Most modders who publish content with lobby options include the override fix. If a mod does not work in single player, check whether it includes a patched modoptions handler. The fix can also be added manually by including an override in your widget that intercepts the GetModOptions call.
For mapmakers and mod creators, the SpringRTS wiki provides full documentation on both synced and unsynced lua read functions. Understanding these API calls is essential for writing mods that behave consistently across all game modes.
While working with modoptions and unit definitions, players often encounter surprising interactions between weapon types and unit classes. Torpedoes in BAR can hit hovercraft units even though hovers travel above water. The torpedo launches at high speed, arcs through the air, and connects with the hover unit on its trajectory.
Projectile explosions near targets also deal partial damage, which means area effect weapons can impact units they were not directly aimed at. This behavior is consistent with the Spring engine physics and cannot be changed through lobby tweaks alone.
Before publishing a mod with custom options, test it in both multiplayer and single player lobbies. Some functions that work in synced multiplayer environments may not behave the same way in widgets. Specifically, certain unit query functions like GetUnitInCylinder do not operate correctly inside widget contexts.
Run your test matches and verify each modoption produces the expected result. If something breaks, the override fix or a type conversion patch is usually the missing piece.
Clean mod setups and working configurations let you focus on what actually matters, which is getting better at the game. If you are looking for a team environment where people share setups, help with troubleshooting, and keep things positive, Creed of Champions is worth checking out.
[Crd] It is so easy to get on with everyone and there is zero toxicity. Just fun games of BAR which can have quite a toxic community usually.
Serious RTS play without the toxic baggage. Win with skill, teamwork, and respect.