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

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


3m read
·Nov 3, 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. We're High-Rise, and we built High-Rise, the app which is available on iOS and Android. 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 High-Rise 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 High-Rise architecture to create more exciting social-first game experiences and worlds.

For those that are not familiar, High-Rise is a social-first design MMO. Player 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 High-Rise and the High-Rise experience, compared to the multitude of games that you see in the app store, is our design philosophy that we call social-first.

So 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 meta-game loop and finally sprinkle in some social features, like lands, inboxes, marketplace, as almost an afterthought. Under the social-first philosophy, what we do is we start with the messenger, a news feed for a community, guilds, profiles, an economy, and a vibrant world, and then we add in the game.

In the case of High-Rise, 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 all mobile games today, which is the issue of long-term attention. A player joins High-Rise 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 a UI that feels 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 High-Rise.

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 50% app and 50% game. It is 50% Swift and Kotlin on the Android side, and 50% 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 JNA 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 meta-game of High-Rise with something else. So maybe, I'm thinking like a hero collector where you're walking around in a virtual world collecting monsters to do battle with, with the exact same avatar, world, messenger, guild system as High-Rise, or an adventure fishing game. But yo...

More Articles

View All
Capturing Climate Change Through the Lives of the Inuit | Exposure
The challenge with climate change is how do you photograph climate change? How do you illustrate that? So I decided to tell a story of climate change through a personal [Music] view. My work in Greenland is a chapter of my long-term body of work on clima…
Charlie Munger: How to Invest Small Amounts of Money
Guess what! I just came across a long lost clip of Charlie Munger explaining the three things he would do to generate 50% annual returns investing small amounts of money. This clip looks like it was shot on an iPhone 4, but it is Munger at his absolute be…
Why Four Cowboys Rode Wild Horses 3,000 Miles Across America (Part 2) | Nat Geo Live
April first, we began our journey that is at the border of Arizona and Mexico, and I promise you we did not plant that flag there. We just rolled up in real life; it’s kind of photogenic. We’ll take a picture next flag. So we started our journey, and we …
The Top 6 Reasons why I Invest in Real Estate!
What’s up, you guys? Scram here. So, this is a topic I get asked even more often than how to become a real estate agent, and it’s on the topic of investing in real estate. So, everyone always wants to know how to invest in real estate, what I look for wh…
Cold Storage - Thaw Project | Life Below Zero
It’s nice soft dirt. I gotta save a lot of sand in it, or some clay—not much. Well, the point of having a fish rack and the point of having a nice cold hole to store things is to preserve stuff. If you’ve got all this food and you’re trying to keep a surp…
Constructing linear and exponential functions from graph | Algebra II | Khan Academy
The graphs of the linear function ( f(x) = mx + b ) and the exponential function ( g(x) = a \cdot r^x ) where ( r > 0 ) pass through the points ((-1, 9)) and ((1, 1)). So this very clearly is the linear function; it is a line right over here, and this …