- I’m a software engineer and cofounder of Foggy Box Games.
Migrating to Firebase Functions V2
I’ll be honest - I’ve been putting this off for a while. The Firebase Functions v1 to v2 migration has been sitting in my backlog since its announcement, and like many developers, I kept thinking “well, if it’s not broken…”. But after diving into some new features in v2, I realized it was time to bite the bullet and modernize. Why TypeScript? The decision to rewrite in TypeScript wasn’t just about following trends....
Local Firebase Development with Emulators
Why Emulators Matter If you’re building anything substantial with Firebase, running your entire stack locally isn’t just convenient - it’s essential. I’ve been diving deep into Firebase development lately, and the emulators have become an indispensable part of my workflow. The Setup First things first, you’ll need the Firebase CLI. Here’s what a typical firebase.json looks like for a full-stack setup: { "hosting": { "public": "dist", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ { "source": "**", "destination": "/index....
Startenders: Intergalactic Bartending
At its heart, Startenders is an intergalactic bartending game with a key focus on getting the player moving around and using machines, pouring drinks and memorizing the bar. ...
Brunch Club 🥑
Brunch Club is an action packed party game about food that can be played solo or up to 4 players with a seasoning of pop culture. Try, try, and fry again! Can you stand the heat, or will you have to get out of the kitchen? ...
BitMap: 3D Fitness Data Visualization
I’ve always been fascinated by GPS data visualization, particularly in fitness tracking. While standard 2D maps are useful, they don’t tell the whole story - especially when it comes to elevation changes. That’s what led me to experiment with MapBox’s 3D capabilities and the Fitbit API. The Concept BitMap Prototype Interface The idea was simple: take GPX data from Fitbit activities and render it in an interactive 3D environment. MapBox’s GL JS library provided the perfect foundation for this, allowing for terrain visualization and custom data overlays....
EVE SSO OAuth
With an understanding of how to retrieve data from the public CREST API endpoints, I want to get down the authentication side of things before I get into the fun stuff. Third-party applications for EVE Online can now make use of the Single Sign On (SSO) user flow, allowing users to authenticate the application via the EVE login servers. This is great for web-based applications but causes a bit of hassle for non-web applications....
EVE Static Data Export & Solar Systems
Shoot for the moon! Part of the goal for the EVE Online CREST API challenge was to visualize the chosen trade route. To do this I’ve made use of both the CREST API and Static Data Export (SDE) to populate a series of uGUI buttons for each region. There’s not a whole lot of reasons to use the CREST API to poll static data such as regions, but it shows that I know how to use it....
LINQ Queries
Ok, so we’re back in development mode now. I’ve pulled lots of data from the CREST API and it’s being displayed but we need to be able to filter and sort it so it’s useful to us. Hopefully you’ve come accross LINQ at some point - Language-INtegrated Query. This stuff is great, it’s basically cheat codes for programming. The first thing we want to do is sort all sell orders by price because we want to know where to go for the best deal in New Eden....
Stop Calling Them Scripts
Or don’t, I’m not a cop! Ok, this is more a personal habit but a sensible one - hear me out. The most commonly referenced thing in unity is the idea of a Script, Unity even uses it in its context menus when creating new C# Scripts. This idea is a remnant from the days when programming in Unity was made to look approachable by non-technical game developers and frustratingly stuck around....
Meta Data
With the data in and stored in sensible C# classes, we can start to have some fun - I’ve added in some meta data about the current search item. By checking the lastest history item with the latest but, comparisons can be made about their differences. in this case, the change in price and percentage change. double _latest = hist.items[hist.items.Count - 1].avgPrice; double _latestButOne = hist.items[hist.items.Count - 2].avgPrice; double _change = (_latest - _latestButOne); double _percentChange = (_change / _latestButOne); DateTime _latestDate = DateTime....
Search Period
One of the main features of the EVE Online Market view is filtering history by a date range, allowing the player to see trends over 1 year, 6 months, 3 months, and the last 7 days. Luckily all entries in the history come with a date time string, which can be parsed directly to a .NET DateTime object. Compare this with a date from six months ago and we can filter the results....
Unity & Graph Maker
Make something already! Ok, so we’re gonna be pulling down loads of information from the CREST API so it’s going to have to be displayed in a sensible way and there’s nothing more sensible than graphs. Graph Maker is a fantastic plugin for Unity that allows the creation of fully dynamic 2D graphs and charts, honestly, the work put into this is just incredible - oh and it’s fully supported by the new Unity UI framework....
You are not a web designer
You are a games developer Excuse me while I jump on my high horse for this one. Personal portfolio websites are a great way of cataloging your games and projects but be careful about how much time you put into creating your website over the projects you want to show. I’ve been guilty of this before - spending weekend are weekend finding and customising the perfect WordPress template to show off all my work....
JSON to C#
Introduction The following post explains how to deserialize JSON into C# classes using the Unity game engine. It provides an overview of CREST API endpoints, which can be used to request data in Unity, and suggests a few tools and resources for parsing and serializing JSON data. Getting started With a knowledge of the CREST API endpoints, requests can start being made for data - in Unity this is as simple as initialising a new WWW object with the specified endpoint URL....
Making The First Call
The CREST API has a fistful of endpoints available to 3rd party developers. Interestingly, sending a request to the root endpoint returns a JSON string of all available endpoints; pretty handy. https://public-crest.eveonline.com/ Most browsers will return this object as a download as there is no filetype associated with the response. When sent through an application however, the string can be read as normal. This stuff is pretty straight forward as all that needs doing is identifying the desired endpoint, some examples are outlined below....