Jahed Ahmed Software, Games

FrontierNav Report: March 2019

Progress Report

Changes in March


  • Added types/labels/categories to search. For example, you can now search for "Blades" and see a list of all Blades.
  • Improved behaviour of map features to reduce noise. Now certain features will only appear when you're on a relevant page. For example, when viewing an item page, you'll see features indicating the spawn points of enemies that drop the item.
  • All map features now show a "check" icon when their target is marked as completed.

Full changelog on GitHub.

Read more

Creating a Community Forum for FrontierNav

One of the oldest feature requests for FrontierNav was to have a community forum. A place to ask questions and network with other users. I've finally decided to introduce this feature, albeit in a primitive state.


Why does FrontierNav need a forum?

FrontierNav's focus has mainly been to introduce interactive guides (e.g. maps) for games that aren't available on other websites. However, there are other ways FrontierNav can improve a user's experience. One of them is the question and answer flow.

Read more

Creating a Forum with Firebase

So you've decided to create a forum... using Firebase. Let's go through the entire process. This guide assumes you already have some knowledge using Firebase so it's mainly focused around modeling the data to work with Firebase's limited access controls.

Unlike traditional databases, Firebase's Real-time Database is accessed directly from the browser by users. This allows real-time push updates whenever the data changes without the user needing to manually reload.

Data is written individually by users. A user can attempt to write into the database, and the database can say who's allowed to write there and restrict the data with simple rules. For example, "a property can only be changed by User A and it must be a number".

However, due to the nature of Firebase, it cannot enforce complex rules. For example, "you can only add a new post if you haven't created a post in the last minute". This generally requires going through all posts for a given user and finding the timestamp of the most recent one. Not possible in Firebase.

Read more

FrontierNav Report: December 2018

Progress Report

Changes in December


Preview showing the new entity pages and navigation across different guides.


  • Added standalone entity pages.
    • This lets you search for an entity and go to the guide you need rather than having to pick a guide first (see video).
  • Added category listing for entities.
    • This lets you find an entities by category if you don't have a specific thing to search.
  • Continued making the application more modular.
    • Pretty much done now, a few small hairs left.
  • Various UX improvements
    • More preloading of scripts to reduce loading points.
    • Better indicators when certain details are linked to other pages.
    • Navigate from one guide to another. For example, you can go from an entity page to the affinity chart to the map (see video).

Xenoblade Chronicles 2

  • Added Enemy Drops
    • Includes things like accessories, core crystals, aux cores, etc.
  • Improved Affinity Charts
    • The icons and mugshots are now best quality.
    • Rewards marked as complete now appear as such.

Full changelog on GitHub.

Read more

FrontierNav Report: November 2018

Progress Report

Changes in November

Now that FrontierNav is open source, it's a lot easier to share changes for the month. You can find a list of changes on GitHub.

However, it's a bit low-level so to summarise:

Architecture Improvements

  • Continued tidying up the code so that it's easier for others to understand.
  • Made some rendering performance improvements
  • Looked into Dat / Beaker as a way to serve FrontierNav without a central server (read below).

Xenoblade 2

  • Improved enemy map markers and spawn details

Read more

FrontierNav Report: October 2018

Progress Report

Changes in October

FrontierNav is now open source! I've spent most of the month planning this switch over and thinking about what it means for the project going ahead.

By virtue of being open source, I'll be more open about priorities and plans. There's an Issue Tracker for feature requests, planned changes and bug reports. I've also written some documentation for people to get started so that they can make their own code contributions.

You can find the code repository on GitHub.

Read more

FrontierNav Report: June 2018

Progress Report

Changes in June

For Xenoblade 2's map, legend toggles have been implemented, allowing you to choose which map markers to show. However as the data bundle now contains substantially more data -- roughly doubled by adding all enemy spawn points -- the current approach to data management may not be feasible. So I've spent some time looking into alternative approaches.

Read more

Always Log JSON

After years of writing log lines and trying to find a perfect format, I've come to a conclusion: Always log JSON.

Logging to JSON makes your code read more consistently, you save time thinking about how to log your message and it allow you to separate concerns between logging data from processing it for various use cases like debugging, generating reports and performance.

I'll be using JavaScript as an example here, but my opinions apply to all languages.

Read more