A practical walkthrough for modders who want to work with BAR's Lua system, set up dual-screen overviews, and avoid common pitfalls with tweakdefs and lobby commands.
Tags: bar modding, lua api, widget tweaks, dual screen, beyond all reason, mod development
BAR uses Lua for its modding layer. The engine exposes synced and unsynced read functions that let widgets query unit state, team rules, map geometry, and game flow. Most new modders hit the same wall: there is no live API explorer. You write code in a text editor, test it in-game, and look up methods on the Spring RTS wiki or community docs. A proper IDE with autocomplete would save hours, but the workflow works once you know where to look.
Start with the Spring RTS wiki for synced read calls like GetTeamRulesParams and unsynced widget callbacks. The pattern is consistent: call the function, check the return type, handle null results. Keep a personal cheatsheet of the calls you actually use.
Players with a second monitor often ask whether the overview map can live there. BAR does not provide a built-in toggle to float the minimap to another display. The game locks UI elements to the main window. That said, a custom widget can render an unsynced minimap to a separate window if someone writes one. The Spring engine supports multiple windows in principle, and the modding community has built similar tools before.
For now, stretch the main window across both screens or use the in-game overview toggle to maximize the minimap on your primary monitor where you can actually see it during fights.
Tweakdefs let you override unit stats for custom game modes. The most common errors come from malformed Base64-encoded tweak strings or incorrect stat names. Always validate your definitions against the current unitdef schema. Unit stats shift between balance patches, and using outdated field names silently breaks your mod.
Lobby commands accept tweak strings as parameters. A malformed string usually produces a silent failure, meaning the game launches with default stats and the modder has no idea what went wrong. Test tweakdefs in local skirmish games before sending them to anyone.
A frequent issue: copying Base64 strings between platforms can introduce line breaks or character encoding mismatches. Paste into a single line, verify the decoded output, then use it.
BAR's engine can handle urban maps, but the current texture library lacks detailed city assets. TA:CC's Eastside Westside remains a fan favorite specifically because of its urban feel. Anyone who builds solid city textures and releases them as a map resource would likely see them adopted by the BAR map community. The engine supports it; the textures just have not been made yet.
Urban maps need more than building meshes. They need ground textures that blend roads, grass, concrete, and rubble convincingly. BAR's ground rendering handles layering well if the source textures exist.
The BAR modding community discusses Lua questions on the official BAR forums and in-game modding channels. The SpringRTS wiki covers the underlying engine. Reading other mods' source code is often faster than reading any single document, since working code shows the actual call patterns.
Watch BAR gameplay and strategy videos for modding inspiration on our YouTube channel.
The modding side of BAR overlaps with the same values that drive Creed of Champions: clear communication, disciplined practice, and a zero-drama environment for learning. Whether someone is writing Lua widgets or learning build orders, teams that cooperate without toxicity get better, faster.
[Crd] Creed of Champions is a great place to learn and play BAR in a friendly atmosphere. Training sessions, team gameplay, even some non-BAR stuff. Large cross section of abilities, time zones, and game mode interests.
Win with skill, teamwork, and respect. Check out Creed of Champions if you want a serious RTS community without the baggage.