I am just curious...

I have a few questions, before I ask more questions...

The ships you are making, are they 2D or 3D?
If they are 2D, you can make layered sprites...
BODY, GUNS, JETS, WINGS... Separate.

Just set the position/orientation, as each would be for each level of growth. You could cheat, and just make them larger scale, or wider from the center, to give the illusion of growth also.

Once oriented, the ship and all parts use the offset of the 2D origin, plus the rotation of the relative location.

The images, if you use 256 color images, can have pallets swapped for the illusion of variation also. (Or just a simple colorize or gamma adjustment... Brighter for lower levels, stronger colors for bigger and badder.)

Remember, smaller sprites can use less color, without much loss to detail. It is the larger images which loose a lot, and it is noticed. (Not sure if you are using a separate mask, or a color mask, if these are 2D, but a color mask is better, unless you purposely reduce the bitmap mask to a 2 color BMP.)

You said size was an issue with the files... Are you making two flavors? The full-commented code, and a play-only version? The comments, variables, and functions can be reduced in a play-only version. Shorten them to no-comments, and reduce the variables and functions to unique values only...

FUNCTION Billybobjoemarie (x_val3DvectorQuadA as LONG, y_val3DvectorQuadA as LONG, z_val3DvectorQuadA as LONG, q_val3DvectorQuadA as LONG)

Turn it into...
FUNCTION f_000 (v_000 as LONG, v_001 as LONG, v_002 as LONG, v_003 as LONG, )

In the end, once zipped... All the " v_00" will reduce well. Just test the reduced code, after you force a strict format. (I never trust a "FIND and REPLACE" 100%.)

Sprites are fast, space is easy to fill with disposable sprites of animated stars. Using bitblt api you can have over 5000 moving sprites, and not even have a screen flicker. All you need is a screen-mask of the rendered content, and it can be forced to look like it is below the game. (Not sure if you are using DX or GL or API stuff for this.)

You can make the stars animated by using one image, shifted x-pos, like a GIF, based on time, with a random start cell position, and use a random time trigger to make them seem non-scripted.

Do you zoom-out as players get near the edges of the screen? Allowing a larger play field? But zooming in, when they are more near the center, allowing more refined control in close proximity, or just as a dramatic effect... like at a boss stage, or just to add difficulty in later stages. (Screen being 1024 x 768, but virtual area being 2048 x 1536, zooming or shifting around to maintain a full view. Could be a strategy if used wisely... draw in close to get precise shots, and pull away for more coverage... which would result in zoomed in, while close, and zoomed out while spread.)

Using a pallet-swap can also create power-up effects. Even a pallet shift/reassignment to give the illusion of change/glow.

If the ships are 3D and small... you only need ICON size art, (64 x 64, and 32 colors) Don't use one large file with full RRGGBB, it is a waste of space. Enemies can be modular also... thus, expandable and mergeable... 2 small wings, 4 small wings, 2 large wings, long double body, tentacles, double-cockpits, offset cockpit, single-jets, double-jets, triple-jets.

Enemy moves...
Simple swarming, attracted to a common point, without being too close to one another.
Attractive drifting, veering towards, or away as an apparent maneuver.
Kamikaze, um... does not need explanation.
Paranoid, avoiding any busy location, or pulling to an unoccupied spot.
Innocent bystander, happily darting along, without any defence or offence, just target practice.
SIN^COS, those annoying ones that follow a ritualistic path, but are still hard to hit.
Spiro-graph, Like SIN^COS, but drunk, and all over the place in odd loops.

Mode fills...
Scare mode, silence followed by a faint sound of something big...
Panic mode, massive fly-swarms of super easy to kill enemies, that don't attack much...
Hahaha you can't hit me mode, swirling around a player, or playing peek-a-boo out of fire range...
Surrender mode, purposely pulling back, allowing a larger enemy to take the front line...
WTF OMG STFU, Innocent bystanders turn kamikaze and dive-bomb without attacking...

Random madness...
Happy face bopping around... no reason, just floating around... and knocking out enemies...
Star attack... Stars vacate the background and slaughter all enemies... swarm style...
TYPE: "thinbasic" at any time... plays the "MajorTom.midi" file...
Warp to "Joes Diner"... stars blur and do the warp-speed thing... Tires squeal, and a broken intercom voice greets the players to order a thinbasic value meal from "Joes Diner"... Returns back to the game with no explanation as to why that just happened... (sound would be a nasty super reduced file, which sounds like a messed-up take-out drive-through intercom.)

That's all I can think-of off the top of my head, without seeing the game or the code.

I am sure I will find that post next, or soon...