yego.me
💡 Stop wasting time. Read Youtube instead of watch. Download Chrome Extension

YC Tech Talks: MMOs in the Instagram Era: Highrise (S18)


3m read
·Nov 5, 2024

Processing might take a few minutes. Refresh later.

Um, hi everybody. I'm Jimmy. I'm the co-founder and CTO of Pocket Worlds, where Highrise is. We built Highrise, the app which is available on iOS and Android, and I think to date it has over 5 million downloads, and we're grossing over a million a month in revenue.

So today, I'm going to walk you guys through the process of designing and building an MMO game in this era of mobile apps and social networks. I'll talk about the architectural design decisions that we made that enable Highrise to feel simultaneously like an app and also a game, and why that's really important. I'll also talk about our vision as Pocket Worlds and how we plan to leverage the Highrise architecture to create more exciting social-first game experiences and worlds.

So for those that are not familiar, Highrise is a social-first design MMO. Players come in, they design an avatar, they build an apartment, they go into this fully user-generated world to visit other people's spaces and take part in challenges. The unique part of Highrise and the Highrise experience compared to the multitude of games that you see in the app store is our design philosophy that we call social first.

With traditional game design, you often have a game designer that would come up with a game, a mini-game concept, and then would build out a metagame loop and finally sprinkle in some social features like clans, inbox, marketplace, as almost an afterthought. Under the social-first philosophy, what we do is we start with the messenger, a news feed for community, guilds, profiles, an economy, and a vibrant world, and then we add in the game.

In the case of Highrise, that game is a straightforward fashion contest where you design outfits and compete with other players. The core part of why social first works is that it solves the critical piece that's missing in most mobile games today, which is the issue of long-term attention. A player joins Highrise for the design game, but they really ultimately stay for the friends they meet in our world.

But as you can see, kind of from the screenshots on the left, our heavy focus on social features really requires us to feel like an app, very much like Snapchat or Instagram. Otherwise, users will come in, play the game, make their friends, and then really move to those other platforms once they're done and kind of gotten everything they can out of the game. And that's precisely what we saw in the early days of Highrise.

So to achieve that user experience, we really realized that we must leverage the UI capabilities native to iOS and Android and could not rely on anything that game engines like Unity can offer. There's just really no way that Unity could compete with Apple's 40 years of experience perfecting fonts and UI animations.

So the architecture that we came up with actually mirrors our product's position of being percent app and fifty percent game. It is fifty percent Swift and Kotlin on the Android side and fifty percent C++. The Swift component handles all UI to create the silky smooth native feel, and the C++ component handles the game engine, the world, the avatars, business logic, and is shared as a sub-module between iOS and Android.

The components are seamlessly integrated via a system of bridges that are separated by feature, which creates a nice little microservices architecture that we can swap components in and out of. The bridging between the components is achieved using Objective-C++ on the iOS side and JNI on Android. The secondary objective here is, of course, to offload as much of the heavy lifting as possible into the core to help with cross-platform development, which we were able to achieve.

So I think what's more interesting is that this architecture really enables us to create different games and products that offer different experiences by swapping out the mini and the metagame of Highrise with something else. So maybe, I'm thinking like a hero collector where you're walking around in our virtual world collecting monsters to do battle with, with the exact same avatar world messenger guild system as Highrise, or an adventure...

More Articles

View All
Finding derivative with fundamental theorem of calculus | AP®︎ Calculus AB | Khan Academy
Let’s say that we have the function g of x, and it is equal to the definite integral from 19 to x of the cube root of t dt. What I’m curious about finding, or trying to figure out, is what is g prime of 27? What is that equal to? Pause this video and try …
Is This a PANDA?? --- IMG! #43
Happy birthday, hair’s on fire. And what is this dog worried about? Oh great. It’s episode 43 of IMG! Say “cheese.” Oh. Also on Tumblr this week I found this price sticker. Oh Pooh. Here’s an awesome plan I found on “dvice.” Not designs for a skyscraper,…
Developing strategies for multiplying decimals
So right over here, we want to compute what three times 0.25, or 3 times 25 hundredths, is. I encourage you to pause the video and see if you can figure this out. All right, now let’s work through this together. In this video, we’re going to explore mult…
Axe Ghost devlog - The bug that ruined the run
My name is Thomas K. I’m working on a game called Axe Ghost. It’s currently in development. There’s a demo on Steam, and my good friend Rishad Buser, he plays the beta version of Axe Ghost, and when he’s able, he streams his daily runs. Richard, by the wa…
Extraneous solutions of radical equations (example 2) | High School Math | Khan Academy
We’re asked which value for D we see D in this equation here makes x = -3 an extraneous solution for this radical equation. √(3x + 25) is equal to D + 2x, and I encourage you to pause the video and try to think about it on your own before we work through …
2015 AP Calculus AB/BC 3cd | AP Calculus AB solved exams | AP Calculus AB | Khan Academy
Bob is writing his bicycle along the same path for ( 0 \leq t \leq 10 ). Bob’s velocity is modeled by ( b(t) = t^3 - 6t^2 + 300 ) where ( t ) is measured in minutes and ( b(t) ) is measured in meters per minute. Find Bob’s acceleration at time ( t = 5 ). …