Ship component slots...

Help me think through a plug-in idea

Hello crazy EV people! When I retrieved my long-lost registration code a couple weeks ago, I thought I'd just play it again for an evening and be done with it. Instead, I got into it enough to remember old plug-in ideas and felt an urge to take another stab at them. So I came here...expecting a ghost town. Awesome to instead find a lot of people still chatting about the game and working on mods.

Since you are here, I figured I'd try to tap into your greater experience and knowledge of plug-in making. Much as I like my ideas, I'm sure I'm not the first to come up with them, and I'm also sure there are flaws and complications that I haven't thought of yet. So if it's been done before, point me in the right direction; if it hasn't, and it interests you enough to comment on it or discuss it, please do!

Anyway, here's the idea:

Concept: Emulate a traditional RPG item slot system. Instead of a helm slot, gloves slot, boots slot, etc, create in EV a power core slot, shield generator slot, warpdrive slot, etc.

The way I figured to do this, is to use the OnPurchase and OnSell fields to manage control bits that would represent the component slots. Use the Availability field to check those control bits, to prevent the purchase of an item if that slot is already filled. Dependencies could be established the same way (for example, shield generators can be seen but not purchased if you haven't bought a power core yet).

A ship chassis/body would hold normal values for armor, mass, free mass, and the like. But speed, acceleration, and maneuver would hold negative values. Fuel, shields, and recharging fields would be zeros. The player would then build his or her ship from the ground up - the quality of the parts would be the primary determinant of the ship's ultimate performance. Or he could buy a stock ship with most slots already filled (using the DefaultItems to add outfits) and replace things as he chooses.

Why Bother?: I've always wanted more upgrade options while keeping the same ship. For instance, I would rather that a Viper, a Lightning, and a Thunderhead have somewhat similar base values, so the player could choose a fighter that best suited them. I want upgrades to come from buying a better component for my Viper, instead of being stuck with (what seems to me anyway) the obvious choice in the current game: sell the Viper for something better. Or, to put it another way: Han Solo wouldn't sell the Millennium Falcon, he'd buy some better (probably illegal) components.

Potential Problems: For the player to have enough options to make meaningful choices as well as having expensive top-end components worth saving for, you'd potentially need a heck of a lotta outfits - I think the outfit limit of 512 is high enough to allow for this idea, but development time could be long. Furthermore, trying to balance all these outfits to achieve intended gameplay could be a real stumbling block. Also, you'd need a lot of ships: stock ships, chassis/body-only, and normal ships for the AI to use.

I'm also concerned that I'd be doing more work than I really needed to - that I could possibly get the same (or similar) results an easier way. For instance, maybe I should skip the empty chassis/body idea and instead consider all ships to come with standard factory parts. Make those fighters more equal the easy way: just change the values. :rolleyes: Upgrades could still be managed with control bits to establish exclusivity and hang on the the "item slot" idea. Of course, if you then sold an upgrade you'd magically have your factory part back without buying it. So...I dunno.

...anyway, I guess I'll stop here for now. I do have the idea fleshed out more than this, but I figure there's no point going further into it now, just to have someone say "That's been done already, here's a link." Or nobody responds, and then I feel silly for having gone to such lengths to describe an idea that's just not that interesting to anyone anyway. 😛

Actually, it's a good idea. It's something that everyone thinks of at some point (not intending to offend, it just seems to happen this way) but you've obviously put a lot of thought in to this.

It's a good idea, and AS FAR AS I CAN SEE RIGHT NOW (in other words, someone else could come along and see all kinds of problems I didn't see....) it would work very well as you have it planned out.

Quote

"That's been done already, here's a link."

No, it hasn't been done before. At least, I think that is hasn't, not the way you suggest. I'd be very interested in reading the full idea, if you feel like writing it out.

I don't think anyone has done a plug for Nova implimenting this, but it is definitely possible, and I am relatively sure that at least a TC or two in production plans on using some of the ideas you've come up with, especially multiple engine types.

If I'm not mistaken, the "stock" ships could come with at least the basic form of the outfits, and so you wouldn't need two of each ship. However, if you were to make a stock-Nova plug, you would have to modify most of the ships.

