I Made my First Solo-Developed Video Game

I Made my First Solo-Developed Video Game

Published
November 9, 2025
Author
Tags
Game Dev
I started this project as a stepping stone to learn what it takes to make a video game. From ideation to execution I want to learn what it takes and show to the world that can do it. In this post I will break down how I made “Plants vs Bubbles” and share some lessons I learned along the way. I won’t go in-depth about everything but I hope this gives some insights on the huge amount of effort it takes to make a video game. Even for a “simple” one.

1. Keep it Simple 🙂

As I’m just learning how to use the Unity game engine, I aimed to have the gameplay for this game be as simple to create as possible. I was playing a game of Bloons TD 6 with some friends which is a simple game about buying monkeys that throw darts at Bloons (”balloons”) that follow a path. If too many Bloons make it to the end of the path, the player loses the game. This is a sub-genre of video games called “Tower Defense”.
Whenever I played this game with my friends, this thought kept creeping into my head “this game is so simple. I could make this game”.
I don’t think it would be fun to just make a 1 to 1 recreation of Bloons TD 6 and I have an gripe with the game too. It’s too mindless. I wish I felt more urgency rather than sitting back and watching the monkeys do everything for me.

Bloons meets Plants vs Zombies

To make the player feel more engaged, I aimed to add two mechanics that Plants vs Zombies have in their game.
  1. Towers can be destroyed in some way. Just like how Plants can be eaten by the Zombies.
  1. The player should have control over the economy. Sunflowers can generate “sun” over a period of time.
By adding these systems, I want to add a layers of decision making for where the players spend their time. Whether it be buying Towers, upgrading Towers, defending Towers, or getting “money”, I didn’t want the player to sit back and relax.
Though in retrospect, I think I actually made the game a bit too stressful and too challenging for some people. I will talk about that a bit more later.

2. Plan Before Development 📃

Notion

Now that I had the idea for the game, it was time to start preparing the to-do list. I used Notion and made a straightforward Scrum board to keep track of all the tasks.
notion image

Source Control

I used GitHub as my source control and it definitely was extremely helpful for this blog. I was able to go back in time to older versions and take screenshots/videos of what it looked like years ago. Makes me proud to see this chart too of all the days I spent on this game.
notion image
notion image
After filling out the to-do list, I created this concept art to show what I wanted the game to look like once it’s complete.
notion image
notion image

3. Game Design 👾

Let me tell you a bit about “The Door Problem” from Liz England. She is a systems designer in the game industry and in her blog post, she describes how game designers have to make many decisions, even for something seemingly simple as adding a door to a game. This resonated with me a lot as I started development for the Plants and Bubbles.

Turret Design

Plants, monkeys, whatever you call them they are just turrets in the end. As game designer/developers, we need to give the turret so many systems.
  1. Which turret to purchase?
  1. How to cancel a purchase?
  1. Where to place the turret?
  1. Where can the turret be placed and where can it not be placed?
  1. What kind of projectiles does it shoot?
  1. Does it even shoot any projectiles?
  1. What do the projectiles sound like?
  1. What upgrades are available?
  1. How do we spawn a lot of projectiles without causing performance issues?
  1. How does the turret determine where to aim at?
As I’m a developer, designing these systems excited me but I also found that this blinded me from the reality of how much work the rest of this game would be.
notion image
notion image

Enemy Design

Alright, now do the same game design exercise we did for the turrets but for the enemies.. great 🫠
  1. What types of enemies will we have?
  1. How much health do they have?
  1. How many of them will spawn every round?
  1. Where will they spawn?
  1. How fast are the enemies?
  1. Which turrets can hit which enemies?
  1. How much damage do the enemies do?
  1. How can I balance the enemy to be fun to fight against?
I spoke about how I want the player to feel urgency for the plants they bought and feel like they want to protect their plants they worked so hard to grow. I played around with different systems for how to get the plants out of the “bubbled” state. The plants could even be destroyed forever! I decided that it was too punishing to the player to have them destroyed and wanted to give them a chance to free them.
Oh no! Please save them!
Oh no! Please save them!

Visual Design

