Skip to content
Robs Code Lab

Robs Code Lab

Insights in Software Development – Sharing Code, Concepts, and Challenges for Developers

Robs Code Lab
Robs Code Lab
Insights in Software Development – Sharing Code, Concepts, and Challenges for Developers
Development | Experiment

Building a Head Tracking Mobile App

ByRobin Rowinski

A few evenings ago, I wanted to play Euro Truck Simulator 2.

Normally, I’d use my VR headset for maximum immersion, but honestly? I wasn’t motivated enough to unpack it, connect everything, and deal with the usual setup process. So I started looking into head tracking instead.

For those unfamiliar with it: head tracking allows you to look around the cockpit naturally by moving your head while still playing on a normal monitor. Pretty neat for driving and flight simulators.

The Search for a Cheap Solution

My requirements were simple:

  • No VR headset
  • No additional hardware
  • No extra webcam for my gaming PC
  • As little money spent as possible

Unfortunately, most dedicated hardware solutions seem to start somewhere around 200 EUR. That’s a bit steep for something I wasn’t even sure I’d use regularly.

Then I remembered:

“Wait a minute… I already have an iPhone with a pretty sophisticated camera system.”

There are several apps on the App Store that turn your phone into a head tracker, and to be fair, some of them work really well. The only thing I didn’t like was the price.

Most apps I found were somewhere around 20 EUR, which isn’t unreasonable for a niche tool, but it still made me hesitate.

How Hard Could It Be?

As software developers, this is usually the moment where we make questionable life choices. Instead of spending 20 EUR, we spend an entire evening building something ourselves.

So naturally, I thought: “How hard could it be?”
Turns out… not very hard.

Building the Prototype

Apple provides face tracking capabilities* through ARKit.
The framework gives you access to:

  • Head rotation (yaw, pitch, roll)
  • Position tracking
  • Face anchor updates at high frequency

From there, the basic architecture is surprisingly simple:

  1. Track the user’s head using ARKit.
  2. Extract rotation and position values.
  3. Send the data via UDP over the local network.
  4. Let OpenTrack on the gaming PC receive and process the tracking information.

Within roughly two hours, I had a working prototype. I launched ETS2, turned my head, and the in-game camera followed.
Success.

*) TrueDepth Camera needed. First supported devices are iPhone X (2017) and iPad Pro (3rd Gen, 2018)

Taking It One Step Further

At this point, the project had already achieved its original goal. I wanted a cheap head tracking solution for Euro Truck Simulator 2, and now I had one.
Problem solved.

My first thought wasn’t: “I should release this.”
It was more like: “Nice. It works. I’ll use it.”

And honestly, that’s where many of my side projects end. But after using the prototype for a while, another thought started creeping in. The app already does the hard part:

  • Face tracking works
  • Data is transmitted reliably
  • OpenTrack receives the values correctly
  • Latency is low enough for gaming

What’s missing isn’t the technology anymore.
What’s missing is turning a rough prototype into something people would actually enjoy using.

A proper user interface, Settings, A polished onboarding experience.
The kind of details that transform a “developer tool” into a real product.

So instead of asking: “Can I build this?”
The question suddenly became: “Can I make this good enough that other people would want to use it?”

That’s a much more interesting challenge.

Thinking About Monetization

If I decide to publish the app, there is one unavoidable reality. The Apple Developer Program costs money every year.

I’m generally not a fan of expensive subscriptions. On the other hand, I’m also not a huge fan of paying large upfront prices for small utility apps.

So I’m considering a pricing model that feels fair:

  • 2 EUR per month
  • 15 EUR per year
  • 19 EUR lifetime purchase

The subscription would mainly help cover App Store fees and ongoing maintenance, while the lifetime option would remain available for people who prefer one-time purchases.

As a customer myself, that’s probably the pricing model I’d choose.

Another option would be a fair ad based solution:

  • Watch one Rewarded-Video and get full access for one day

I don’t like apps which spams 100 videos when you are playing for like 5 minutes. So this would be more than fair, I guess.

Final Thoughts

What started as an attempt to avoid unpacking a VR headset turned into a surprisingly fun little project.

The most interesting part wasn’t even the coding itself. It was realizing how much modern smartphones can do with the hardware we already carry around every day.

I also really enjoyed coding with Swift again after several years away from mobile app development. It felt surprisingly familiar, while at the same time a lot has improved since the last time I seriously touched the Apple ecosystem.

Sometimes the best projects start with a simple question:
“How hard could it be?”

If you spend too much time thinking about how hard something might be, you’ll probably never start.

Build the first version, embrace the mistakes, and learn as you go. You might be surprised by what you can create in just a few hours.

Feedback

What do you think about the pricing model? Would you prefer a subscription, a one-time purchase, Ads or something completely different?

Feel free to send me your thoughts via Discord, X (Twitter), or E-Mail. I read every message and real user feedback will help shape the direction of the app if I decide to release it.

Also, if you’ve ever invested five hours of development time to avoid spending 20 EUR, I’d love to hear that story too.

Post Tags: #6DoF#AppStore#ARKit#Head Tracking#iOS#Mobile App#OpenTrack#Swift
Robin Rowinski

Post navigation

Previous Previous
Quick Tip: High-Pitched Noise on Mac Mini M4 Pro? Check Your USB Hub
Discord Linkedin Github
  • Contact
  • Imprint
  • Privacy Policy

© 2026 Robs Code Lab