“It’s a small planet, but someone’s gotta make the deliveries.”
Messenger started because we wanted to build something that felt calm but also a little bit… weird. Having recently visited spots in Asia with a very specific vibe, a mix of total tranquility and a subtle sense of "oddness", we wanted to see if we could capture that in a game.
On the technical side, we also wanted to keep pushing our multiplayer environment tech, specifically in some areas we’d been researching lately. We figured a free, 15-minute experimental game was the perfect way to play around with these ideas.
The Early Days: tech and environment
From the start, we imagined the world as a tiny sphere where you could walk in any direction and eventually end up right back where you started, much like King Kai’s planet. Technically, that threw some pretty cool challenges our way:
- Dynamic camera: building a system that could handle the player being at any angle.
- Orientations: ensuring text and trees actually stood upright on a curved surface.
- Central gravity: a physics system that constantly pulls you toward the planet's core.
These hurdles were the perfect excuse to improve our world-building tools and see if we could actually tell a story on a sphere.
For the environment itself, we looked at videos of mid-sized Asian cities, the kind of places that aren't quite rural but aren't massive metropolises either. That scale feels just right for a "chill" game; it’s a mix of concrete and nature that really makes you want to explore.
During development, we also traveled to some of the places that inspired the game to gather references and make sure the spaces felt "real."
The “spherical” modeling problem
How do you model a round world without losing your mind? We tried two ways:
-
Procedural Deformation: taking normal assets and deforming them procedurally to conform to the shape of a planet. It worked, but placing objects and adding detail to every single corner of the map would have taken forever.
Tests of procedural deformation of assets -
The "Unwrapped Cube": modeling the whole world like a flat, unwrapped cube. Since it's technically a cube, it’s much easier to turn into a sphere with minimal distortion.
From flat, to cube, to planet.
We went with the second method because it let us tweak the world design much more efficiently.
The look
We wanted everything to feel a bit imperfect and hand-drawn, which hopefully would help convey that "calm but strange" vibe we were after. To get there, we explored a few different visual moods that leaned heavily on outlines.
We’d been tinkering with a custom system that let us draw these lines exactly how we wanted, messing with thickness, color, and transparency down to the pixel. Overall, we really liked how the outlines made the geometry pop and how it helped highlight all the details.
Building the world
Once we were confident about the style, we envisioned the tiny planet having about seven distinctive spots: the neighborhood, the plaza, the cemetery, the beach, the mountain temple, the forest, and the factory. The goal was to make it look rich without killing the performance; to make it feel vibrant even on an old phone.
We spent weeks modeling everything by hand:
The Little Things
- Color atlas: we used a tiny 16x16 pixel texture for every single color in the game. It made it incredibly easy to change the lighting or the mood of the whole world at once.
- Smart vegetation: we used simple "blobs" for the forests and then automatically swapped them out for optimized foliage and grass geometry that looks stylized thanks to a mix of geometry data and shaders.
- Dynamic Water: the ocean has ripples on the shore and deep-water gradients. We even added a small detail where your clothes change color when you get wet and slowly "dry off" once you’re back on land.
The characters
Our lead character was inspired by Dutch teenagers with part-time delivery jobs. Having a teen messenger wandering the world was the perfect excuse for the player to just… walk around.
Since it’s multiplayer, we wanted everyone to look unique, so we made clothes and hair randomized. The technical catch? Updating character models in real-time can usually make a game stutter. We built a system that "drips" these updates in so the game stays smooth, even when a bunch of players are changing their outfits at the same time.
For the NPCs, we wanted them to feel like "regular people" but still be memorable. They can chat through speech bubbles, walk around the environment, and even have their own 3D sound.
Keeping it accessible
We went with an over-the-shoulder camera (think God of War or Arc Raiders) to keep it immersive. This meant we had to get our collision system just right so the camera wouldn't get stuck inside walls in those narrow alleys.
We also wanted anyone to be able to play, regardless of their setup:
- Mobile: you can play with one finger.
- Desktop: everything is controllable with just the mouse.
- Smart Camera: the view follows you automatically, so you never have to fiddle with the controls to see where you're going.
Once we were finished, the best part was watching our non-gamer relatives pick it up and play without us having to say a single word of instruction.
Story and missions
Funny enough, the actual story was the very last piece of the puzzle. For a while, we were tossing around all sorts of wild ideas, everything from sci-fi mysteries to hard-boiled crime plots, but none of it really clicked with the world we’d built.
In the end, we went with the simplest thing possible: just delivering messages. There’s no world-ending threat or "chosen one" destiny; you’re just a messenger making deliveries without any massive, transcendental purpose. This lack of pressure was what the project needed; it turns the game into a "no-stress" zone where you can just soak in the atmosphere.
We also made a conscious choice to cut way back on the hand-holding. There are no giant arrows pointing where to go and no intrusive tutorials. We wanted players to discover the what and the how at their own pace.
Multiplayer
We added a social layer so you can see other players, but we found that if more than 10 people were in the same spot, it felt too crowded and broke the sense of "calm." To protect that quiet, exploratory feeling, we capped the "virtual rooms" at 10 players per instance. It’s just enough to make the world feel alive without feeling cluttered.
The coolest part of the multiplayer is how people ended up helping each other. Since the game doesn't hold your hand, it’s easy to get a little lost looking for a specific delivery spot. We saw players naturally stepping in to act as guides, using their movement to show someone the way to the hidden temple or a hard-to-find NPC.
To keep things friendly and stress-free, we ditched traditional text chat entirely. Instead, we built a 3D emoji system. It’s an intuitive, universal language that lets players say "Follow me!" or "Thanks!" without us ever having to worry about chat moderation or toxic behavior.
Performance
We built the UI directly in WebGL so we could animate every detail without any restrictions. For the text, we skipped the usual MSDF font methods and used WebAssembly to generate the glyphs, letting the GPU render them directly. It makes the typography look incredibly sharp, even at weird angles..
To keep the frame rate high, we created a custom LOD (Level of Detail) system. It swaps out high-detail objects for simpler ones as you move away, but it does so while preserving the overall visual shape of objects, so the "popping" effect often seen in games is minimized.
Another huge part was memory management. Safari on iPhone is super picky with its limits, and if you use too much memory, the browser just kills the page without warning.
To avoid that, we track every asset and clear it from memory the second it's not needed. We also use custom tools to split and compress our models and textures, so we can keep the high-end details without worrying about the game having issues on mobile.
Music and sound
We wanted the sound to double down on that "calm/strange" duality. We spent weeks collecting references of instruments that made us feel that specific way. The main track was composed right alongside the game, so the music and visuals really grew up together.
Sound Details
Every area has its own "soundscape", for example:
- The City: distant neighbors and market noise.
- The Beach: waves hitting the sand.
- The Factory: the hum of heavy machinery.
We even have an NPC playing a guitar; as you walk toward him, the sound gets louder and moves in 3D space, helping you find him naturally through your ears.
Publishing it
Messenger turned out to be one of our most viral projects. We’ve had millions of impressions on social media and thousands of people playing every day, even months after launch. It even has its own Wikipedia page now, which is pretty cool for a small internal project.
The stack
We love tools that let us build our own systems. Having that level of control means our creative ideas don't get stuck behind technical walls.
- 3D: Houdini & Blender.
- UI: Figma & Photoshop.
- Code: Three.js, three-mesh-bvh, vanilla Javascript, and C++.
Abeto
We craft interactive experiences for the web.