PSO2 Title Tracker Tool

Note : The app is now offline

My friend Mellow came up to me one day and asked for help tracking a thing in a game he was playing. I never played PSO2, but apparently titles are a thing and there are a lot of them.

Whenever a player performs specific actions or achieves certain feats, they are awarded a Title relative to that achievement. Titles can range in variety from beating bosses and reaching class levels to simply chatting or participating in events. The player can also claim Title prizes depending on the Title. snippet from a community wiki

At the time, Animal Crossing: New Leaf was still near its peak, and the way this tool was pitched to me was “something with a Nookazon-esque backend for just tracking checklists, if the data was compiled beforehand” Nookazon is a website with a lot of tools to help AC players keep track of things. It’s primary purpose is something like a craigslist for trading in-game items. However, one of its tools was keeping track of which things a player has managed to collect, and that’s what Mellow wanted for PSO2.

I thought it wouldn’t be too hard, and I enjoy making small webtools, so I gave it a shot.

Fortunately, like he said, there was already a compiled database of all the titles available in the game. It was in a google sheet, but it was better than getting it myself.

Mellow is a webdev himself, just with less confidence when it came to developing backend infrastructure. So he helped design the layout and what information we’d be be presenting. So we laid out what we needed:

  • A checklist of achieved titles
  • An organized way of displaying titles and sorting them. This included filtering by several established categories as well as whether you’d completed them
  • Create individual characters to organize separate achieved title lists

We used a Trello board to organize needed feature work and coordinate our efforts.

The first prototype was just a glorified checklist storing booleans for titles in your browser storage. The downside was that you couldn’t keep your info across multiple machines, but it was a functional proof of concept. At least this way it was portable for offline use, which had its own advantage. It was a really really simple express app with only one or two routes for serving the frontend, and one route for serving the data. It had a variety of sorting options, and it displayed all the information that was available about every title. It didn’t need a whole lot of effort, the only optimization I really needed was to flip the storage paradigm when you had >50% of the titles to track which ones you don’t have instead (there are a lot of titles). It was hosted on Google’s Cloud services, which was thankfully free for small projects and offered scalability if it was needed.

The second stage wasn’t much different. I made a straightforward account structure using OAuth2 libs to enable logging in with your Google account. Google’s Cloud services also offer database hosting, so it I just needed to migrate user data there. Since it was already live, I would just prompt to do that from local storage upon first registration.

Written on September 5, 2023