How we made our loading screen

We have adopted the same loading screen that we made in Academia: School Simulator to our new game City Hall Simulator. The cool thing about this loading screen is that it shows a progress bar which I think is a good UX feature so the player knows how much further along the game is going … Continue reading How we made our loading screen

The safest way to use DOTS in your MonoBehaviour project

Before I begin with the article, I would like to let you know I'm giving away a free game by subscribing to my mailing list. With that out of the way, let's get it on! The problem is that if you want to leverage the speed of Burst, you have to use a subset of … Continue reading The safest way to use DOTS in your MonoBehaviour project

How we did the tutorial system in Academia: School Simulator, Part 3: Putting them all together

In part 2, I discussed how we made the tutorial actions that will be available on the editor. Now we're on the last part (I promise). I'm going to discuss how we put them all together from the SSM framework discussed in part 1 and the actions in part 2. Editor Let me show you … Continue reading How we did the tutorial system in Academia: School Simulator, Part 3: Putting them all together

How we did the tutorial system in Academia: School Simulator, Part 2: Actions

In part 1 of this post, I discussed about the underlying framework used for our tutorial system for Academia. I'll continue it here on how we made the tutorial actions. Locking or unlocking an interaction UI In Unity, there's a base class for all components that makes a UI interactable. It's called Selectable. The components … Continue reading How we did the tutorial system in Academia: School Simulator, Part 2: Actions

How we did the tutorial system in Academia: School Simulator, Part 1: SSM

I've been a game developer for more than a decade now. I can say that one of the technically challenging features to do is the guided tutorial. Tutorials are generally hard because they tend to temporarily break the normal functioning of the game's systems. Later on, those systems should revert to functioning normally and seamlessly. … Continue reading How we did the tutorial system in Academia: School Simulator, Part 1: SSM

Option<T> for High Performance C#

Ages ago, I wrote about how the concept of null is a million dollar mistake and tried to replicate the concept of Option from other languages into C#. We are heavily using this in Academia for newer code since then. We even refactored some of our old code that causes the most NullPointerExceptions. I'm making … Continue reading Option<T> for High Performance C#

A Multithreaded Sorting Attempt

In my previous post, NativeArray.SortJob<T>() ended up running slow because it's not being Burst compiled in the PC build. I've discovered that this is a known limitation. Generic jobs that are invoked inside generic methods can't be Burst compiled. A known trick is to "mention" the jobs with concrete types so that the jobs will … Continue reading A Multithreaded Sorting Attempt

Process All Scenes in a Folder

In our game Academia, we employ a multi-scene architecture. We now have hundreds of scenes that are all additively loaded at runtime to compose the whole game. Sometimes, there are fixes or new features that requires changes to all scenes. Imagine doing this manually. Load scene, apply change, save scene. Repeat to hundreds. This is … Continue reading Process All Scenes in a Folder