So my minigun is now hosing down bullets everywhere:

May be that’s too extreme. This one is a “shoot a lot, miss a lot” kind of gun where you spray a bunch of enemies with not too much finesse. It’s not that good versus single targets though. It also has stupid-strong bullet spread/recoil. I think it’s just fun.

So how about something slightly different, like a laser rifle:

The laser is a very fast projectile fast-firing weapon with not too high damage, but is very accurate with low recoil/kick. It rewards accurate shooting versus individual targets, especially when switching quickly. It is not good against many weak enemies, as the player will just miss while running.

In fact, while thinking where my guns belong, I sort of came up with this:

A little Venn to show how primary weapon properties stack with each other. In short, weapons have strength, speed, and accuracy. Strength is how much damage they deal or–to be precise–how much damage their projectiles deal. Speed is rate of fire or how many projectiles per second it fires, including magazine size and such. And accuracy is how well it handles from random bullet spread to kickback to whatever else makes it harder or easier to hit stuff with it.

I don’t want too many weapons that focus on just one property (yellow parts). For example, a shotgun is strong, but neither accurate nor particularly fast. It has a niche, but it’s not versatile enough that the player wouldn’t pick something else over it. So it’s a good starting to mid-game weapon, but not an endgame one.

Weapons with two strong properties (green parts) are the ones I want most of. They have a lot of utility, but always a downside. For example, a high damage inaccurate minigun misses a lot, thus lowering the overall effective damage.

And weapons with all three properties goign strong (red part) are basically OP. I might have a couple for the very endgame or really hard to acquire, but they make encounters trivial by not having any downside at all.

I couldn’t think of anything just fast, so I added a submachine gun as a fast but weak and fairly imprecise weapon:

And a sniper rifle, which is a powerful one-shot trash kill non-automatic super-accurate weapon:

Now just to configure and balance it all… I might need some sort of quick testing room with target practice dummies.

I still have some issues with weapon firing. This is a never-ending journey. (But hopefully I am making it all modular enough that I can reuse a lot of it if I ever make a game with similar mechanics. May be.)

The first issue is that weapon with a kick don’t actually spawn the projectiles where the barrel is, but rather where it would be at resting position. The muzzle flash is fine because it’s part of the world object. But the kick is visual, and so I need to convert it to an internal system.

Similarly, the bullet spread is an internal value that affects the spawned projectiles but not where the weapon/barrel appear. The current spread angle of weapon isn’t reflected on the world object’s rotation.

So encapsulating the systems and providing the world object with values works out nicely and I get exactly what I am expecting:

There’s a couple features I mentioned but never really did anything properly about: ammo and reload.

I think I am keeping weapon reload feature to balance the combat and automatic weapons. But I do need a very clear indicator. Something simple like this:

As for ammo, I think I am getting rid of total ammo for most weapons (not that I ever added it). In other words, the player has infinite ammo but needs to reload. Most weapon, anyway. There are some weapons that I want ammo for and I want specific ammo types. For starters, rockets. So I can show them on the HUD as inventory:

And specify that a weapon should use them:

And then not allow the weapon to fire them if it is out of ammo, as well as show this on the reticle:

My sprites sure need further work here, but the idea is there. Anyway, this is looking good, although going very slow.

MicroRogue DevDiary #45 – More weapon improvements
Tagged on:             

Leave a Reply

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