Introduce server validation and a session launch flow with persistent server profiles. - Add ConnectAndValidateServer to Networking to validate handshake/timeouts and return human-friendly errors; avoid auto-connecting in transform send path and remove unconditional local connect on startup. - Add ServerProfileStore (header + implementation) to persist server->saveFile bindings under Documents/My Games/.../CommonwealthOnline/server-profiles.json with thread-safe load/save, lookup, touch and bind operations. - Add SessionLaunch (header + implementation) to handle launching validated sessions, first-time join flow (auto coc to SanctuaryExt, character creation menus, save binding), F4SE message handling and periodic Update processing. - Update ServerBrowserBridge to parse/validate ports, use ConnectAndValidateServer, display joinLoading UI events, schedule validated session launch on the game task thread, and centralize join success/failure handling. - Wire SessionLaunch into main.cpp (update loop and F4SE message hook). - Improve direct-connect UI in app.js with client-side validation, port parsing, and handling of joinLoading events. These changes provide better connection validation, user feedback during joins, and automatic handling for first-time server joins with persistence of associated saves.
Commonwealth Online Plugin
This is the native Commonwealth Online F4SE plugin using CommonLibF4.
Requirements
- XMake [3.0.0+]
- C++23 Compiler (MSVC or Clang-CL)
Getting Started
git clone --recurse-submodules https://github.com/libxse/Fallout4Together
cd Fallout4Together
Build
To build the project, run the following command:
xmake build
Note: This will generate a
build/windows/directory in the project's root directory with the build output.
Build Output (Optional)
If you want to redirect the build output, set one of the following environment variables:
-
Path to a Mod Manager mods folder:
XSE_FO4_MODS_PATHor
-
Path to a Fallout 4 install folder:
XSE_FO4_GAME_PATH
Project Generation (Optional)
If you use Visual Studio, run the following command:
xmake project -k vsxmake
Note: This will generate a
vsxmakeXXXX/directory in the project's root directory using the latest version of Visual Studio installed on the system.
Alternatively, if you do not use Visual Studio, you can generate a compile_commands.json file for use with a laguage server like clangd in any code editor that supports it, like vscode:
xmake project -k compile_commands
Note: You must have a language server extension installed to make use of this file. I recommend
clangd. Do not have more than one installed at a time as they will conflict with each other. I also recommend installing thexmakeextension if available to make building the project easier.
Upgrading Packages (Optional)
If you want to upgrade the project's dependencies, run the following commands:
xmake repo --update
xmake require --upgrade
Documentation
Please refer to the Wiki for more advanced topics.