This week is launch week for Default Alive, my startup tycoon game. Or, if you were around in the 90s with a graphing calculator, “drug wars for silicon valley”.
I have an affinity for isometric pixel art - partly due to my childhood love of Command & Conquer and Sim City - but also because it tickles some part of my brain.
When I was working on Agave, we decided on the isometric style for our virtual office product, and I learned a fair bit about how it works (pre-AI, during that covid lockdown era). I found it elegant and cleverly simple to store avatar coordinates in cartesian and convert them to isometric just for rendering.
It also turns out to be a really easy way to make a simple game look pretty good. I feel like you get a bunch of polish for free if you just go with voxels.
Anyway, I started Default Alive on iOS and ported it to Android, using mostly the same Swift code as the foundation. After that was ready and awaiting beta testers, I looked up and saw the old meta quest on my shelf. Hmmmm.
In the past I had thought to myself “the quest store seems underutilized”, in particular as a channel for building simple games and apps. It’s not as big as other game stores or app stores, but it’s still got millions of users with a credit card eager to buy, and still feels relatively greenfield. Until now my best idea was some kind of a space station simulator or those landscape apps that let VR users just sorta float through beautiful places. I still might pursue those.
But I decided to tell claude, literally, “translate this android game into a meta quest game”. I plugged in the headset and opus 5.5 went to work.
Of course it worked. I didn’t even realize it, but the quest totally supports side APKs. I didn’t even know it was basically android. But of course, the flat panel floating in the air was literally what I said I wanted, and claude delivered.
So then - what would it take to make this 3d? What does that even mean?
Turns out, if you use isometric pixel art, you basically get 3d rendering for free. It’s literally a 3d scene rendered in 2.5 dimensions. Claude pointed this out and all I had to say was “go”. 2 hours later I put the headset on and the game came to life.
Sure, I had to tweak the play, the interface, and I continue to do so. But it really did just work.
(And in case my readers care - I’m not reading the code. It’s more like I’m GM’ing the app. Is it slow? Buggy? wrong? “Fix it, find the root cause, ask the three to five whys, and fix those. Let’s discuss your findings.” I still encounter so, so, so many people who are stuck in the “but, but the code!” mindset and I no longer empathize like I did 6 months ago. It’s time to adapt.)
I had a friend ask me “what stack does it use?” and I…I didn’t totally know. So I made this page that shows it off. Some cool things about it:
- There is a Swift module that contains the simulation. It’s 15k lines.
- The game mechanics are also a 15k swift module.
- The iOS, Android, and Meta Quest specific pieces are all native to each platform, but because swift is well supported on all of them, they all reuse the same foundational simulation and game files. So it’s SwiftUI and SpriteKit on iOS, Jetpack Compose on Android, and the Meta Spatial SDK on Meta Quest.
Default Alive is a startup tycoon game. It’s free on iPhone, with no ads and no account. You get a garage and $120k of savings, pick a market and a price, and try to raise a seed before the cash is gone. After the seed, the company keeps going in real time, three months for every real day, app open or not.
There’s a daily garage too. Everybody plays the same market that day and gets one try, which makes it a fair fight, so if you play it, send me your card (just reply to this email).
On Android, Google wants 12 people testing for 14 days before the game can go public. If you’ve got an Android phone, here’s how to join. The Quest version isn’t out yet. I’ll write about it here when it is.