OpenFusion 1.6 released

October 6, 20246 minutes

With one year since the release of 1.5, we’re happy to announce OpenFusion 1.6.

Major Changes

New Website

More than likely, you are reading this announcement from our fancy-schmancy new website - if so, welcome! This will be the future home for blog posts, documentation, downloads, and any other information pertaining to OpenFusion. Feel free to browse around and give us feedback, and if you’d like to propose any changes to the website, the source code is available here!

Offline Cache

Finn Hornhoover has been working hard on implementing game cache management. This feature offers several benefits: First off, there is a new window available in the client which you can access by pressing the ‘Edit Game Builds’ button to the left of the Connect button. From here you can view the disk space used for caching each build of the game and delete them if you need to free up space, or maybe just want to re-download them.

Additionally, you can download “offline” game caches, allowing you to play any official version of OpenFusion entirely offline with a locally hosted server. The same menu shows whether any of your cache files are corrupted or altered, tallying the genuine and corrupted files when you first open it. If any files are corrupted, you can easily repair your cache from the same screen.

There’s also a new bonus feature: you can now add custom game versions directly from the client! This is particularly useful for adding servers with custom content, though currently, it doesn’t detect whether files have been updated server-side. We plan to enhance this with the full implementation of cookie-based login and additional API endpoints.

Authentic Racing Formula

In the past, OpenFusion used a racing formula that was passed down from the Retro project. The Retro project was forced to make their own formula for scores and Fusion Matter rewards and they calibrated the CRATE reward thresholds accordingly. This calibration had issues, making certain star rewards (most notably 5-stars) pretty difficult to attain in certain infected zones. The Retro team alleviated these issues by revamping the CRATE reward system for races. This revamp created a new issue: the original game locked most of the good rewards at the 5-star skill barrier, as opposed to Retro’s 3-star skill barrier. As such, Retro’s calibration of racing scores wouldn’t apply nicely to OpenFusion unless it too abandoned the bronze - silver - gold reward structure. This pushed us to pursue the original game’s score formula itself, which was battle-tested and well calibrated by the original game’s developers and racers. After a months-long process, we were able to infer formulas and coefficients that accounted for 100% of the data present in old videos and Wayback Machine leaderboard scores (around 6,000 score entries!). This means that we have very strong candidates for the original game’s score functions now. We were also able to get the score thresholds that determine how many stars you should get from the client, and verified these using old racing videos. Further, the Fusion Matter reward formula was also discovered, and it now only depends on the number of pods you collect in a certain Infected Zone, just like the original game. The details of the search, the data collected and the tools are available here.

TL;DR: we have the original game’s racing formulas now, in all OpenFusion servers! For server hosts: if you would like to migrate your previous scores to this new score formula, please see the following script.

NPC pathing improvements

We’ve finally merged the Car paths contributed by our gruntwork volunteers from the Discord server. This includes paths for the Ghost Duck in Endsville and the walking KND Agent in Orchid Bay. These paths have already been live on the public servers for preliminary testing for a very long time, but now they’re officially included in the repository and are thus functional on local servers.

Some of the paths that have been implemented were carefully researched by gruntwork contributors to ensure accuracy to the original game, while others are quick-and-dirty placeholder paths that will hopefully be replaced with OG-accurate ones eventually.

A big thanks to the authors of these paths:

  • Infinity Helios: Townsville Park, Eternal Vistas, Habitat Homes, Genius Grove, Goat’s Junk Yard
  • bensterzkasai: Steam Alley, Offworld Plaza, Mojo’s Volcano, City Point, City Hall, Townsville Center, City Station
  • Ben Buttoncoyote: Endsville Ducks
  • Plants10000: All of the placeholder paths in every area not covered above

If you would like to help out with finalizing the remaining car paths, check out the Gruntwork channels on our Discord.

Ability Refactor

In an effort to clean up some of the huge technical debt we’ve built up, we went ahead and cleaned up almost all code related to the skill and buff systems for this release. Although players should not notice a difference in gameplay, the server now tracks buffs (and debuffs) much more carefully than before using proper C++ data structures. Not only does this make the code much cleaner and easier to understand, but it also squashes a ton of buff-related bugs, such as improper grouping of buff classes. The way skills are applied during combat has also been simplified: skills are now applied the same way to both players and NPCs instead of having separate code for both (opening up the way for NPC-vs-NPC combat). This entity-agnostic behavior also applies to Groups now, meaning players and NPCs can be in the same group. Together, these changes provide a strong foundation for the escort missions that are still missing in OpenFusion today. Although they aren’t quite ready yet, we are several steps closer with these changes.

Other Server changes

  • Added preliminary support for a proper account system. The server can now be configured to verify temporary authentication cookies instead of plaintext passwords on login
    • These cookies have to be inserted into the DB ahead of time by a separate server program (which is not ready yet, but will be released in the future)
  • Added support for changing players’ access levels from in-game using the /access command
  • Fixed the longstanding bug where Nano icons, the buddy list, and the MOTD text would sometimes not load in Academy builds of the game
  • Fixed in-game email notifications not being shown immediately when you recieve an email from another player while you’re online
  • Added missing notifications for when a trade offer has been cancelled or aborted, such as when the other player is in the middle of combat
  • Bumped nlohmann JSON dependency to version 3.11.3
  • The server now prints how many accounts and players are in the database on startup
  • Fixed various miscellanious packet parsing and crash bugs
  • Fixed NPC barkers that are unlocked by missions always being said by the same few NPCs in an area, even if they are the wrong NPC for that line
  • Fixed a bug where racing Pods wouldn’t show up in the Pimpleback Mountains Infected Zone
  • Made the Docker release of the server easier to set up, and automatically publish a build to Docker hub with each release

Other Client changes

  • Added a settings menu; accessible with the gear icon in the bottom left
  • Added basic validation for inputs (ex. adding servers, versions, etc.)
  • Various iterative changes that improve stability and developer experience

Download

As always, both the server and client download are available from our releases page.

Enjoy and thanks again to our contributors for all the assistance with this release!