Lumos Labs

The Beginning and The First App

I joined Lumos Labs, the creators of Lumosity, in 2012 as one of the company's first mobile developers and one of three founding engineers on the Mobile Team. Over about ten months, we built the first version of the app. It landed well and held a spot among the top 10 apps of the year for a good long while. From there we kept building - more features, more games, and eventually iPad support with a improved UI.

Humble Beginnings

At this point we hadn't committed to a game engine. We went with C++ and openFrameworks, since in theory it would let us build for both iOS and Android from one codebase. In practice, the iOS side worked out nicely: with Objective-C++ we could freely mix Objective-C and C++. The Android side did not. JNI calls between Java and C++ weren't performant enough for games, and they introduced memory-safety and stability problems on top of that.

A funnier wrinkle: we drew everything with native iOS elements, which at the time couldn't rotate. So every animation that needed rotation had to be faked, flipbook-style, frame by frame.

Forming The Mobile Games Team

After a few years, the mobile team had grown big enough - and taken on enough responsibilities that it made sense to split it in two: mobile app and mobile games. I chose games. That's where my passion has always been.

Game Engine

One of our first big tasks on the mobile games team was picking a game engine that fit our needs - ideally a single one that ran on both iOS and Android. (Around this same time, the mobile app team split again, into a dedicated iOS team and a dedicated Android team.) We landed on Cocos2d-x. It was strong for 2D, had the features we wanted, and not much we didn't. Over time we built tooling around it to help us make games faster. But if I'm honest, Cocos2d-x never captured our hearts.

Unity

Around 2017, we wanted to experiment with Unity. Leadership and design had one hard requirement: the app had to be native-first. That meant Objective-C and standard frameworks on iOS, and the equivalent standard pieces on Android, with each platform launching the game engine only as needed. We'd already made that work with Cocos2d-x without much trouble. After enough frustration with it, though, we decided to give Unity a shot. I'd been using Unity on personal projects for years by then, and most of my coworkers had at least some experience with it.

We got it working, through a mix of creative solutions and outright hacks. We spent at least six months proving out the tech, embedding the Unity runtime into our production app, and shipping a few game ports and then the whole project got canned. Which left us with three game engines living side by side in the same app: openFrameworks, Cocos2d-x, and Unity. Pure madness.

Cocos Creator

But why stop at three? Around late 2017, Cocos Creator reached version 2, and it brought a lot to like. It was built on a version of Cocos2d-x close to ours, but wrapped in a Unity-like editor (I'm using "Unity-like" generously here). We couldn't just load our old games into it - those were built with our own custom tools - but it ran on both web and mobile. Up to this point we were still building our web games in Flash, and Unity's web support was poor, so Cocos Creator was an easy call.

It worked out great. And because it used JavaScript for scripting, we no longer had to rebuild the whole app just to test a change on a device - a painfully slow process until then. That opened the door to one of the solutions I'm still proudest of: fast build delivery over local storage. Apple had just introduced the Files app, and I realized I could use iCloud Drive to sync files to a device that the app could then read. Cocos Creator let developers write their own scripts and tools, so I built the whole thing right into the editor. One click made a new build and pushed it to the dev device. Something that used to take over 15 minutes now took under one. All these years later, I'm still proud of that one.

First Layoff & Return

By early 2018, Lumos Labs had grown to around 150 people. There were some wasteful bets along the way like paying big bucks to IDEO to run our user base research. At the same time revenue had stayed mostly flat for a few years. Hard choices followed, and the whole Games Team got sacked. With no one left to look after games, I was laid off too. I said goodbye to my favorite place I'd ever worked.

Two years later, in the summer of 2020, I was laid off again, this time from Ubiquity6, as the company was mostly wound down and a small team was acquired by Discord. Shortly after, a friend still at Lumos Labs reached out: did I want to come back as a Unity dev, help move the games onto Unity, and maybe rebuild the games team? I said yes.

My first task was to assess where the games stood after two years without a team to maintain them. We had around 40 games; only 8 were in Unity, all in varying states of completion and built on Unity 5, which was quite old by then.

From Many To One

With the lay of the land clear, I put together a plan to bring every game up to the latest version of Unity on a single shared codebase. By then, Unity as a Library existed, so embedding Unity the way we'd wanted to back in 2017 was no longer a hassle. We brought on two contractor firms to help with the conversion. One was run by a former Lumos Labs employee in India, and we had a great relationship with them. The other - who I won't name - sold themselves as top-notch Unity specialists and talked us into switching our shared codebase over to theirs, built on the PureMVC framework. It wasn't good. Every single dev hated it. But our timelines were aggressive, so we had to run with it for a while.

ADHD Clinical Study

Right as that effort kicked off, Lumos Labs decided to run an ADHD FDA double-blind study. The plan was to make 18 games available for it, all in Unity. We didn't have time to pivot away from PureMVC, so it stayed. For now... After a year of hard work, we shipped the app and the study got underway. The study itself would take nearly two years to run and analyze. And... it was a success. But that might be a story for another time.

Rebuilding The Games Team

By the end of 2020, it was clear Lumosity customers were unhappy with the lack of updates and new games. Leadership decided to rebuild the Games Team, so I hired half a dozen talented engineers, stepped into a manager role, and we got to work.

Pillar

Our first job was to build an alternative to the PureMVC shared codebase. There were a few things we did like about it such as loose messaging, controllers, services, so we kept those ideas and built our own in-house framework around them. We called it Pillar. To make sure it turned out to be exactly what we wanted, we developed it alongside a couple of our new games: Cognition Kitchen and Ruled Out. Building the games and the framework together shaped both nicely.

Finding Our Stride

Between early 2021 and mid-2024, we released a handful of games, moved everything over to Pillar, and ported the entire catalog to Unity on both mobile and web. We built a stack of prototypes and slotted them into the pipeline. We parted ways with one of the two contractors and kept the team in India as the price was right and the relationship was good. Since we owned anything that touched the game engine, we also helped the web and mobile app teams build their apps. We also supported an MRI study, where people played our games with custom controls inside the machine so researchers could watch their brains at work. Researches made brain activity maps for each one of our games and results spoke for themselves.

The End

Around September 2024, our founding CEO returned. Lumos Labs had already been through a few smaller rounds of layoffs between 2020 and 2024, all driven by shrinking runway, a word the tech world absolutely hates. When the CEO came back, he pushed to hire more staff directly in India. A few months later came a second major round of layoffs, and my team, the small but mighty Games Team, was sacked again.

I'm not sure how many people can say they were laid off from the same place twice. I sure can.

Note

Updated in 2025

Created by Konstantin Yavichev. Copyright 2025.