6 Million Plays in 30 Days — Vortelli’s Pizza Delivery Devortel · Follow Published in
Poki · 11 min read💰 · Nov 8, 2024 -- Listen Share
The Downtown region in Vortelli’s
Pizza Delivery
Intro
Vortelli’s Pizza Delivery is a 3D open-world driving💰 game that you
can play in your browser. It launched on Poki on September 20, 2024, and so far has
💰 been played over 8 million times, 6 million of which were in the first 30 days. Players
from 227 countries💰 and territories have collectively spent around 1.2 million hours
in-game. During development, I had no idea the game would reach💰 so many people. Its
performance has exceeded our wildest expectations and it has made us very optimistic
about the future💰 of web games.
Gameplay stats for the first 30 days
Background
I’ve
been developing 3D web games for a little over two years💰 now. My first game, Vortelli’s
Pizza, was released on Poki in mid-2024. Its launch was a crazy story which you💰 can
read here. Since then, it has been played over 40 million times. Following its success,
I’ve been joined part-time💰 by my partner, Kelsey. She is a talented UX designer and 3D
artist, and together we’ve been supporting Vortelli’s Pizza💰 with content and UI
updates.
When reading feedback left by the Vortelli’s Pizza players, we noticed many of
them wanted to💰 explore the city beyond the limits of the pizza restaurant. When I was a
kid, I loved playing open world💰 driving games like Grand Theft Auto and I remember how
exciting it was to explore the seemingly endless game world.💰 We thought it would be an
interesting challenge to see if we could bring a similar game to the web💰 browser for
the Vortelli’s Pizza fans.
Building the Game World
The foundation for this entire
project is the PlayCanvas Vehicle Physics demo💰 project. If you’re thinking about
building a driving game in PlayCanvas, this is the perfect place to start. It’s a💰 very
simple project, but it has excellent performance and it’ll run on nearly any device and
browser.
Gameplay screenshot of PlayCanvas’💰 vehicle physics demo project
The first step
was to replace the default terrain with something that resembled a city. I quickly
💰 threw together a little road network, consisting of a few blocks with some low-poly
buildings. Here’s my early proof of💰 concept — but something about it just didn’t feel
right.
Gameplay screenshot of an early proof of concept
Eventually, I realized the💰 map
scale was wrong. When working with a 3D world, it’s critically important to scale all
the game objects correctly💰 in relation to each other, or it can disrupt the player’s
immersion. Because we were designing a game that needed💰 to feel like a real-world
place, we had to make the 3D model proportions resemble their real-world counterparts
as closely💰 as possible.
To get accurate data to build from, I used Google Maps’ measure
distance tool. Inspired by GTA: Vice City,💰 I looked up satellite pictures of Miami,
Florida, and started measuring sidewalks, parking lots, road lanes, and
intersections.
Google Maps’ Measure💰 distance tool in action
Even though we weren’t
setting out to create a perfect, one-to-one scale replica of Miami, these measurements
💰 gave us real-world benchmarks that we could use to make sure our game felt
authentic.
With these new dimensions to guide💰 our scale, the game started to feel more
realistic. With that in place, I worked on expanding the road network💰 and adding more
neighborhoods for players to explore.
A hand-drawn sketch of an early design of the
city layout
The map was💰 starting to take shape, but the driving gameplay still didn’t
feel right — it just felt boring. At first I💰 wasn’t sure why, but after studying the
maps from Grand Theft Auto, I noticed their map was designed to have💰 mostly curved
roads. Check out the map of GTA: Vice City:
Map of GTA:Vice City
The road network is a
spaghetti-like formation💰 of windy roads; there’s hardly any grid-like sections. I spent
hours and hours driving around that city and never noticed💰 it, but as a game dev I now
appreciate how much thought must have been put into the design. A💰 road network like
this requires constant steering and navigational input from the player, which makes for
a more engaging experience💰 than the basic grid system we started with.
From a 3D
modeling standpoint, straight roads require minimal effort to slap together💰 — it’s
literally a single plane. Curved roads, on the other hand, require a lot more work.
Since we wanted💰 a big city map to explore with a lot of road networks, this was a
process I wanted to optimize💰 as much as possible. After trawling through half of
YouTube looking for a solution, I learned about using Bevel Objects💰 along curves in
Blender. This allowed us to simply draw a line and Blender would automatically create a
road with💰 our predefined geometry — way easier than extruding each curve
manually.
Performance Optimization
One of the most important things (maybe the most
💰 important thing) when developing web games is to keep the initial download size as
small as possible. Players want to💰 get into the game immediately and they aren’t going
to wait 30+ seconds for the game to finish downloading. This💰 is especially important
when you consider many players have slow or unstable internet connections. (For
example, Venezuela has an average💰 download speed of 3.9Mbps. That player isn’t going to
wait for a 50MB game to load.) We watched a recent💰 talk by Kasper Mol from Poki and he
mentioned that if your game is under 5MB, you’re doing an amazing💰 job, so we set
ourselves a hard upper limit of 5MB.
We learned early on that a map of this size💰 would
mean a hefty initial download. Most modern devices would be fine, but low-end
smartphones would struggle. Our solution was💰 to split the map up into chunks — islands
that are connected to neighboring islands via bridges.
A map showing each💰 of the map
chunks as individual islands
I set up Trigger Volumes that the player’s car passes
through as they’re crossing💰 bridges. When entering a trigger volume, the map chunk
ahead of the player is loaded and the previous one is💰 unloaded. On some devices, this
will drop a couple of frames, but it doesn’t significantly impact gameplay.
A new map
chunk💰 loading ahead of the player
Splitting the map into chunks also allows us to
separate the 3D model files into different💰 downloadable asset files in PlayCanvas. We
can then limit the initial download to only include assets needed for the starting
💰 region. The files needed for all the other regions aren’t downloaded until the player
unlocks them. This keeps the initial💰 download as small as possible, and speeds up
loading time. In the end, we managed to get the initial download💰 size to just 58
requests at 2.14MB, coming in far below our goal of 5MB.
A screenshot of Chrome Dev
Tools💰 showing the game’s download size
If you’re looking for a quick way to reduce the
size of your model files, Draco💰 Mesh compression allowed us to shrink our download size
by nearly 70%. It’s supported by PlayCanvas out of the box💰 and you can install it with
one click, making it ridiculously easy to shrink the overall project size.
Gameplay
Design
My initial💰 idea was to copy the game loop from GTA: Vice City’s pizza delivery
mini game. It’s a very simple 10-stage💰 minigame where players deliver pizzas to
customers within the time limit. Stage one starts with one customer and the game💰 adds
one additional customer after each stage. It’s a simple and fun game, but I couldn’t
help but feel that💰 it lacked replayability.
I wanted to create a game that put more
control into the player’s hands. Oddly enough, my inspiration💰 came from the Truck
Simulator games. Say what you will about the Truck Simulators, they’ve sold tens of
millions of💰 copies, their games are adored by their fanbase, and their simple game loop
is extremely versatile and battle-tested. Players can💰 drive around and explore the
world on their own. At any given time, they can choose a job from a💰 list that they feel
like doing, giving an element of autonomy and control. Adding a similar game loop to
our💰 game was very simple: we generate a list of jobs, display them in a table, and let
the user pick💰 one. After deciding on this direction, our game really started to feel
like an open-world driving game that gives the💰 players much more freedom.
A screenshot
of the job selection page
During the development process we were frequently sending
builds to the💰 Poki team to play. They gave a lot of suggestions, almost all of which
were added to the game. One💰 of the best suggestions was to have the game award coins
for driving skills — players can earn coins by💰 driving fast, completing jumps, using
boosts, and drifting (in addition to delivering pizzas, of course). As soon as I added
💰 this feature, I immediately felt like the driving experience was more fun and
rewarding. The goal wasn’t just reaching the💰 customer; it was the jumps, boosts, and
drifts along the way.
Score is awarded for completing jumps
Player
Onboarding
Personally, when learning new💰 games, I’m very impatient and I’ll find myself
skimming the text in tutorials — sometimes not even reading the text💰 at all. I prefer
it when games show me how to play as I’m playing it without making me read💰 what feels
like an instruction booklet. Web game players often only have a few spare minutes
during a school or💰 work day, so they don’t want to be forced to study a complex
tutorial as soon as they pick up💰 a new game.
Arrows showing the tutorial path for the
players’ first job
With these limitations in mind, I came up with💰 a series of simple
steps that walk players through their first three delivery jobs while guiding them
through the process💰 of leveling up skills and unlocking new cars and map regions. It
has been mostly successful in getting players up💰 to speed without putting too many
constraints on their gameplay. There’s still a number of players who just want to💰 drive
around on their own terms and never end up completing the tutorial.
Launch
On September
20, 2024, Vortelli’s Pizza Delivery was💰 released on Poki. For the first few days, I was
glued to the Poki Dashboard eagerly watching the stats and💰 awaiting the latest player
feedback. The numbers were very encouraging. Conversion to play, session times, and
monetization all exceeded our💰 expectations! Every time we checked the dashboard there
were more and more people playing.
Peak player count recorded
Just 10 days into💰 launch,
the game had already crossed 2 million gameplays and by day 30, it had crossed 6
million.
Poki Dashboard stats💰 for the first 30 days
Pain Points
Despite the strong
early numbers, players were encountering problems. Many players were struggling with
the💰 time limits placed on jobs. For some, the game wasn’t giving them enough time to
complete jobs, causing them to💰 fail the job over and over. For other players, they felt
the game gave them too much time and it💰 wasn’t challenging enough. To cater to both,
we’ve since added a mix of both timed and untimed deliveries to the💰 jobs list. The
timed jobs pay better, but the untimed ones are less stressful. This solution lets
players choose their💰 own playstyle, giving them more freedom.
Another issue reported by
many players was how difficult it was to navigate the map.💰 All the effort we put into
those lovely curved and complex roads actually disoriented and confused many players.
We had💰 hoped the HUD minimap would provide enough directional information for players
to find their way, however, a large chunk of💰 our audience was unfamiliar with how
GTA-style minimaps work. We’ve since added an arrow that pops up in front of💰 the
player’s car which points at the position of the closest delivery.
The arrow directing
players to their closest delivery
The most💰 complex issue we faced took weeks to solve.
For a small percentage of players, the game didn’t load correctly. They💰 would see the
game HUD against a blue background with no map, vehicles, or buildings. I’ve done a
much more💰 extensive writeup on the PlayCanvas forums if you’re interested in reading
more about this. Here is a screenshot of what💰 the game looked like to players
experiencing this issue:
The Poki and PlayCanvas teams were very supportive and we
slowly worked💰 through some potential solutions. Eventually another Poki game developer,
Cem Demir from OnRush Studio, suggested I disable real-time shadows, and💰 this appears
to have finally fixed it. Frustratingly, despite extensive testing, I was never able to
recreate this bug locally💰 and never identified the root cause. In a future update,
we’re going to re-add real-time shadows as an optional graphics💰 setting.
Despite these
pain points, most of the players really enjoy the game and we’ve received lots of
encouraging feedback.
The Future
After💰 an extremely promising and exciting launch, we
feel that Vortelli’s Pizza Delivery has a bright future ahead of it. In💰 the near term,
we’re working on fixing bugs and adding more content. We only have a small number of
cars💰 right now and many players have already reached the end-game and are looking for
more. Eventually, we’d also like to💰 add a car customization paintshop. Players work
really hard to unlock new cars, so we want to give them the💰 freedom to modify them to
their liking.
The garage page where players can manage their vehicles
Looking towards
the longer term, we💰 want to add more businesses to the Vortelli’s world. The pizza
restaurant and the delivery games are just the beginning.💰 A lot of players love that
the Vortelli’s Pizza restaurant is an actual building you can visit while you’re
driving💰 around the city. We want to keep going with this trend and maintain the
continuity. As we release more Vortelli’s💰 businesses, they’ll be added to the map. We
also want to make it easier for players to move between Vortelli’s💰 games. Our dream is
to have an entire game world of different businesses, attractions, and experiences for
players to enjoy.
The💰 exterior of the Vortelli’s Pizza restaurant is a place you can
visit in game
If you’re a fan of Vortelli’s or💰 you’re interested in our work, please
feel free to reach out. You can find me on Twitter: //twitter/devortel You can
💰 also find us on the Vortelli’s Pizza Discord: //discord.gg/tbZ3jtuQHx