jahed.dev

Weekly Report: 16th December 2019

I didn't publish a weekly for the week before since it was a holiday week. So this weekly will be a combination of the two, that is the 16th and 23rd.

All of the updates are related to FrontierNav. I haven't really blogged much about specific topics for the last few months. Maybe I should.

FrontierNav

Improved Map Visuals

Maps are now visually consistent across games. This was needed as FrontierNav moves towards using the same maps for all future games.

Preview of Improved Map Visuals
Showcasing the improved visuals.

Introduced Map Feature Toggles

Some map features are hidden by default to reduce performance issues when there's hundreds of features on the screen. They are only visible when it's relevant to your search. However, this made manual discovery difficult as users didn't know what sorts of information were available. So now, you can now unhide features.

In the future, maps can hide/show features based on how zoomed in the user is. However, since there's no culling for features outside the viewport, it will still have a performance impact. Which leads onto...

Preview of Map Feature Toggles
Showcasing feature toggles.

Performance Issues

The new map visuals use CSS filters extensively. This seems fine for Chromium-based browsers, but Firefox struggles with it. It pretty much freezes on mobile.

I'm considering moving to a canvas-based mapping library like OpenLayers as it's clear the DOM can't handle so many elements.

Improved Map Feature Discovery

Previously, map features were discovered and selected through hard-coded queries for each game. Searching for a Collectible in Xenoblade 2 would trigger a specific query to find the related Collection Points. This meant if a new type of entity was added, the maps wouldn't know how to find features relevant to it.

Now, instead of a custom query for every type of entity, FrontierNav discovers these relationships by itself. So when you search for a Collectible, FrontierNav will look for the various ways it's connected to a map location and show you those.

Improved Map Discovery

In a similar manner to feature discovery, map lists were also hard-coded. Maps had to be under a specific Region, Area, Map hierarchy. This structure came from Xenoblade 2's in-game map, and even there it often didn't make sense. The idea of Regions, Areas and Locations are vague and far from strict. They are context sensitive depending on your viewpoint.

This structure also doesn't work for general use cases such as in Astral Chain, where locations are re-used but have different features based on the current mission.

So instead of a strict hierarchy, Maps are now discoverable based on what they represent and what their features represent. This generic capability is the same as how map features are discovered.

Preview of Map Discovery
Finding Secret Areas in Xenoblade 2, and filtering by Region to further refine the search.

Revamped Sidebars

I always had a nagging feeling whenever I opened the sidebar. The font sizes never looked correct and the alignments seemed off. So I went ahead and improved it.

Preview of Revamped Sidebar
Headings are more muted to give focus on data.

Migrations Mostly Complete

The only game left to migrate now is Xenoblade X. As I mentioned in the previous weekly, Xenoblade X is the oldest game in FrontierNav and has a lot of custom features specific to it. Moving that over to a generic featureset is going to take some time.

If a new release of Xenoblade X is announced for the Switch, I'll have more incentive to move it over, but as it is right now, there's not much reason to put the effort in.

Other Changes

Thanks for reading.