LANCommander v1.0.0
Added 2024-09-28 04:43:23 +0000 UTCIt's finally here! The first full release of LANCommander is live and available to download RIGHT NOW!
https://github.com/LANCommander/LANCommander/releases/tag/v1.0.0
This was probably the largest shift in the codebase since the start of the project (almost two years at this point!). As such, I have a lot of thoughts so let's dive right in.
Playnite Extension Deprecation
As indicated in previous posts and releases, v0.9.x was the last version to support the Playnite extension. There will no longer be any further development and it is incompatible with v1.0.0. For reasons we'll get into in a minute, this was a necessary change for the project. As of now the extension has been moved out of the main git repository and separated into its own project.
https://github.com/LANCommander/LANCommander.PlaynitePlugin
While I have stopped any development on it, any contributors are welcome to continue where I left off. The extension might see some official support again in the future, but I believe it would require the release of Playnite 11 as it's going to be built on .NET instead of .NET Framework. I'm looking forward to seeing how that project turns out and can't wait to see what Josef comes up with.
Under the Hood
With v1.0.0, much of the major functionality that the launcher uses has now moved to the SDK assembly. While this is transparent from an end-user standpoint, this effectively means that anyone could write their own launcher or wrapper while relying on the SDK to handle routines such as game installs, script executions, save game uploading/downloading, etc.
Additionally, script execution was something that previously held the project quite a bit. Previous implementation of the scripting runtime was hacky at best. At a high level, scripts were downloaded from the server on game install and then fed to `PowerShell.exe` with some baked in variables. This caused two primary issues. The first issue was security with PowerShell execution policies. The second issue was that this method of execution effectively locked LANCommander clients to Windows only.
Both of these issues are no longer relevant as the SDK now has an embedded PowerShell runtime. This should mean less friction getting games to run, better compatibility overall with PowerShell, and cross platform support for the SDK and CLI.
Cross Platform Support
Builds for x64 macOS have now been added for both the launcher and server for those that need it.
Launcher support for Linux and macOS is still considered experimental and honestly probably doesn't work. This is an outstanding issue with the UI framework that the launcher uses and the resolution is unknown at this time. The CLI, however, should work on these platforms!
Command Line Interface
Oh yes, did I forget to mention that LANCommander as a CLI that is distributed with all versions of the launcher? This is mainly designed for people who may want to automate the process of installing or importing games, but it's also required to run some scripts that require admin access. More information about the CLI can be viewed over at its documentation page.
Documentation
Oh boy, another sneaky update! Documentation has been revamped now lives over at:
This will likely replace the wiki in the future once I figure out a good path to allow user-publishable game configs. For now the most important pieces are documented and up to date. Some areas will need to be expanded upon, but that will happen soon!
Release Notes
Finally, let's hammer out these release notes. Here's everything that's changed since v0.9.1:
Server:
Changed: The "Archives" side menu option when editing a game has been moved towards the top
Changed: Key allocation method (MAC address or user) can now be changed per-game, default value is user account
Changed: The underlying log engine has been swapped out and logging should be overall improved across the board
Added: A new section called "Issues" can be used to track submitted issues with games
Added: .ico files can now be uploaded as media
Added: A new micro-CMS has been added and is available under "Pages"
Added: User profiles can now contain custom fields that may be used in scripts
Added: User information can now be edited by administrators
Added: Mods/expansions will now show nested under their base game in the main games list
Added: A count of games that require a redistributable has now been added as a column in the redistributable list
Added: Games that require a redistributable can now be selected in bulk when editing the redistributable
Fixed: An issue that was affecting some games to not return any search results for media has been fixed
Fixed: Titles when editing a game, server, or redistributable are now correct
Fixed: Mods/expansions with no base game set will now show in the main games list instead of being hidden away
Removed: A hidden wiki functionality has been removed
Launcher:
Fixed: An issue where some metadata such as collections and genres was being improperly cached has been fixed
Fixed: Name change scripts now run properly if `$NewPlayerAlias` is equal to `$OldPlayerAlias`
Fixed: Uploading of saves will retry every second up to 10 times in an attempt to get around games that may lock the file after the game has exited
Fixed: Redistributable installation has been fixed
Fixed: Experimental macOS/Linux clients should now have default install directories of `~\Games`
Changed: PowerShell scripts now execute in a bundled runtime. This should remove the requirement to set the ExecutionPolicy option in PowerShell in order for scripts to execute correctly
Changed: Overall release size should be improved
Changed: The logging engine has been swapped out and should result in better logs across the board
Added: When enabled in settings, debug mode now provides an in-app PowerShell terminal
Added: A CLI interface has been added to the launcher with some basic verbs
Added: A "Report Issue" button has been added to report issues with a game back to the server
Added: Games that use Steamworks lobbies will show extra actions in the action dialog if any lobbies are open. More documentation and details will be available in documentation soon
Added: Multiple install locations can now be specified
Added: A new "Discovered Servers" UI element has been added to the authentication form
Added: Users can now register with a server directly from the launcher
Added: The launcher's window position will now be retained between runs
Breaking Changes
Detect install scripts for redistributables have been slightly reworked and thus has introduced a breaking change where you will need to update these scripts. Where an exit code was previously supplied, now the variable `$Return` must be set. See the documentation for more details.
Final Thoughts
First of all, a huge thank you to the community and anyone who has contributed to the project. Whether it was a pull request or testing a build or submitting an issue, it's extremely hard to field everything in a project of this size as one person. I also want to thank all of the supporters and Bawlers out there who are subscribed here on Patreon. At this rate, LANCommander won't offset the time I've put into the project for a couple of lifetimes, but seriously every little bit helps. So far I've been able to pay off some licensing costs and get myself a case of Bawls. Thank you thank you thank you!
Work is far from done, but I will be taking a bit of a break from heavy features for a few weeks as we start to edge towards LAN party season. Now that we're on a modern platform across the board, there is the serious potential to start adding some pretty impactful features to the platform. Features like one-click VPN access, emulator support, handheld mode, etc. are all somewhere on my radar. I'm getting ready to move past what I've considered the "bare essentials" and start working on all these fantastic features that really aren't seen anywhere else.
That's enough for now. Go grab some friends and bring back the LAN!