It'd be nice to have a chance, in Bounty mode, for bunches of enemies of lower strength to spawn close together.
Yup, I've been wanting to do this; it just hasn't been as high a priority as other things. The main thing is improving the enemy ship AI so that they will stick together and work together to attack you from different sides. (This will mitigate what I feel is the dominant strategy of just building a wall of weapons all facing one direction.)
If your world were automagically populated by the ships you're saving, you'd have to fight your own designs, which would extend Bounty mode on indefinitely even as you play.
Great idea! I'd thought of populating the world with ships designed by other players (like Reassembly does), but not of the player themself.
though it looks like it sticks out the other side of the ship if what you're building isn't wide enough hehe
Not really sure what you mean. Send me a screenshot and I can try to help.
Part layout is the most confusing to me. I keep making parts that have their invalid-zone (in front of thrusters, turrets, etc) intersect with the part weirdly. Also, valid door placement is a little arcane - is it defining vectors along the side of the part? I could probably figure this out on my own, but I've just been copying it over from other parts.
Okay, so part layout is definitely confusing... it confuses me too sometimes! Let me try to explain:
Every part has a size. For example, the Large Thruster is 2x3, the Control Room is 2x2, the Small Laser is 1x3, etc... This size also implicitly defines the part's rectangle ("rect" for short), where the top-left cell is 0,0. So for example, the Large Thruster's rect is [0, 0, 2, 3] (x, y, width, height), Control Room is [0, 0, 2, 2], Small Laser [0, 0, 1, 3]. This is the rectangle that the part occupies and cannot be occupied by any other parts.
PhysicalRect is used to determine whether two parts are connected to each other for the purposes of enforcing the adjacency rule (two parts connect to each other only if their PhysicalRects touch each other). So for example, the Large Thruster has a PhysicalRect of [0, 0, 2, 2], meaning that the bottom 2 cells occupied by the nozzle don't count for adjacency. PhysicalRect also determines the bounding box for collision. If no PhysicalRect is specified, then it is assumed to be the part's entire implicit rect as defined above.
SaveRect is kind of weird and hard to explain, but basically it allows you to change the size of a part without breaking any saved ships or saved games. For example, a long time ago the Large Thruster was 2x2 instead of 2x3, meaning it's nozzle wasn't in its implicit rect and could thus overlap with other nozzles. I changed it to 2x3, which would have broken saves had I not set SaveRect to match the original implicit rect of [0, 0, 2, 2]. In general you shouldn't specify SaveRect for any new kinds of parts.
As you've probably figured out, ProhibitLeft, ProhibitRight, ProhibitAbove, and ProhibitBelow define a number of cells away from the part in a particular direction in which you can't have other parts. The key to understand here is that these are defined relative to the part's *implicit* rect, not its PhysicalRect. Additionally, any cells in a part's implicit rect that are *not* in its PhysicalRect are also automatically prohibited. So while the Large Thruster *looks* like it prohibits 6 cells below it, its ProhibitBelow is actually set to 5 because the two nozzle cells are automatically prohibited.
Yeah, AllowedDoorLocations is weird and arcane. It's a list of [x,y] cells around the perimeter of the part's implicit rect where doors can be added to connect to that cell. So if a part is 2x3, then doors along its left edge are always [-1,_], doors along the top edge are always [_,-1], doors along the right edge are always [2,_], and doors along the bottom edge are always [_,3]. (But replace 2 and 3 with the size of whatever part you're working with.)