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