I honestly think the idea is pretty great, and perhaps a little bit more realistic than the basic idea. For instance: you can buy a bicycle and leave it like it is, and many do, but but you can also buy the basic frame and modify wheels, brakes, pedals, chains, etcetera until you have the bike that you like the best. Certain frames are only compatible with certain things, cost is always an issue, some things might work better with one frame than another (more work in the EVN engine, but possible).

I've tried this to various degrees of depth, and I usually have found that my biggest problem is the amount of time I'd require to balance everything. I did mine exactly as you've described. I've run into the most significant problem when dealing with different ship sizes. For example, you might want a tiny shuttle and a massive freighter to move the same speed, but have vastly different engines (and engine sizes). Unless you want to further differentiate between "small ship engine slots" and "large ship engine slots", you are stuck simply limiting the max number of particular outfits in order to prevent the freighter captain from buying dozens of shuttle engines and then enjoying a massive speed/accel increase (or whatever the item is; it could be shield generators) at a small cost/mass penalty. So, I did just that, and ended up with between 3-5 different ship sizes for different categories of components. The way I figured, engines, shield generators, ion dissipation, armor, fuel use (thus fuel carried), weapons to be carried, ammo load for said weapons, and free mass were all categories that had to be divided according to ship size.

You do have many outfit slots, but I ended up deciding that ships in the 29th century (or whenever) come with some parts integral to their hull design, so the best you can do is the occasional component upgrade for certain parts of the certain ships.

Sounds like a great idea.

I had completely forgotten until just now (when out of curiosity I looked to see what my couple of old posts had been about) that I posted my original thoughts on this plug-in idea way back in 2002 when I played EVN the first time around. Here's a link to it: old thread.

Main issue raised in that thread, if you (understandably) don't feel like reading ancient history: what happens when you capture an AI ship and use it as your own, and your ship becomes an escort. I knew there was something about this idea that didn't quite work how I wanted it to. It's all coming back to me now. 😛

Does anyone know for sure when, in the process of taking a captured ship as you own, OnRetire fires?

@werhner, on Oct 23 2007, 11:03 AM, said in Ship component slots...:

I've tried this to various degrees of depth, and I usually have found that my biggest problem is the amount of time I'd require to balance everything. I did mine exactly as you've described. I've run into the most significant problem when dealing with different ship sizes. For example, you might want a tiny shuttle and a massive freighter to move the same speed, but have vastly different engines (and engine sizes). Unless you want to further differentiate between "small ship engine slots" and "large ship engine slots", you are stuck simply limiting the max number of particular outfits in order to prevent the freighter captain from buying dozens of shuttle engines and then enjoying a massive speed/accel increase (or whatever the item is; it could be shield generators) at a small cost/mass penalty. So, I did just that, and ended up with between 3-5 different ship sizes for different categories of components. The way I figured, engines, shield generators, ion dissipation, armor, fuel use (thus fuel carried), weapons to be carried, ammo load for said weapons, and free mass were all categories that had to be divided according to ship size.

What's wrong with small ship vs big ship engine slots? Just stick a contribute bit on large ships and the same require bit on the engine, and do the same for small ships.

Colosseum does this (or will when it is released), though not with as much detail as your putting into it. It has four components that every ship needs: shield generator, armor, reactor, and engine. The shield generator controls shield strength and recharge. Armor does, well, armor strength. Reactors control energy capacity and recharge. And engines control speed, acceleration, and turn rate. Each is different, and some have other effects. For example, a really powerful shield generator or engine may cause energy drain, tough armor slows you down, etc.

I hear Firefly will also do this, but I don't know to what extent.

There are three problems with this system. First, all ships need an armor value of 1 so they don't explode if you take off. Nothing major there. Second, the A.I. cannot use any of these outfits, which complicates things a great deal. So, you end up having to stop the player from capturing ships as their own (all player ships need crew of zero) and you also have to make a fair number of A.I. variants with the stats you need. Including player ships, special opponents, and a couple of others, Colosseum has 61 ships, all based out of three ship chassis. Third, ships can only come with eight outfits. But that's only an issue if you wind up with 9 required parts, which is unlikely.

