
A gripping mobile action-adventure that sends you on a thrilling quest to free mankind from the clutches of an evil A.I. in a futuristic universe filled with stealth, combat, puzzles, and story.
Trailer
Goals
When concepting ARKNET: Singularity, stakeholders and developers agreed on the ambitious goal of delivering a console-class action-adventure game for smartphones. This meant striking the right balance between genre-typical complexity and platform-customary simplicity. To achieve this goal, particular attention was paid to an accessible learning curve, explaining mechanics in an entertaining yet understandable fashion, and keeping touchscreen controls as simple as possible.
Specs
Screenshots
My Tasks
Introduction
Arknet: Singularity was my very first professional game. I was the only programmer at the company and was eager to create a fantastic game. It was also the first time I was challenged by creating a mobile game on top of that. That means I had to learn a lot of new things yet again. From figuring out touchscreen controls, setting up a backend, learning bottlenecks and disadvantages of mobile devices compared to PCs, and learning about app stores and their guidelines.
This project was also the first time I used Unity's Universal Render Pipeline (URP) instead of the Built-In Render Pipeline. This was at the time when Unity doubled down on their Scriptable Render Pipelines (SRPs), so this was a good way for me to learn about them and how they work under the hood.
The game took a lot of inspiration from V.I.R.U.S., one of my previous student projects. So a lot of systems could get used in this game again. Though I had to optimize and refactor a lot of the code to make them not too demanding for mobile devices.
Interactable System
The interactable system from V.I.R.U.S actually didn't get reused in this project, since we now had completely different prerequisites. The player doesn't have multiple options to choose from when close to an interactable object, and upon selecting an option, the player would cast an ability. Instead we had multiple objects in a level the player could interact with. When stepping on a control pad, a UI element would appear, and the player could interact with that in order to manipulate another object in the world. E.g., moving a platform as seen in the 2nd screenshot.
Backend and Analytics
There is a first time for everything, and with this project, it was the first time I ever had to work with some kind of backend software, with analytics, and with the app store developer portals.
For Arknet, we decided to work with Firebase since the owner of the company was comfortable with Google Analytics, and Firebase, owned by Google, works with Google Analytics out of the box.
We didn't just use Google Analytics, though; we used Firebase Analytics and Unity's analytics as well. Looking back at it, it's probably a bit redundant and overkill, but we just wanted to see if we got the same results on all platforms.
Firebase Crashlytics also got used on top of that.
Besides that, we used Firebase storage/database for our in-game shop to make discounts and promo codes work as well as Firebase Messaging to send notifications to users.
I was also responsible for setting up ads in the app. At first we used AdMob by itself but later switched to ironSource. I then set up and connected all kinds of ad services to ironSource, from Unity Ads to Facebook Ads to AdMob to AppLovin, just to name a few.
Tools
I had created a bunch of tools for our designers so that they could easily connect interactable objects in a level without having to drag and drop references in Unity's inspector.
The Power Editor allowed a designer to connect power pads with objects that needed power in order to work. E.g., a mobile platform/slider. With the Control Editor, a designer just had to select a control pad, click the 'edit' button in the scene view, and then select a valid interactable object in the scene. Everything in the scene view to make everything less confusing and more efficient.
Additionally, the designers could easily change the theme/skin of the level. Changing the main and accent colors. Disable unnecessary colliders for that nice extra % of performance and even define chunks of objects or "stoppables" that would get turned off when the player is too far away to save on CPU performance.
GUI
By now I learned a lot about Unity's UI system. So much so that it was just a natural choice letting me do the UI work yet again. I didn't do absolutely everything, though. Our designers made initial mockups, our artist gave his inputs and opinions, and I ultimately built the UI upon that.
Designing a GUI for a mobile game was a new challenge. Buttons can't have hover effects, and a lot of elements need to be big to make them easier to read on smaller screens. Additionally, aspect ratios are all over the place on mobile devices, so I also had to validate a ton of resolutions and aspect ratios. This wasn't new to me since there are quite a lot of aspect ratios on PC as well, but not THAT many.
On top of that i started to make a lot of use of tweening. And added a lot more 'juice' to the UI.
Post Mortem
Working on Arknet was fun. I learned a lot of new things. Improved my UI skills even more, especially since I had to keep mobile users in mind. I focused a lot more on performance, utilizing a bunch of new tools I never used before, from logcat to frame debuggers to profilers that were pre-installed on my Android phone.
Learning backend software like Firebase and how analytics work also is a big plus for me.
My editor tools also got better and better.
Ultimately it was fun to create an actually demanding mobile game and work around the platform's weaknesses.
I think Arknet was a fun game, and we reached our goal of creating a game that doesn't feel like your typical mobile game these days. Unfortunately, Arknet didn't gain much traction, and in-game sales were sparse. So eventually development came to a halt, and the project was ultimately cancelled.