I'm figuring on the next wave of testing being two weeks from now. This should be confirmed next week provided nothing blows up in my face between now and then.
So I adopted an approach that moves the muzzle based on the the size of the bullet. This fixed the "giant bullet of doom overlapping the hull" problem, but, depending on the muzzle size, starts looking funny when the bullet gets too big or too small. So it got scrapped.
Instead, bullets now fire at a muzzle-appropriate size and then then quickly expand once they're in the playfield. This keeps the action looking smooth at the player's ship without compromising the variable size. In some cases, it can look a little unusual, but it's rare and a sane player would probably never build his ship that way. Short of making a whole bunch of different gun art (or software scaling it, which would be worse, really), I think this is as good as it can be with the way the game works.
I wish it was. The reality is that I've been running on a semi-unofficial, long-deprecated engine build. So, since I've started, the lua binding has been changed a bit and, worse yet, the class system has been replaced with one that is not fully compatible with some of my slapdash code. This is all actually quite good for the engine. It is, however, bad for me. To get my game up to snuff would require a fair amount of clean-up and rewriting. This of course puts me at the awkward spot of choosing either no Vista support, or pouring even more time into this game.
I can't really afford to not upgrade the engine, so it's not much of a choice at all. After this is done I'll have Vista support, cleaner code, and support for new engine features as they come. I do slightly regret diving headfirst into the lua side before it was cemented, but ultimately it was fun and this is only a minor setback.
Each of these attributes then influenced one or more specific qualities of the unit, with many even overlapping to create "compound" properties.
e.g. The Streamer's movement rate was affected by both its Offense and Defense. By moving faster:
* It is harder for the player to spot it and get out of the way in time.(Offense)
* It is more likely to make it off the screen without being shot and destroyed, yielding a "successful" deployment. (Defense) It's worth mentioning, for those that haven't already played (and quite probably most that have), that this ship doesn't maximize its damage potential until after it exits the screen.
So, in order to max out its speed, you'd actually have to max out both its offense and defense attributes. I think this is a pretty neat way to handle things, and, in a perfect world, it would make a great game, but it.. doesn't.
The reality is that not only is this pretty complicated (especially for a game that's largely just pick up and play shooting), but it's all happening in the background under vague labels too! Best case: dedicated players reverse engineer the numbers and learn how to work the system, while casual players are uninformed and fail miserably. Worst (and most probable) case: players are quickly frustrated and annoyed, prompting them to give up on the game.
Obviously that's bad, so that plan has been scrapped. Or at least severely amended.
It's not exhaustive, but here are some quick bullets about the "new" system:
* Each unit type still has three attributes, but each set of three has been tailored to the specific unit type, instead of trying to shoehorn the unit types into a generic attribute set.
* Each attribute is linked to a single property. Gone are the days of complex, intertwining relationships.
* When setting up your defenses, the UI clearly displays what an attribute adjusts for that specific unit when mousing over its slider. The numbers are all still tucked away in the background, but at least the relationships are clear; semi-transparency should be sufficient.
As big as I'm making it sound, in implementation these are tiny adjustments, but I spent a lot of thinky-juice deciding that this is the best course to take. Now that this is done, I'm feeling good about the project again and really can't wait to wrap up the rest of the non-balancing work so I can get this out to everyone.