Beacon's API v2
Published

Beacon's website has been updated to a new backend API that will be used to support the upcoming Beacon 1.5 update as well as updates for the foreseeable future. For the most part, this won't make much of a difference to you, but Beacon is an open source project so it makes sense to outline some of the changes and the reason behind them.

There will be little things you can notice, such as the search results list will now show what kind of object something is instead of just saying Object. This was very confusing when there are creatures and drop containers with the same name.

The main goal of today's update is to allow growth. The story of Beacon 1.5 and API v2 are all about handling technical debt. Technical debt accumulates in any software project, and it happens when a situation changes the parameters of an older decision. Just like financial debt, technical debt can limit options when it's time to grow and must be paid back one way or another. That's what Beacon 1.5 and API v2 are all about. While there are tons of little changes, there are two focus areas worth mentioning, and they both relate to the Ark blueprints that Beacon keeps track of.

The first is the blueprint update files. When you launch Beacon, it asks the server for all changes since X time, with X being the last time Beacon checked for updates. This can be processor intense for the server, but the requests are predictable so the results get stored in memcached, which is a very fast way to store and retrieve small bits of information. The keyword here is small though, and Beacon has outgrown what memcached is able to handle. Adding compression helped, but the ceiling is still there and this problem needed actually solving. So update files for Beacon 1.5 onward will now be produced on a small delay and uploaded to Beacon's content delivery network where they will remain forever. This allows them to be as large as necessary. Beacon will download all the files needed between its last launch and the current version. This works very well and allows Beacon to grow well beyond what it could previously handle. This means, however, that Beacon 1.4 and older will be limited in what blueprint updates they receive. Older versions will continue to receive updates for the core maps and mods that are already supported, but new mods and potentially new maps will be limited to Beacon 1.5 and newer.

The second major issue is blueprint uniqueness. Beacon has always assumed that all blueprints have a unique path in the game files, and that class strings are unique for each mod. Recent events have challenged those assumptions, which required reworking many parts of Beacon's database and file format. The best example of this is the Structures Plus vs Super Structures situation. When Structures Plus was abandoned by its developer, another developer took the source code and continued working on it under the title Super Structures. To allow drop-in replacement of Structures Plus, Super Structures very intentionally uses the same blueprint paths as Structures Plus. Within Beacon, the easiest option was to rename Structures Plus to Super Structures and hand control over to the new author. Then Structures Plus came out of retirement, and the community now has at least two mods using the same paths. Within Beacon, the two cannot coexist due to the unique path requirement. So today's update allows Beacon's database to store these duplicated paths in separate mod entries, meaning Super Structures and Structures Plus will both be able to be supported within Beacon.

Thanks to the new v2 API, Beacon will be able to grow well into the future. Documentation for the v2 API will be coming in the future, but my immediate goal is getting Beacon 1.5 ready for alpha testing. There's more good news coming, so stay tuned.

    No Results

    Message

    Explanation