NEBULOUS: Fleet Command

NEBULOUS: Fleet Command

Not enough ratings
Better Battle Report (BBR) User Guide
By shadow.lotus.62312
A guide for how to use BBR, what it can and can't do, and other helpful information.
   
Award
Favorite
Favorited
Unfavorite
About
Better Battle Report, or BBR, is a mod that records replays of skirmish games and saves them for later viewing. Originally started and still hosted by AlexBay, it is now developed and maintained by me (ShadowLotus). I can be contacted in the Nebulous Developer Discord for questions, issues, requests, or general modding inquiries.

The Mod
The BBR Mod is available here. It is enabled through Nebulous, and is a client-side only mod, meaning when you are in a lobby with it enabled the game will not force others to download the mod. Recording a match will begin automatically (as long as you have enabled the mod). Saving the BBR file (extension .bbr) will NOT happen automatically, but instead when you press the "Export Battle Report" button in the debriefing lobby.

The Viewer
The BBR Viewer is a standalone piece of software that interprets and displays .bbr files with full playback. There is a web version of the viewer here[nebfltcom.gitlab.io] and a downloadable desktop version for both Linux and Windows here here[gitlab.com].
(pictured: the download location of the standalone viewer app, with the links highlighted.)
How To Use
1. Subscribe to the mod

2. Enable the mod in the 'Mods' section of the game's main menu

3. BBR will automatically record any skirmish game you play

4. Once a game is complete (dropped games or leaving early are currently not supported by BBR), click on the "Export Battle Report" button in the debriefing lobby to begin saving your recording.
It will be saved to the same directory as the normal battle report file (../steamapps/common/Nebulous/Saves/SkirmishReports) as a .bbr file. This process may take a couple minutes, and you should get a pop up message when it is complete.
If the .bbr file shows a size of 0 in your file viewer, it is not done writing

5. The .bbr file can be viewed either with the webviewer, or the downloadable desktop viewer
Things Wot BBR Do
  • Records positions of the following objects (as they are implemented in vanilla):
    • Ships
    • Craft
    • Missiles
    • Collidable Terrain (terrain that does not have a collider in-game will not be captured)
    • Shells (guns)
    • Beams
    • EWar
    • Non-Physical munitions (Defender/Pavise)
    • Reactor Blooms
    • Decoy Signatures (chaff/flares)
  • Records the terrain of most modded maps. It has been tested on many maps, but not all. If you encounter a map that is not displayed correctly or causes an issue with bbr, please let me know in the Nebulous Discord.
  • Calculates the score at any given time based on the rules of the scenario (CTF and Station Capture are not implemented, and are very low priority).
  • .bbr files will be exported to the same place as base game battle reports (`..\Steam\steamapps\common\Nebulous\Saves\SkirmishReports`) with the same name as the associated battle report by clicking the 'Export Battle Report' button in the debriefing lobby.
Things Wot BBR D'ain't
  • BBR is not a game. It does not have game logic. It doesn't care about collisions, or that a missile and a ship are different things, it is just a visualization tool for recorded data. A video player doesn't care what the content of the video is, it just displays it. BBR is the same: it displays the data without doing any sort of interpretation.
  • BBR is a passion project, started by one person and currently being built by another. It's not perfect. There will be bugs, there will be design choices that you may not agree with, and news/development may be slow at times. That said: BBR is also both open source and a client-side, code-only mod. The viewer is a completely standalone piece of software. If there is something you don't like, want to change, or want to fix, you can simply build your own local copy of either or both.
Some Things Wot BBR Might Do Later But Ain't Done Yet (In No Particular Order)
  • Campaign support
  • Mod support will be fleshed out as there is dev time available, but vanilla compatibility and completeness will always take priority.
  • Saving partial reports for game drops/draws
  • Integrate base game battle reports
  • Selection of objects and detailed readouts of information about said objects (missile and ship configurations, status conditions, damage, etc.)
  • Sensor web visualization, target locks
  • RCS/Signature visualization
  • Lifeboats
  • Orders/waypoints
  • PD net visualization
  • Projected threat/zones of control visualization
  • Derived stats (ship movement/death heatmaps, missile heatmaps, first blood, map side winrates, etc.) (this is honestly more of a separate project but it bears mentioning)
