1 Game a Week – Week 15

Alright, it’s time for my last devlog for the year of 2021. I think I’m ending this on a high note, as I’m actually really happy with how this project turned out. After finishing Week 14 I was away on holiday for a while, so I had some time to think about what game I wanted to make for Week 15. I had the idea of a top down brawler where you can punch both the left and right fists separately, I also wanted the fists to be actual GameObjects that are procedurally animated rather than in a sprite sheet.

One new thing I wanted to try out with this game was to allow myself to use third party assets a bit more for prototyping. One mistake I’ve made in all of my previous games was not relying on existing solutions to problems, and essentially reinventing the wheel. I used my own A* algorithm for a few games before replacing it with the A* Pathfinding Project. On one hand it’s good to write stuff from scratch for the purposes of learning, but right now I’m focusing on game design and high-level game programming. Writing a pathfinding algorithm from scratch is definitely something useful for me to be able to do, but it’s taking away from the final product as my time could really be used better elsewhere.

Debug view of my in-development A* algorithm from Week 13. I should have spent more time making the actual game instead of a generic algorithm.

So anyway, for the game itself I started off by focusing purely on how it feels to punch an enemy. I ignored juice for a lot of my recent games, since I thought I wanted to focus more on making gameplay that can stand up on its own without any SFX or VFX. I think that was a major mistake, and I got the notion from a Reddit post a few years ago where someone mentioned that a game’s mechanics should be fun by itself with no juice. I don’t know if that’s a common opinion in the game industry, but personally I don’t like prototyping games without at least placeholder graphics or effects. So I downloaded the Feel Asset, the Cartoon FX Remaster Asset and the Universal Sound FX Asset. This way I had some generic effects and a nice framework to setup juice and micro-interactions without much code, speeding up my prototype time. Finally after a little bit of time in Unity after playing around with Feel, I had a simple punch implemented.

Simple yet satisfying. My first attempt at making a punch.

I really focused on the juice and feel here, not worrying about any other part of the game. I figured that if it’s not fun to punch an enemy in a fighting game, then nothing else is going to hold that up. I decided to focus solely on audio, and after a bit more tweaking I had a version implemented. I was very surprised just how much better the game feels with audio feedback. My biggest lesson here was not to underestimate how powerful audio is.

The next 2 days involved me implementing a simple Health, Stamina and Shield System. I also started to implement the VFX juice while tweaking the punch timings. I also made it so that when you KO an enemy, your last punch sends them flying a bit farther, just to emphasize the character’s victory. I used some of the placeholder VFX then for a ‘death’ animation. While I don’t think the effects really ‘fit’ with the game’s graphics style, it still is much better than having nothing at all. A player should be able to play this and get the gist of the game in the prototype. If it was to go into full production, I would change out the VFX and SFX to something more appropriate.

I kept on tweaking the feel of the punch while I worked on the other parts of the game. I wanted the enemy to have some form of intelligent AI, so they don’t just rush the player constantly. While simple, there are a few rules with how the engage the player in combat. For example, if the player punches an enemy and they have enough stamina, they will engage their shields and back away to protect themselves. They are very simple rules and it does make the AI seem like they have some intelligence. If I’m being completely honest though, it needs a lot more work to make them feel more ‘alive’. They’re still kind of dumb.

Unfortunately the game is quite difficult, but the stamina and block system at least gives the player the time to receive a number of hits. I intentionally gave the player more HP and Stamina, so that the enemies will tire themselves out from walloping the player. I also made it so that the player regains some HP after each round. I’m not too happy with this solution as it doesn’t feel like it changes the game for the better. There isn’t much strategy other than blocking an enemy when they hit you to drain their stamina. Then when they run out of stamina, you can quickly dispatch them by punching them multiple times in quick succession. On the bright side, I do think it feels satisfying.

I also spent all of Monday trying to fix a performance bug where the browser would slowly compile the shaders when a player is spawned. Sadly I couldn’t figure it out. It’s not noticeable on a native Window version, so if anyone reading this knows why shader compilation is so slow on Chromium browsers, please send me a message!

Final gameplay with enemies spawning in

What went well

  • Made a game that is actually fun to play for a few minutes
  • Learned the importance of good VFX, SFX and Juice
  • Implemented Hitbox/Hurtbox collision detection and response in a simple and clean way

What could have gone better

  • I *technically* didn’t finish this game in the week, since I was working on a performance fix on Monday. Thanks, Chromium. It shouldn’t take 5 seconds to compile 10 shaders…
  • I would have liked to add in actual graphics and an environment, but I really already went over time so I didn’t spend time polishing it.

What I learned

  • I don’t like prototyping games without VFX or SFX. I enjoy working on the prototypes more when it feels more like a “real” game. I just need to be careful not to only work on polish and ignore fun gameplay like my sheep herding game from Week 5.
  • It’s okay to use third party assets for things that I’m not skilled in. I can’t make VFX or SFX (yet), so there’s no point in doing it badly for a prototype when there’s already good resources out there that I can use.
  • The problem with a lot of my earlier games is lack of feedback. I think even the mining game I made would feel way more interesting to play if the miners actually had a digging animation with a pickaxe SFX.

Summary

After making a few terrible projects in a row, I’m glad to have finally made something that I’m happy with. I learned a lot of important things making this project that makes me look back and see where I went wrong on my earlier games. Getting the core interaction polished and fun is something that isn’t new to me, I’ve read about it many many times but even then I feel like I ignored that advice for too long.

From now on I’m going to get the game feeling good immediately with some placeholder SFX and VFX. That will allow me to set the game’s mood and get closer to how I want to player to feel when they’re playing the game.

As always, if you want to try out the prototype, the link is right here:

1GAW – Week 15

Fast-paced round-based Beat ’em Up Prototype

Available now to play on your browser

If you wanna play around with the code, I also have a link to the GitHub repo if you click here!

One thought on “1 Game a Week – Week 15

Leave a comment