Since I had practice making pixel art I thought creating the artwork would be easy. Sadly part of the problem with a “simple” turret is that I had to decide how they look in 8 cardinal directions in order to give them a smooth rotation. I also needed to create an idle and shooting animation for each direction AND a profile photo to display in the upgrade screen. This was not as fun as I thought it would be and where I felt scope creep kick in. Scope creep is when game designers have so many features they would like to add to their game but it eventually becomes an impossible task to do. At this point I knew that I needed to reduce the number of plants I would add to the game in order to calm my sanity.
I definitely was one of the people who thought making pixel art would be easy. It is, but making good pixel art definitely takes a lot of thought and time.
notion image
notion image
So many sprites! 😵
So many sprites! 😵

Level Design

Sidenote, I didn’t want the game to be themed so closely to Plants vs Zombies and Bloons for obvious reason.. (please don’t sue me Electronic Arts or NinjaKiwi 🙈). For a long time it was going to be “Penguins vs Bubbles” as a cheeky nod to my initial idea “Plants vs Bloons”. I ultimately changed it to hopefully avoid any legal disputes.
Penguin Turret = Penguin with a Gun
Penguin Turret = Penguin with a Gun
Learning to work with tilemaps is a whole other world. I needed to iterate on them a lot as they don’t look pleasing if they aren’t flush when they are placed next to each other. Thank goodness my software Aseprite has a very useful tilemap/tileset creation system.
I used Aseprite to make concept levels before adding them into Unity.
I used Aseprite to make concept levels before adding them into Unity.
For a while, I didn’t have it so enemies can come from multiple spawn locations. I’m glad I updated this logic and had the spawner randomly choose where to spawn the next bubble. This made it so I could have more interesting designs for the levels.
I often feel like I have split personalities when game developing. A part of me says “let’s add this feature, it’ll be so much fun”, then another groans and asks all the questions on what this “feature” will require and how much effort will it take. Sounds familiar to what I do at my job too… I may be a workaholic.
Notice that the path for these “Deadlands” levels are more destroyed and not just a copy paste of the “Grasslands” levels.
Notice that the path for these “Deadlands” levels are more destroyed and not just a copy paste of the “Grasslands” levels.

Progression

What if this game was a roguelike where your plants are retained each level and you choose between three upgrades that improve your plants in some way. Your plants then stay until they all get destroyed. What if bubbles could spawn infinitely and your goal is just to survive!
There are so many “what ifs” I had when deciding the progression because it changes the game so much.
  1. How would plants get unlocked?
  1. What types of upgrades can show up?
  1. How do we decide what enemies show up when?
  1. Are there any permanent upgrades?
  1. How do we move the plants we purchased from one level to another?

Linear Levels

After mulling over how I want the progression of the game to be, I ultimately ended up making it a typical linear level clear game where the objective is to clear each self contained level before moving onto the next. As I spent a lot of time already on the development and art, I didn’t want to spend another year (or longer!) to make this a roguelike.
This was my first draft of the level select screen and I was so close to making this the final copy but it’s just not good.. The point of any game is to make the player FEEL emotion and this just seems too simple.
notion image
I changed the level select to be and actual world map! I loosely based how it works on the one you find in Super Mario World on the SNES and I’m so glad I got it working. I think it makes you feel way more immersed into this world.
notion image
notion image

Game Balance

Now that we have the level select system, what will the levels be? How many levels will this game have?
I based this decision on how the player will play this game. Since this game is a browser based game, I don’t want the player to spend 40+ hours on this game. I also want the game to gradually ease the player into the mechanics and not dump everything at the player all at once. This is also where I learned that I made too many complicated mechanics and I have no way of teaching the player about them.
I have the code for Camo bubbles implemented but I scrapped them because it was too hard to teach the player that only certain upgrades give plants Camo detection.
I have the code for Camo bubbles implemented but I scrapped them because it was too hard to teach the player that only certain upgrades give plants Camo detection.
Even had this little guy ready called “Plantern” which would give all plants around it Camo detection.
Even had this little guy ready called “Plantern” which would give all plants around it Camo detection.
 
In order to help with game balance, I got the statistics on each round for the Bubble spawner system by putting the data into a SQLite database. This allows me to see how long each round will take so I don’t have to playtest the levels myself and manually record how long it takes. This also helps me figure out if there’s a round that is too difficult so I can make adjustments.
This graph shows the first level and how long each round will take. It should take around 4 minutes to complete all 15 rounds.
This graph shows the first level and how long each round will take. It should take around 4 minutes to complete all 15 rounds.
This graph shows the difficulty for each round. You’ll notice there are difficulty spikes as I don’t want the player to feel constant pressure. It’s nice to give the player a break once in a while.
This graph shows the difficulty for each round. You’ll notice there are difficulty spikes as I don’t want the player to feel constant pressure. It’s nice to give the player a break once in a while.