But hey, if you can pull it off, go ahead. Fully customizable ships are fun and add alot of depth, even if they do take a bit of work.

@crusader-alpha, on Oct 23 2007, 03:02 PM, said in Ship component slots...:

What's wrong with small ship vs big ship engine slots? Just stick a contribute bit on large ships and the same require bit on the engine, and do the same for small ships.

Nothing is wrong with that, except you have to differentiate between what is a large ship and a small ship. It is possible and easy to just say all fighters are small, corvettes are medium, and everything else bigger is large. The problem here is that you (the designer) have to foresee all possible ship designs, and you'd better have a player-worthy reason that you aren't letting that bare-bones, stripped down shuttle have a corvette engine that it could conceivably mount, but isn't allowed to because of an intangible flag. Here's the real kicker, I think: what the heck IS "free mass" anyway? It certainly isn't just internal volume, nor is it just external hardpoints.

The right way to accomplish this would be to simply have each engine be a certain size and produce a certain amount of thrust, with the proportion of thrust to shipmass being the actual acceleration value of a given ship. I know that the engine doesn't support this, but Nova did an alright job of having outfits that would incrementally decrease your acceleration, presumably to mimic the effects of a ship with fixed thrust, but increasing mass.

Just another engine change request, that's all.

@werhner, on Oct 23 2007, 05:03 PM, said in Ship component slots...:

I've run into the most significant problem when dealing with different ship sizes. For example, you might want a tiny shuttle and a massive freighter to move the same speed, but have vastly different engines (and engine sizes). Unless you want to further differentiate between "small ship engine slots" and "large ship engine slots", you are stuck simply limiting the max number of particular outfits in order to prevent the freighter captain from buying dozens of shuttle engines and then enjoying a massive speed/accel increase (or whatever the item is; it could be shield generators) at a small cost/mass penalty.

Thus far anyway, I've kept to the idea that any outfit that fits in a slot would have a maximum of one, to avoid the complication of multiples on a big ship.

As for handling something like a small ship engine on a big ship: I was going to use the acceleration/speed/turning fields in the ship resource to deal with this. A small ship might have -50/-50/-30 in those fields (just making numbers up here), while a large ship might weigh in with -800/-800/-90. To get to positive numbers, a fighter might buy an engine that adds 650/550/90, resulting in 600A/500S/60T. Putting that same engine in the larger ship would be worthless, yielding -150/-250/0. You'd need an engine big enough to provide 850/900/100 just to get it to move like a Leviathan (50A/100S/10T).

So I don't think you need to dip into Contribute and Require bits to designate ship sizes. Required free mass would prevent a big engine in a little ship, and a little engine in a big ship won't fly.

