Troubleshooting PHP gettext

Troubleshooting PHP gettext

Over the last couple of weeks, I’ve been tinkering with PHP’s gettext to set up internationalisation for one of my web apps (i.e. getting it ready for translation into different languages). Even though there were many step-by-step guides and Stack Overflow topics on the web, all detailing a similar set of instructions, following them did not work things out for me.

After some frustration and a lot of time tinkering, it turns out that these guides were missing some pieces of information.

Continue reading
Unity Rigidbody Interpolation Hero

Unity Rigidbody’s Interpolate property

If you looked at the properties available for configuration on a Unity Rigidbody and poured through the documentation for it, you’ll likely find that most of its properties are pretty easily to understand, with the exception of Interpolate and Collision Detection. We’ve explored what the Collision Detection properties do in another article on this blog, and we’re going to explore the Interpolate property in this article.

Unity Rigidbody's Interpolate
The Interpolate property has 3 possible values.
Continue reading
Apoca Force WAIFUs

Showing Unity’s NavMesh in-game

As part of a school assignment in the past year, my team and I created Apoca Force, a tower defense game where WAIFUs (World Apocalypse Intercepting Frontline Units) are deployed onto a battlefield to combat an undead horde. In this game, WAIFUs serve as the eponymous towers of the genre, but with a twist — by spending some resource, they can be moved after they are deployed.

To denote the areas that WAIFUs can walk on, we created an interface that highlighted walkable areas on the map when players decide to move their WAIFUs. This is what we ended up with:

Continue reading
Swords and Shields
Awesome starters artwork by Ry Spirit:

Calculating EVs needed to raise a stat in Pokémon

As a result of working on upgrades for this Pokémon Effort Value Calculator, math has been a pretty big part of my life for the past few months, as I’ve been rearranging the games’ formulas for stat and damage calculation to make my own that fit my needs.

One such formula was the EVs needed one, which gives you the amount of EVs you need to invest to raise a stat by n points. Everyone knows that at Level 100, you get 1 stat point for every 4 EV points you invest; but what happens when you’re not at Level 100, or when you factor in stat modifiers like Nature, or item and ability boosts?

Don’t know what effort values are? Start with this article from Bulbapedia. Don’t play the mainline Pokémon games? Then you should start with these.

Continue reading
Dust to Dust

Organising your Unity Inspector fields with a dropdown filter

Over the past 4 months, my team and I have been working on a rogue-like hack-and-slash game for our school’s final year project called Dust to Dust. We have very high ambitions for the game, and we had never worked on projects as large of a scale as this. Of course, by doing that, the challenges we encountered got bigger as well. We had to keep track of many parameters in developing a role-playing video game, and quickly realised that the time taken to find Inspector properties in the project was getting longer and longer. Furthermore, the project was on a 15-week timeline, so every minute was valuable.

Hence, we needed an effective solution that would ease navigation in the project, and — like before — it became clear that we had to once again extend the Unity Editor to suit our needs.

Continue reading
reCAPTCHA Meerkats
Image by Mike Birdy, from

Verifying Google reCAPTCHA v2 checkbox on PHP

17 July 2020: Updated the class provided in this article to make it easier to use.

For those of you using Google reCAPTCHA to weed out spam on your websites, here’s a code snippet for verifying the reCAPTCHA v2 tickbox response on the server-side using PHP.

Continue reading
RAM in Black
Image by Tim Sullivan, from

RAM, explained in English

RAM stands for Random-Access Memory, but that is something that you can find out just by doing a quick Google search. If you read the results of said Google search to understand what it is, you’ll start running into jargon that can be difficult to understand for a layperson. Here are some examples:

…a form of computer memory that can be read and changed in any order, typically used to store working data and machine code


…temporary storage that goes away when the power turns off


…is used to load and run applications, such as your spreadsheet program, respond to commands, such as any edits you made in the spreadsheet, or toggle between multiple programs, such as when you left the spreadsheet to check email

These are not bad examples, per se, but if you don’t work with computers a lot, these explanations will seem very abstract. What does working data mean, for example; or why is RAM temporary storage (why not just make it permanent)?

Continue reading
Unity Remote Splash Screen
Unity Remote 5 Android app splash screen

More tricks to get Unity Remote for Android working on Windows

This article is a continuation of Getting Unity Remote for Android to work on Windows. If you haven’t read that, I suggest you take a look at the article and make sure that Android Build Support (and its accompanying Unity-native SDK, NDK and JDKs) is installed, and that you have tried installing the Google USB Driver.

There are also some simple troubleshooting tips listed in that article that you should try first, before you attempt the ones here.

Continue reading
Unity Remote Splash Screen
Unity Remote 5 Android app splash screen

Getting Unity Remote for Android to work on Windows

30 July 2020: We’ve updated the article with helpful comments from past readers. Thanks for all your contributions!

If you’re developing a game for Android on Unity, Unity Remote is an irreplaceable tool that allows you to quickly test your game on your Android device using Unity’s built-in Play-in-Editor feature. Unfortunately, it is also pretty difficult to get Unity Remote to work, since it requires some very specific configurations on both your Android device and your computer.

Available solutions online are often incomplete, inaccurate, or outdated (Unity Remote was released more than 4 years ago, and the Android development scene is very different from how it was then), so you often have to piece solutions from multiple sources to get one that works. Hence, after recently grappling with getting Unity Remote to work on a handful of my own computers, I’ve decided to write an article outlining the most important steps for getting Unity Remote to work. Hopefully, this will save you from having to do over 9000 Google searches like I did.

Continue reading
GitHub Desktop
Image from

Using GitHub Desktop as your source control repository in Unity

If you’re working on a Unity project on the default, free Unity license, you’re only allowed to have a maximum of 3 people (and a storage limit of 1GB) on Unity Collaborate. While you can work around the headcount limitation by adding and removing members as and when they need to make a commit, it can quickly become a tremendous hassle. Hence, for those not willing to pay for a Unity license, a cheap and easy way to go around both the personnel and storage limit is to use GitHub Desktop for collaboration.

Continue reading