Intuitive Tutorial

I appreciate when video games give a very minimal tutorial. Instead of spelling out each mechanic to the player like a prompt that says “press A to jump”. Games that let the player explore and discover how to play themselves give a way more immersive feel. Nintendo does a great job of this and I want to carry over this design to my games.
 
Example #1:
Even if you’ve never played Super Mario Bros (NES) before, just watching this GIF makes you understand how to play.
Even if you’ve never played Super Mario Bros (NES) before, just watching this GIF makes you understand how to play.
Example #2:
The animation on the Sunflower pulls your eyes towards the graphic, making it appear important.
The animation on the Sunflower pulls your eyes towards the graphic, making it appear important.
After clicking on it, it seems to follow your mouse. Making areas brighter also points you in the right direction for where the sunflower can be placed.
After clicking on it, it seems to follow your mouse. Making areas brighter also points you in the right direction for where the sunflower can be placed.
As I was showing my friends the game, I loved when they would get that “Aha!” moment when something finally clicked for them like discovering that cherry bombs are a one-time use plant or that plants that are in the “bubbled” state can be clicked on to be freed.
I did get feedback that some things weren’t clear like how players didn’t know plants could be upgraded but I was aware of that and felt very burnt out on this project so I opted not to fix it. For my next game I’ll definitely write cleaner code so it’ll be easier to create a tutorial that walks through each mechanic even better.
Please take this as a warning: if you aim to create your own game, for each new mechanic you add, before implementing it ask yourself, “How will I introduce this to the player?”

Music and Sound Effects

I used a secondary monitor to show a screenshot of the game. This way I could try my best to match how I would like the music to sound for that section.
I used a secondary monitor to show a screenshot of the game. This way I could try my best to match how I would like the music to sound for that section.
My experience with music is very limited. I learned how to play guitar in high school and I taught myself to play a couple of songs on the piano. To make my own music for this game I had a couple of objectives.
Notion page I used to keep track of useful links
Notion page I used to keep track of useful links

Learning to use a Digital Audio Workstation (DAW)

I chose to use MPC Beats as it’s a free software that is easily integrated to the midi keyboard I purchased but what I’ve heard is that any DAW has their pros and cons so I wouldn’t recommend MPC Beats for everyone. It’s now just the one I’m most comfortable with. There were a lot of challenges I faced with this software like assigning a note to the pads can be a pain but I eventually got grips on the basics.

Learning to Compose Music

As a truly beginner composer, I took a couple courses on SkillShare and Youtube that showed the basics on how to play the piano and how to compose my own music.
  1. Learn Piano! Play Songs, Chords, Scales and Learn About Music Theory, 20000+ Piano Students! | Marks Piano | Skillshare
  1. Music Composition with the Piano | Jack Vaughan | Skillshare
  1. How I'd Learn Music Theory (If I Had To Start Over)