Of course, I'm making a big assumption here, that Nova will hold negative values in these fields and let me do these calculations with them. I know from testing that it won't choke on negatives (you're immobile) but I can't say for sure how the game will react to me manipulating it further.

This post has been edited by Tsuki : 23 October 2007 - 03:38 PM

Those are some great ideas. Although, as some said, this idea was already recognised by a lot of devs currently working on TCs. Also, if you did that for the original Nova as a plug, I can expect you to have "good times" considering how many variants of every ships the game has and how they are already spread throughout missions, dudes, flets, perses, etc.

Personally, I'd say it would be pretty much a suicidal thing to do on top of the stock scenario, considering balance and how you'd have to pretty much edit nearly every resource that somehow links to ships in one way or the other.

Quote

So I don't think you need to dip into Contribute and Require bits to designate ship sizes. Required free mass would prevent a big engine in a little ship, and a little engine in a big ship won't fly.

Well, you are right. You don't need to. But you will likely need to put big differences in masses of outfits meant for different ship sizes. Why? Because what's going to stop that -150\-100\-30 fighter "base" from using most of his free mass to mount the huge 900\800\150 leviathan engine? Somehow like you how you can take a nil'kimas manta and use all the mass to stick a manta bay on it. So you'd either have to make huge outfits really heavy, or you could simply put a contribute and require bit. How you use those bits is up to you.

Also, you could totally remove the idea of free mass and use entirely contribute\require bits along with outfits or control bits to create "slots" on ships.

Another point was capturing AI ships. Well, that truly is a great issue, but what you can do is simply to remove slots\mass\limbs\cookies and place the stats for existing outfits on top of the base. Sure, you won't be able to customize the ship after capturing it if you do it this way, but I have yet to think of a better way to avoid rather big complications that placing outfits on AI ships cause, especially when it comes to engines. If only the AI used all the outfit types correctly...
Otherwise, you will need to mess big time with the OnCapture field and to add and remove outfits when the ship is captured and you will have yet again to mess some more with the OnBuy field if the ship is also available in shipyards. Yeah.

@werhner, on Oct 24 2007, 06:03 AM, said in Ship component slots...:

I've run into the most significant problem when dealing with different ship sizes. For example, you might want a tiny shuttle and a massive freighter to move the same speed, but have vastly different engines (and engine sizes). Unless you want to further differentiate between "small ship engine slots" and "large ship engine slots", you are stuck simply limiting the max number of particular outfits in order to prevent the freighter captain from buying dozens of shuttle engines and then enjoying a massive speed/accel increase (or whatever the item is; it could be shield generators) at a small cost/mass penalty.

This is where it would be nice if instead of acceleration we had 'engine power' or something. Acceleration would be calculated based on engine power and mass. (This would also allow tractor beams to be much more realistic)

(edit) Oh, and you would get acceleration penalties for free when you buy cargo or outfits that take up mass.

This post has been edited by Guy : 23 October 2007 - 05:08 PM

Wait... Since there's no air resistance in space, would there be a noticeable acceleration difference between two different ships of different masses?

Yes, if they had the same engines. Air resistance doesn't really come into it, it's the inertia of the object you're trying to move.

This post has been edited by Guy : 23 October 2007 - 05:27 PM

@mumbling-psycho, on Oct 23 2007, 09:23 PM, said in Ship component slots...:

Another point was capturing AI ships. Well, that truly is a great issue, but what you can do is simply to remove slots\mass\limbs\cookies and place the stats for existing outfits on top of the base. Sure, you won't be able to customize the ship after capturing it if you do it this way, but I have yet to think of a better way to avoid rather big complications that placing outfits on AI ships cause, especially when it comes to engines. If only the AI used all the outfit types correctly...
Otherwise, you will need to mess big time with the OnCapture field and to add and remove outfits when the ship is captured and you will have yet again to mess some more with the OnBuy field if the ship is also available in shipyards. Yeah.

Yeah, as you and JoshTigerheart point out (and someone in that old thread mentioned too, which I'd forgotten about) the way the game handles ship capture + AI ignoring outfits = a lot of headaches. Escorts work properly if the negative "empty ship" values for player ships come from unsellable outfits (instead of the ship resource), since the AI will ignore the outfit. And taking an AI ship (with no outfits) works ok until you want to buy upgrades. That's the biggest issue to me: getting the player out of an AI ship and into a player ship they can customize.

I decided to finally test a few ideas, but so far nothing has worked. I focused on OnCapture and OnRetire, but nothing I came up with did what I needed it to do.

I did think up two possible ways to deal with it though, neither of which have I tested yet, and both of which would consume lots of resources.

1. Each AI ship has a default outfit. This outfit prevents you from buying any new outfits, until you sell it. Selling it triggers a Hxxx and puts you in the matching player ship. This requires two versions of every ship (so 384 would be the max number of ship classes you could have - the original game uses 288). It also requires an outfit for each AI ship class for Hxxx to work, and if you had 300 AI ship classes you'd be left with only 212 outfits for everything else, including the slotting system. The original game has 242 outfits.

2. Each AI ship sets a Contribute bit. A set of missions Requires that bit, and also performs an Available Ship Type check. The next time you visit an Outfitter, the mission that matches your ship is forced on you and the Hxxx swap is made. Once again, you need two versions of every ship. But instead of 300 outfits for 300 ship classes, you'd need 300 missions, leaving 700. The original game has 791 missions.

Any suggestions on how to do it better? Or flaws in the above ideas that I'm not seeing?

Well, requiring 2 versions of each ships is very little to worry about, because you pretty much have to have different versions because of the AI, including one that is pretty much empty as a base. But the real issue with both your ideas is that it takes up a huge amount of resources. Outfit resources are sort of limited, too.

There is a third solution and that is using the OnCapture field to remove\add outfits that are messed by the AI's strange handling of outfits. You could also try making the OnCapture field grant you a proper copy of the ship... I don't know how the game would react however, if the OnCapture field was to actually give another ship. It might work, but now you have to use a ship resource for every variant. Granted, that's still 384 ships\ship variants you can make and I find outfits and missions much more valuable resources than the ship one.

@mumbling-psycho, on Oct 24 2007, 05:36 PM, said in Ship component slots...:

Well, requiring 2 versions of each ships is very little to worry about, because you pretty much have to have different versions because of the AI, including one that is pretty much empty as a base. But the real issue with both your ideas is that it takes up a huge amount of resources. Outfit resources are sort of limited, too.

There is a third solution and that is using the OnCapture field to remove\add outfits that are messed by the AI's strange handling of outfits. You could also try making the OnCapture field grant you a proper copy of the ship... I don't know how the game would react however, if the OnCapture field was to actually give another ship. It might work, but now you have to use a ship resource for every variant. Granted, that's still 384 ships\ship variants you can make and I find outfits and missions much more valuable resources than the ship one.

I did try putting a Hxxx into OnCapture, but it only performed the swap when the captured ship was kept as an escort. Basically, I used a shuttle to take another shuttle, with H129 in OnCapture. Keeping the new shuttle as my own left me with two shuttles. Choosing to use the new shuttle as an escort turned my ship into a heavy shuttle. Not the behavior we want, unfortunately. 😛 I assume OnCapture would do the same with outfits - you'd end up with changes happening when they shouldn't, since that trigger doesn't care what you do with the captured ship.

The only trigger I've found yet that specifically targets a "use captured ship as your own" event is OnRetire. Putting H129 in there did nothing - my ship was the captured shuttle, the escort was my old shuttle, and no heavy shuttle ever entered the picture that I saw.

You have about 512 slots for outfits.

You have about 767 slots for different ships, or different variants of ships.

Lets say we're looking at a single model of fighter, and we want:

  1. Varying strengths of engines and shields, independent of each other.
  2. Compatibility with capturing.

If we allow for three different engines for our model of fighter (Small, Medium, Large), and three levels of shield-power (Thin, Normal, Thick), then we will have 9 different variants of this model of fighter. We would be able to support 85 different models of ships with this system, without using any outfits.

This bypasses the problem of putting fighter-engines on much larger models of ships, and saves outfit slots for other things.

@eugene-chin, on Oct 24 2007, 01:53 PM, said in Ship component slots...:

You have about exactly 512 slots for outfits.

You have about exactly 76 8 ( of course, there has to be one for escape pods, but still ) slots for different ships, or different variants of ships.

Lets say we're looking at a single model of fighter, and we want:

  1. Varying strengths of engines and shields, independent of each other.
  2. Compatibility with capturing.

If we allow for three different engines for our model of fighter (Small, Medium, Large), and three levels of shield-power (Thin, Normal, Thick), then we will have 9 different variants of this model of fighter. We would be able to support 85 different models of ships with this system, without using any outfits.

This bypasses the problem of putting fighter-engines on much larger models of ships, and saves outfit slots for other things.

This seems sort of insane to me. You only need to make a copy of the ships the AI will fly. Not one ship resource for every possibility. 85 ships starts being a fairly low number. Sure, you free up outfits, but at that point it won't be outfits you will be short of, it's going to be ships, depending on the project.

This post has been edited by Mumbling Psycho : 24 October 2007 - 01:11 PM

Unless you add UFOs, Unidentified Flying Outfits. Who needs ships? 😄