For Modders
  • The way BBR captures information is by patching specific methods with Harmony and saving relevant information. Each vanilla element has had it's own code path built, and if a modded component changes or avoids the specific function used, or is an entirely new system, BBR will not know what to do with it until a specific code path is built for it. A lot of the time of building those systems is figuring out how to get the needed data. Showing me how a given system works, or contributing a capture method directly will bring BBR mod support faster. It is always helpful just to catalog what doesn't work so I have a list of things to work on.

  • BBR is open source, and you are more than welcome to look through, contribute bug-fixes, or new capture methods. Just let me know in the Discord and we'll talk.
For Dedicated Server Operators
BBR automatically generates a config file `BBRConfig.xml` in the mod directory (same place as the `ModInfo.xml` file) on it's first run. If a file exists with that name it will not generate a new one, so to return to defaults just delete the file.
<?xml version="1.0"?> <BBRConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Logging>1</Logging> <!-- 0 - Critical / 1 - Limited / 2 - Verbose --> <DedicatedServers> <AutoSave>false</AutoSave> <!-- If true, BBR will automatically save a report as soon as it is ready. --> <Directory> <!-- The directory to save .bbr files to by default. If blank it will save to the default skirmish report directory. --> <!-- The default save directory for the game on a Windows machine as an example --> <!-- <string>C:/Program Files (x86)/Steam/steamapps/common/Nebulous/Saves/SkirmishReports</string> --> <string></string> </Directory> </DedicatedServers> </BBRConfig>
  • `Logging` changes the level of logging in `Player.log`, with 0 being only errors and such, and 2 being verbose extras for bug hunting.
  • `AutoSave` if enabled saves the .bbr file immediately as available in the default directory detailed earlier in this guide, or in the directory overwrite.
  • `Directory` overwrites the save location of the .bbr file autosave. The string entered in this field is the fully qualified path to the folder.

BBR also provides C# methods for dedicated servers to interact with report data through a dependent mod:
  • void BBRMod.BBRMod.DedicatedServerExport(string fileName, string filePath = null, bool debug = false)
    will write the .bbr file of the most recent game to the specified place with the specified name. If `filePath` is passed as null it will save to the default skirmish report location. If `debug` is passed as true BBR will also output an uncompressed .json file that contains the same information as the .bbr file. It is helpful for debugging if there is an issue, or for reading the data raw if you so wish to do so, but it will be 4-8 times larger on average.
  • If your server already saves battle reports by calling `Game.Reports.FullAfterActionReport.Export(string filename)` then .bbr files will automatically be written to the same place with the same filename.
  • bool BBRMod.BBRMod.IsWritingReport()
    can be used to check if the server is in the process of serializing/writing the report file.
  • bool BBRMod.BBRMod.IsReportReady()
    will return false if the report has not been requested, or has not finished being serialized/written.
  • BBR will start automatically serializing a `byte[]` after
    Game.SkirmishDebriefingLobbyController.Start()
    finishes running. If this does not happen and you want the report as a `byte[]`, you can use
    void BBRMod.BBRMod.ForceStartSerialization()
    to manually initiate the process.
  • byte[] BBRMod.BBRMod.GetReportBytes()
    will return the `byte[]` containing the compressed binary .bbr file in memory if you wish to do something with it like sending it to another server before writing. If called when a report is not ready or while the Recorder is still running it will warn you as such and return an empty array.
  • void BBRMod.BBRMod.ForceHaltSerialization()
    will immediately halt any data serialization/writing and clear all data.

There is a known but elusive bug where certain EWAR (definitely the Hangup, may be others) will not be captured correctly. If you encounter this issue, saving a log with the logging level set to 2 and sending it to me in the Discord would be appreciated. This bug is a dedicated server only issue, and only some servers (the one I have doesn't have this issue).
Bug Reports
If you experience an issue or bug with BBR, you may let me (ShadowLotus) know in the Discord, or submit an issue ticket here[github.com]