Next I was having a bit of fun and wanted to gather some video game music that would give me some inspiration. I love the original Spyro the Dragon (PS1) soundtrack composed by Stewart Copeland. I linked a video of him below and it’s my dream to have the same enthusiasm towards music as he does.
I can’t have a game about Plants vs Zombies without mentioning Laura Shigihara. The soundtrack for the game is so unique and perfectly matches the game’s charming yet spooky vibes.
For my game, I went on a quest to find the instruments that would fit the look and feel for it. Since my game was pixel art based on the SNES and Gameboy era of video games, I did a lot of research and I stumbled upon this video where I learned about VSTs and soundfonts. This is when I decided I would use the Pokemon Ruby/Sapphire soundfont.
SAMPLING in Video Game Music
A deep-ish dive into how sampling in video game music worked, my most ambitious & researched project yet! Delving into the methods that game composers used to make sound, how they sourced their samples, and how they were implemented from the NES, SNES, etc onwards. This video took many months to create, so I hope you enjoy! Fun fact, I don't actually own any MIDI Modules. Everything I demo'd was either a VST or soundfont version! This is also sort of a "spiritual successor" to my video about how Toby Fox created Undertale's music... My goal was to show the world how game music is made on a greater scale than ever before. Regardless of how well it performs, I'm glad it found you! I don't have a Patreon, but you can tip me on Ko-fi! 🧡 https://ko-fi.com/toffeebuny (You will be thanked in the next video!) Twitter: https://twitter.com/Toffee_Bun Tumblr: https://toffeebun.tumblr.com/ Twitch: https://www.twitch.tv/toffeebuny Music: https://soundcloud.com/toffeebun Andrew Cunningham's video featuring me! https://youtu.be/H89ZT0jjiO8?si=lt9ReNIjqEdofwZ6 Toffee Art: @Vinqou Sprites: Myself & @Vinqou Toffee's Buns (Community Discord): https://discord.gg/J2bh4CWTmJ (13+) Shoutouts: @andrew_cunningham for featuring me on his channel, and for the support during the making of this video! @relaxalax for inspiring me with his recent videos about songs that sampled video game music! @brutalmoose I had tons of your videos playing in the background while editing, helped me through it all. You're the best! VGM Sound Sources spreadsheet: https://docs.google.com/spreadsheets/d/1JJBlHHDc65fhZmKUGLrDTLCm6rfUU83-kbuD8Y0zU0o Toby Fox Sample spreadsheet: https://docs.google.com/spreadsheets/d/10is6jIBxYlPm0Bcaf0KFFw9TE0bph8L0pcXSiz6xs5E The MIDI visualizer I used in this video is called 'ALMAMPlayer', and can be found here! https://almam.itch.io/almamplayer Song List: Pinned comment! Timestamps: 0:00 Intro 1:56 Sequenced Music, Synthesis, Sampling 4:29 Where Composers Find Sounds 9:59 How Video Game Music Was Made 13:22 Rise of Streamed Music 15:40 Video Game Music Isn't Real...? 18:58 Sample CDs 22:14 Conclusion Uh something something those french horns are in everything #Sampling #VGM #EarthBound
SAMPLING in Video Game Music
After diving deeper into the music composing rabbit hole I had to face my fear of actually doing it myself. I think I spent 2 or 3 weekends writing music, making mistakes, and finally getting it all done.

Learning to Make Adaptive Audio (FMOD Studio)

Adaptive audio is a dynamic soundtrack system that responds to the player's actions and the game's state in real time. Without a system like this, games become a lot less immersive and can be straight up annoying at times.
notion image
I used FMOD Studio which has easy to use integrations with Unity for a couple of cases:
  1. Clicking on the “Suns” uses different pitches to create variety.
  1. Cutscene uses parameters to determine when to fade into the next music or sound effect cue. For example, the “Woosh” sound effect as the camera pans and the “DEFEND. THE. PLANTS” text.
  1. When navigating the level select and going to “Night” levels, the music gets a bit darker as I shifted the pitch and changed the EQ to make these levels feel more tense.
🙏
There are a lot of links in this section but I hope you’re staying with me. We’re almost at the end!

Closing Thoughts

Just thinking about everything I went through makes me tired, but I’m glad I went through it. Taking on all these different roles gives me a lot of respect for everyone involved in video game creation and I can’t wait to create my next game! Though I can’t celebrate just yet…
 
notion image

4. Releasing the Game 🥂

After fixing a ton of bugs and adding the ability to play on mobile, I finally released the game on “itch.io”. I sent it to some friends to test the game but now I need to start marketing the game so it can reach a wider audience.

Marketing

Time to put my business hat on and market not only the game but also let people know who I am!

Creating a Gameplay Trailer

I made a quick gameplay trailer using Vegas to give people an idea on what to expect when they play the game. It didn’t take me long to make it as I just recorded myself playing it without any fancy or new animations. In the future I would love to learn from Derek Lieu as he’s known to be a professional in making way more eye-catching game trailers.
notion image

Posting on Reddit

Since this is a game that combines Plants vs Zombies and Bloons, why not post this on their subreddits! This was such a joy to do as I got so many people in those communities trying out the game and having fun. I got a lot of “PEAK” and “ABSOLUTE CINEMA” messages in the comment section so it sounds like they’re having a good time.
itch.io analytics shows that 163 people tried out the game. Pretty good!

Promoting Myself

After putting this game out into the world I feel so much relief. I hope this post was able to illustrate the blood, sweat, and tears I put into the game but I mostly hope it inspires you to work on whatever you’re passionate about too. This is just the beginning of my indie game developer journey so if you want to see more from me, please follow me on Youtube for videos and my Instagram where I’ll be posting my artwork. Thanks for reading!