Freelancer: Better Modernized Combat (BMOD) is a modification for Freelancer the 2003 space shooter by Digital Anvil. The core goal of the mod is to create a fun and compelling experience for solo and group players in a multiplayer setting. This repository contains the modified client files, as well as the development environment and tools used by the team.
If you just want to download and play the mod, check our the latest release for the installer.
pip install -r requirements.txt
.%APPDATA%\freelancer-bmod
.FL_PATH
to the EXE
folder of your copied Freelancer installation.The intended workflow for this script is to have an installation of vanilla Freelancer set up somewhere that this script copies files over to. Using utf.py, the script allows for proper version control and tracking of infocard .dlls and many Freelancer .utf files that are usually compiled binary by compiling them to binary and copying them over at runtime. The script also tails the game's log into the Visual Studio Code console window, and attempts to fetch relevant information when Freelancer.exe crashes unexpectedly.
Once set up in Visual Studio Code, you can start the script by using the 'Start Debugging' option under 'Run' (F5). You can adjust how much the script actually does on run by adding and removing arguments in launch.json. Arguments are as follows:
--no_start
: Don't run the game after running the build script section of the script.--no_copy
: Don't copy any files from mod-assets over to the location specified by the FL_PATH
environment variable.--skip_checks
: Don't validate FL_PATH or check for existing Freelancer processes before proceeding with the copy action. This may cause errors depending on how your environment has been configured.--ignore_xml
: Don't convert any UTF files into XML. If your mod has a lot of UTF files, using this option can save a substantial amount of build time.--ignore_utf
: Don't convert any XML files into UTF. If you're not building UTFs from XML source using this option can save a substantial amount of build time.--ignore_infocards
: Don't build any infocards from infocard_imports.frc. This is unlikely to save much time, but if you're not working with custom strings there isn't much point in using the infocard module.--lua_to_thorn
: Uses Thorn.exe to encode any .lua files as thorn before copying them over to FL_PATH. If you run this with --no_copy
the files arecan be examined in the .thorn-cache
folder generated in the root of the repository.--ini-to-bini
: Uses Bini.exe to encode any .ini files as binary ini before copying them over to FL_PATH. If you run this with --no_copy
the files arecan be examined in the .bini-cache
folder generated in the root of the repository.--csv_to_ini
Build inis from the specified Google Sheet link defined in --master_sheet
. You will need to ensure that you're using a valid service_account.json
file.Log tailing is set up to work with the default FLSpew.txt location. If your mod moves FLSpew, you'll need to adjust the flspew_log_path
variable in freelancer.py. Crash handling will attempt to correlate the offset and module from a crash with the list on the Starport KnowledgeBase, but will fall back to a local file included with this repository if it's unable to reach the remote site.
--ignore_xml
argument enabled. template.json
and sheet_contents.json
for them to be pulled by the script.Freelancer.exe and some of the plugins we're using require the following redistributibles to run in addition to the Agency FB, Agency FB Bold and Arial Unitype fonts: