~/home/blogs/i'm-developing-a-game.md

I'm developing a game!

I've been working on a game prototype for a while now. Just sharing some progress.

- Raul G.
2021-07-12

Hey ya big nerds!

If you stop by my blog every once in a while, you'll notice that I have not posted a blog in a minute. That's because I had to take a step back and really think about what I was spending my time on.

As a result, I decided to dive into game development. It's been my dream since I was a kid, but now I am equipped with all of the skills and tools that I need to develop a videogame. I've been developing a prototype over the last few months, not much time invested though. I've been working on this idea while watching meme compilations & netflix with my GF.

The Design


I personally love games where movement is a requirement to do well and speed is both a blessing and a curse. I also took inspiration from anime. Characters in anime tend to have the ability to move so gracefully, yet powerfully. Watching a master do their work is almost like watching a dance or performance and I feel the need to capture that in a videogame experience.

I've never personally watched Naruto, but I love this fight scene where a single person fights an army and uses grace & tactics to defeat overwhelming odds. The first 2 and a half minutes of the video are great examples.

 

 I started with a design document that detailed my game's key pillars: Speed and One-Versus-Many. I use these key pillars as reference whenever it comes time to make a decision. For example, should the player accelerate? What about during a jump, can they change their velocity? etc. etc.

The Prototype


Although I've been working on this project very casually, I feel that I've made some real progress towards something resembles "fun". Throughout development I have changed my original design doc. I have not, however, changed my key pillars. I started by deciding on the player's movement & went with a double jump. This was super early, when I just got the camera to work in conjunction with the player's movement/velocity.

First Build:

Once I got he camera working, I fleshed out the movement controller for the prototype. I also decided that a mid-air dash would be a critical part of the player's moveset.

Third Build:

I tweaked the movement variables around until I got a feel that I enjoyed. I've spent quite a bit of time just running around the prototype map that I've laid out.

Once I got to designing the enemy AI, I had to make decisions about the enemy behavior. I decided to focus on melee for now and develop ranged enemies later.

Since the game is focused on speed, the enemies will penalize you for standing still. They will run up to you, charge up and finally pounce once their charge-up is complete. If you walk too far while they are charging up, they simply start chasing you again. I also wrote a simple healthbar for enemies as a placeholder. It's literally a red cube that scales down on the X axis.

Fourth Build:

At the point of recording this GIF, I had not written the "pounce" part of the code.

I'll go ahead and skip to Build 8, which is the build I'm on now. I wrote a pretty flexibile wave manager script that allows me to control which GameObjects will spawn, where they will spawn, and in what order/quantity. This is going to be great. I've decided that for the prototype, I won't build any procedurally generated waves or levels. I'll simply create a single level with 10 waves.

I also gave the player a sword, and I've given them 2 boomerangs. The boomerangs come back if they hit an enemy or if they've been in flight for a while. I still need to add knockback, stuns, and particle effects so that the boomerang and the sword have more impact when they hit. (Please disregard the healthbars, those are just placeholder.)

Eighth Build:

None of these decisions are set in stone, though. I'm still in the prototype phase. Not even alpha. This game doesn't have a name yet, nor does it have any concrete lore or story/setting. I've been focused on making the mechanics enjoyable. So far, I've just called this "Project: Anime Motion". I've implemented all of the key systems that are required to consider this project a game, though. It has a main menu, a healthbar/lose condition, and a win condition (kill all enemies that have spawned). Now, begins the tweaking & tuning...

Coming Soon™


Soon™ in this case really means BRUH, IDK! 

LOL, At this point, I only have a bunch of systems that are going to be useful. You can technically load in, start the waves and win/lose the game, but there are only 2 slow enemies that spawn and the "arena" you're fighting in is empty and bland.

My wave system works well but I need enemy variety. Like I mentioned earlier, I only programmed melee enemy AI. I need to refactor my code to support ranged & melee enemies while being extendable enough to eventually support sub-types of ranged & melee enemies. Once I've built out a "ranged" and "melee" prefab, I can develop a few varients of each type by tweaking some variables on my script, such as attack damage, movement speed, health & how long it takes to charge up a pounce.

 I also need to design a level. It's no good having a wave spawning system if there are no interesting places to spawn enemies. This one is going to be a bit difficult because I will need to account for the enemy spawns and the player's speed / verticality. I've also considered adding some level obstacles or maybe some interactable objects, but I feel like those are not critical to the game's key pillars so they might not make it into the demo/prototype.

I'd also like to add a leaderboard, and it would definitely play well with the key pillars because we can time the player and encourage the player focus on their speed. However, considering that the prototype is primarily to test the game concept in execution, I don't think it's critical to the prototype. I'm just going to display the player's final time on the victory card so that players can compete among friends by sharing screenshots. By doing it this way, we can still encourage players to compete over time, without the need to write code that supports a local high-score database.

If everything goes well, I'll make some interesting & challenging enemies and a map that compliments them. I'll also create some interesting group compositions and spawn waves that are challenging, but fun to plow through. Once I prepare a level of my design, I'll release the prototype/demo and ask for some feedback. Hopefully, I'm onto something 🤞.

Thanks for reading!

Share this post