Personal notes, development updates,
project discoveries and occasional
ramblings.
Plants vs. Zombies... but 99?
For our latest game jam, we were given a simple challenge: take an existing
released game and imagine how it could work as a Nintendo-style
99-player game. Being a fan of Tetris 99, our group eventually
landed on an idea that sounded ridiculous enough to be worth trying:
Plants vs. Zombies 99.
The idea was to keep the basic Plants vs. Zombies formula intact. You collect
Sun, place plants, defend your lawn and survive waves of zombies. The twist
comes from the other gardens playing underneath you. Whenever you defeat a
zombie, additional pressure can be sent towards another opponent, while their
victories can result in more zombies being sent back to you. Essentially, we
wanted to see what would happen if the familiar PvZ formula was turned into
the chaotic last-player-standing structure of Tetris 99.
With only one week to build the prototype, creating an actual
99-player online game was obviously far beyond the scope of the jam. Instead,
I created 20 AI-controlled gardens to simulate the idea.
These opponents could generate resources, place plants, fight zombies and
participate in the zombie-sending system, with their games displayed around
the player's lawn using live mini-screens.
The AI was probably one of the most entertaining parts of development because
it was far from perfect. Sometimes an opponent would put together a surprisingly
reasonable defence. Sometimes several AI gardens would seemingly discover the
exact same strategy. Other times an AI appeared to simply give up on the concept
of playing Plants vs. Zombies altogether. With another few weeks I would have
loved to develop their decision-making further, but with only a week available,
getting the idea functioning was more important than getting every opponent
playing intelligently.
The prototype was developed in Unreal Engine 5.6. Most of the
gameplay was built using Blueprints, with systems for plant placement, Sun
generation, zombie combat, waves, lawnmowers, AI gardens, elimination and the
PvZ 99 zombie-routing mechanic all having to work together. I also used Scene
Capture components and Render Targets to display the opponent gardens around
the main game.
One thing I realised during our final presentation was just how much we had
actually tried to fit into this prototype. We started explaining the systems,
the AI, the opponent gardens, the zombie queues, the Battle Manager and all of
the technical decisions behind them... and I noted in my development diary that
we may have gone slightly too far into the details. By the time we finally
reached the playable prototype, I am fairly certain a portion of the audience
was beginning to fall asleep!
It was a useful lesson in presentation as much as development. A complicated
system can be interesting to build, but that does not mean every part of it
needs to be explained before showing the result. If I presented the project
again, I would show the game much earlier and use the prototype itself to
introduce the technical systems afterwards.
I also noticed a weakness in my development workflow this time around.
GitHub was still used for source control and I committed
throughout development, but I did not make as much use of GitHub Issues as I
should have. Towards the end of the project I went back and documented more of
the individual systems, but keeping Issues updated alongside development would
have created a much clearer record of features, bugs and decisions as they
happened. That is something I want to improve in future jams.
There were also several ideas that did not survive the one-week deadline.
We experimented with clearer visual feedback to show which opponent received a
zombie, a manual Send Zombie interface, more advanced opponent targeting,
additional zombie types and a central display for highlighting the strongest
opponent. Some were unfinished, while others were deliberately disconnected
because they introduced bugs or performance problems. Cutting them was
ultimately the better decision than risking the working prototype.
Despite its rough edges, I am genuinely happy with how much of the concept we
managed to demonstrate. The AI could certainly be smarter, some interactions
still need polish, and a real multiplayer implementation would be an entirely
different technical challenge, but the prototype answered the question I was
most interested in:
could Plants vs. Zombies actually work as a
"99" game?
I think there is something surprisingly fun in the idea. Plants vs. Zombies
already revolves around managing pressure and building a defence, so having
other players indirectly increase that pressure feels quite natural. If an
official game in the franchise ever attempted something similar, it would need
far better balancing, smarter targeting systems, more zombie variety and much
clearer feedback about who is attacking whom. But as a game-jam experiment,
I think our prototype was enough to show why the idea could be interesting.
More than anything, I really enjoyed making this one. It was chaotic, occasionally
frustrating and definitely over-ambitious for a single week, but those are also
the projects that tend to teach me the most. Going from a silly
"what if Plants vs. Zombies was Tetris 99?" conversation to seeing twenty little
gardens fighting away underneath the main game was incredibly satisfying.
The prototype is available on Itch.io for anyone who wants to
try it and see how long they can keep their garden alive.
Play Plants vs. Zombies 99
Playable projects and archived builds.
ACCESS GAME DATABASEProfessional profile and experience.
ACCESS PERSONNEL RECORDProfessional profile and experience.
ACCESS PERSONNEL RECORDProfessional profile and experience.
ACCESS PERSONNEL RECORDBehind the scenes, development updates and creative projects.
ACCESS VISUAL ARCHIVEProfessional profile and experience.
ACCESS PERSONNEL RECORD