Shipping My First Game
I made a game
Baby Steps
A few months ago, I decided to learn how to make games. Many years ago, I made a few small hacky games, the kind that you can churn out in just a few days. But, this time around I wanted to focus on learning about the tools I would be using, as well as best practices when developing a game from scratch. I was also freshly addicted to Vampire Survivors; so, I googled around and eventually enrolled in this 20-hour Udemy course.
Looking back, this was one of the best decisions I made while learning about game development. Personally, when I do not know what I am doing, or I feel incompetent, I get anxious about what I am working on. Taking a course relieved a lot of this stress. With a clear lesson plan, Q&A, and art assets all provided, I did not get overwhelmed by the scale of developing my first game. Instead, I could tackle the challenge one 10-minute lecture at a time. If you are considering game development, I would recommend that you find a class or YouTube series that interests you and start from there.
What was I going to make?
A piece of common advice that I have seen many times is to “not reinvent the wheel”. What does that mean? Rather than trying to create a new genre, or new game altogether, take a popular concept and add a twist. In my case, I decided to take all of the “Survivor-like” game mechanics that I created in this course and add a tower defense element on top of it. I further reduced the scope by mocking up limited play areas. This mockup began with all of the same art assets, and programming that I had used to complete the Udemy course.
As shown in the mockup, my “Tower Defense Survivor-like” game would have a single lane for enemies to attack from, and a single wall to place defensive units. The enemies would spawn into the game on the far right and only move left. This AI was extremely easy to program. It was as simple as:
if (canMove(Vector2.left)) { move(Vector2.left); }
The white boxes are all of the locations where defensive units can spawn. Rather than giving the player freedom to choose anywhere to place the defensive units, I limited them to a few specific locations. This again reduced the scope of the game and simplified the programming for the defensive units.
At this point, my game was taking shape. I had the concept, the twist, and the foundation that I had built in the course. The next step was to start creating gameplay.
The gameplay loop
The gameplay loop that I settled on included a few incentives for the player to chase and a single way to lose. The incentives are — every time the player kills an enemy, there is a chance for an experience potion to drop OR gold coins to drop. The player loses by allowing the enemies to attack their castle for too long. At which point the wall is destroyed and the game is over.
The experience potions level up the player. Each time the player levels up they get to choose an upgrade for their character. This is very similar to Vampire Survivors — simple increases in stats like attack speed or movement speed.
The gold coin on the other hand would go into the player’s bag. The player could save up their gold and later decide what to purchase. The options include more upgrades for their character, a new weapon, or a defensive unit that they can place in the world. This defensive unit could be a “Knight”, “Archer”, or “Builder”. These defensive units act as the “Tower Defense” gameplay elements. They passively defend and strengthen your base.
The caveat is that the player can only gather gold and gain experience on the battlefield. But, they need to leave the battlefield to spend the gold that they have saved up. The player has a choice to defend their base or spend their gold to dramatically increase their power. When they spend their gold they are faced with three options.
This creates a gameplay triangle. The player will never have enough gold to purchase all 3 types of upgrades, so they have to choose how to build their character. Do they want to recruit a bunch of defensive units and lean into the “Tower Defense” aspects, or do they want to buy a lot of weapons and go full “Vampire Survivor”-mode. This flexibility and choice is where I found the most fun playtesting the game.
The last part of the game that I tackled was the lore. How was I going to give the player purpose and answer the question “Why am I doing this?”. I am a huge fan of Dark Souls, and I quickly came up with the idea of defending a “Flame” from the enemies. If the monsters destroy your wall, they will then put out the “Flame”. It is a simple concept, that I felt also worked with the simple setting where everything around you is dark, and the “Flame” is what provides light and safety. Additionally, in order to spend your gold, you have to be next to the “Flame”. As an added bonus, I made the flame heal the player anytime they stand near it with a nice warm particle effect. All of this combines together to make the “Flame” a core part of the gameplay without much additional work.
Try it yourself
That’s it! That’s a quick rundown of my first game. The balance isn’t great, the art is simple, and you can beat it in 30 minutes, but I think there is some real fun to be had. If you are curious about playing this game, which I have named “First Flame”, you can find it on itch.io. Have fun, and let me know what you think!
Leave a comment
Log in with itch.io to leave a comment.