post icon

Improving Basic Gameplay

Recently I’ve been revisiting the basic gameplay of the combat to make a few improvements. I’d not looked at it in a while and I’d become concerned that it was ‘okay’ but not really fun enough. It was a bit to 6 out of 10 and it needs to be an 8, it needs to be viscerally satisfying and I don’t think it really is. Reviewing areas of your game like this and being self-critical is really important when it comes to improving your games. It’s especially important that you nail the basic gameplay, this is the thing that players enjoy the most.

A lot of games, from AA to little indie, have this problem. They put in the basic gameplay that their genre calls for but don’t spend the time needed to work on the subtleties of balancing and visual feedback effects. It has all the trimmings but underneath it’s all just a bit too meh,

The basic gameplay of a game needs to be visceral. It needs to feel fun, evoke a physical response from the player. If your game is evoking adrenaline you’ll feel a sharp, bitter, taste on the back of your tongue. Tension, on the other hand, can feel like a knot in the stomach. If you do really well, pops of endorphins will give your head a warm fuzzy glow. These are the kinds of visceral responses a game needs to generate in its players.

Games are also an experience built around moments. You needed your player to experience memorable and satisfying moments. You need near misses where the player thinks ‘phew, that was close’. You need little victories where the player chases down an evasive ai before finally nailing them and thinking ‘gotcha’. Improving your basic gameplay is about finding these moments and generating emotion in the player.

I set up a test level just for combat. It was a tiny level with three areas to move between and one spawner that threw out bad guys. By doing this I had removed everything but the combat. If I could make this room fun, the rest of the game would be fun.

By doing this I’ve been able to identify and fix a number of issues that have improved the combat.

  • I added a better muzzle flash. Previously I had a transparent yellow circle that would light up the end of the gun. This effect was so subtle you could barely see it. I’ve replaced this with a proper animated effect.
  • The enemies were too slow. They plodded along, appeared to lack urgency and were easy to hit. I only needed to tweak there speed up by 1 and they were noticeably better.
  • The Ais’ gun used a burst fire pattern, but there was too much time between the shots. They did give the player a sense of threat or danger, or even much to worry about. This firing pattern was controlled by a couple of variables, so I changed the value to reduce the time between shots and produce a much tighter grouping. This looked more aggressive and gave the player a group of objects to avoid.
  • The players turret was too small. You could barely see it. I doubled its size.
  • I made the ai more accurate. There is a slight aim wiggle that I give each bullet, each one is fired somewhere within a cone. I can’t actually give the Ai dead on accuracy or make it too low, it looks really bad. If the player is constantly moving the ai is always firing at where they were and would miss. It’s too hard to reliably predict the position of the player. Instead I gave a random wiggle in a range of +/-30 degrees. Unfortunately I had this value too high and the ai was just spraying bullets around too much. I halved the value and it became much more effective.
  • I also gave the ai bigger bullets. I’d already done this for the player, so I just migrated the change across to the ai.
  • The bullet impact effect was poor. It was a circle that expanded and then collapsed whilst changing colour. It didn’t look like and impact. I drew a proper animation and added it to the players and ai’s bullets.
  • The ai didn’t die in a very satisfying way. They just sort of popped and then dropped to the ground broken. I restored a death animation that I had previously removed and added some particle effects to it. I then redid the broken husk of the ai and gave it some little sparks. Overall this gave the ai a much more satisfying destruction when you shot them.
  • The sound effect for the players gun was pretty weak. It was little more than a pop and sounded quite ‘tinny’. This had the effect of making the players gun sound like a toy. When I first did this sound effect I thought it was ok, but since then I’ve changed and updated other sound effects. The contrast in the sounds of the ai gun and the players gun was really noticeable. The ai sounded like it had weight and power and the contrast with the players sound made it sound awful. I fixed this by taking a sound clip of some thunder and adding it to the gun sound. It gave it a bit more depth and some rumble.

These changes had started to make the game feel much more solid and fun. But I still had problems with the Ai being too easy to hit.

  • I made the Ai respond to taking damage by dodging. If you hit it, it would immediately move sideways relative to the player. This meant that any bullet after the first would miss and the player would have to adjust their aim. The Ai was now more evasive and you had try harder to hit it.
  • The Ai also needed a bit more teeth. I gave it a charged power shot. Each time the Ai fires it has a 1/6 chance of firing a power shot. A charging animation will play, giving the player a warning. Once charged the Ai will then dodge to the side and fire. By dodging it had a chance to counter the players attempt to stop its charged attack. For the shot itself, I made a wide bullet that looked like a wave, when it struck the player it would knock them back.

It was only a day’s work to implement all these changes and it has massively improved the quality of the underlying gameplay.

- JBuckle

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>