Page 1 of 2

Ship Pricing OXP

Posted: Wed Feb 27, 2008 5:58 am
by Lestradae
Hi all,

I invested some thought in this lately and came up with the not completely new idea of letting the game calculate the prices based on the ship stats. That would have a lot of good consequences. For example, Uber ships would no longer be so Uber if you had to work really long to aquire them. And the quality of a ship would directly reflect into how difficult or easy it was to aquire.

I have devised a suggestion how such a calculation could look like. It even produces rather fitting prices. Example results would be, for example:

A flying strut: 276 Cr
Adder: 29.500 Cr
Gecko: 70.760 Cr
Asp MkII: 120.960 Cr
Cobra MkIII: 150.000 Cr
Python: 177.650 Cr
Tesoura: 432.000 Cr
Fer-de-Lance (0.6 LS): 606.500 Cr
Anaconda: 714.150 Cr
Imperial Courier: 972.000 Cr
Benulobiweed Firefly: 1.110.400 Cr
Super Cobra: 1.622.000 Cr
The Ultimate Uber Ship*: 345.610.000 Cr

* The Ultimate Uber Ship has all the highest stats that I found for any ship - but combined in one ship

The calculation would take a Cobra MkIII with a base value of 150.000 Cr and then modify the price according to the stat differences in combination.

That would look as follows:

Basic Ship:

Cobra MkIII:
* Extended Cargo Capacity: 35 tons
* Speed: 0.35 LS
* Energy Banks: 4
* Missile Slots: 4
* Possible Equipment: All
* Manoeuvrability (Pitch/Roll): 1.5
* Gun Mounts: All 4
* Energy recharge rate: 4
* Price without Equipment: 150.000 Cr

Suggestion for price calculation:

* Cobra MkIII as standard with Standard Price: 150.000 Cr

* Extended Cargo Capacity: Price is raised/lowered 20%/10% per 20 additional/smaller Cargo Bay

* Speed: Price is doubled (each time)/lowered 20% per 0.1 LS jump up/down

* Energy Banks: Price is raised/lowered 20%/10% per additional/fewer Energy Bank

* Missile Slots: Price is raised/lowered 20%/10% per additional/fewer Missile Slots

* Possible Equipment: Price is taken down 10% per essential equipment piece not available

* Manoeuvrability (Pitch/Roll): Price is raised/lowered 20% per 0.5 additional/lower Pitch/Roll

* Gun Mounts: Price is lowered 10% per unavailable, 5% per reduced capacity Gun Mount

* Energy recharge rate: Price is raised/lowered 20%/10% per 1 additional/lower Energy recharge rate

* Price without Equipment is result of 150.000 Cr multiplied by all multipliers!

Three example calculations might look like this:

Gecko:
Extended Cargo Capacity: 3 tons (Price lowered 20% for non-existing cargo space) M=0.8
Speed: 0.30 LS (0.05 LS down, price lowered 10% as slower) M=0.9
Energy Banks: 3 (1 Energy Bank less, price lowered 10%) M=0.9
Missile Slots: 4 (Price stays as is) M=1.0
Possible Equipment: No MilSh, No ECC (Price lowered 20% as 2 essential EQ N/A) M=0.8
Manoeuvrability (Pitch/Roll): 2.25 (Price raised 30% as 0.75 additional Pitch/Roll) M=1.3
Gun Mounts: 1 (Price lowered 30% for 3 unavailable Gun Mounts) M=0.7
Energy recharge rate: 4 (Price stays as is) M=1.0
Price without Equipment: 150.000 Cr * 0.7 * 0.8"2 * 0.9"2 * 1.3 ~ 47.2% ~ 70.760 Cr

Tesoura:
Extended Cargo Capacity: 135 tons (Price raised 100% due to big cargo space) M=2.0
Speed: 0.30 LS (0.05 LS down, price lowered 10% as slower) M=0.9
Energy Banks: 7 (3 Energy Banks more, price raised 60%) M=1.6
Missile Slots: 4 (Price stays as is) M=1.0
Possible Equipment: All (Price stays as is) M=1.0
Manoeuvrability (Pitch/Roll): 1.5 (Price stays as is) M=1.0
Gun Mounts: 4 (Price stays as is) M=1.0
Energy recharge rate: 4 (Price stays as is) M=1.0
Price without Equipment: 150.000 Cr * 0.9 * 1.6 * 2 ~ 288% ~ 432.000 Cr

Imperial Courier:
Extended Cargo Capacity: 135 tons (Price raised 100% due to big cargo space) M=2.0
Speed: 0.35 LS (Price stays as is) M=1.0
Energy Banks: 8 (4 Energy Banks more, price raised 80%) M=1.8
Missile Slots: 8 (4 Missile Slots more, price raised 80%) M=1.8
Possible Equipment: All (Price stays as is) M=1.0
Manoeuvrability (Pitch/Roll): 1.5 (Price stays as is) M=1.0
Gun Mounts: 4 (Price stays as is) M=1.0
Energy recharge rate: 4 (Price stays as is) M=1.0
Price without Equipment: 150.000 Cr * 1.8"2 * 2 ~ 648% ~ 972.000 Cr

This is a serious suggestion. I can`t imagine this being too difficult to implement, as the maths is rather simple.

I have posted a list of the detailed calculation in the above list in the Suggestions Forum. Have fun trying this out on other ships.

Ahruman has answered this suggestion that
I have no intention of changing the pricing of the built-in ships, or of forcing particular pricing on OXP writers. However, your formula could be of interest in pricing new OXP ships, or evaluating the überness off new OXP ships.
OK. So, I asked myself, would it be technically possible to create an oxp that changed all ship prices, be they original ships or oxp ones, according to this formula?

Because then, I would like to make something like that (together with someone who can script) and players could individually decide for themselves if they find this a good idea that fits for them or not.

Someone interested?

Re: Ship Pricing OXP

Posted: Wed Feb 27, 2008 11:33 am
by JensAyton
Lestradae wrote:
OK. So, I asked myself, would it be technically possible to create an oxp that changed all ship prices, be they original ships or oxp ones, according to this formula?
Currently, only by overriding their shipdata.plist entries, so there is no way to make it apply to all OXPs.

Enabling JavaScript scripts to manipulate the shipyard could be interesting, but would require internal redesign that I don’t want to schedule for before the MNSR.

shipdata.plist

Posted: Wed Feb 27, 2008 12:03 pm
by Lestradae
Hi you, who sits to the right hand of Giles! :D
Currently, only by overriding their shipdata.plist entries, so there is no way to make it apply to all OXPs.
Would it not be possible to write an oxp that only consisted of a shipdata.plist which contained all ships any oxp uses up-to-date with the new prices factured in by hand?
Enabling JavaScript scripts to manipulate the shipyard could be interesting, but would require internal redesign that I don’t want to schedule for before the MNSR.
So I guess its not something that might be done on a quiet afternoon hour ... :wink:

I can imagine what kind of work you invest in the NMSR ... but the ship prices are really ... absurd. Well. If I can convince you somehow ... anyhow ... :D let me know ...

PS: Had another weird idea. What if I change all shipdata.plists by hand and ask all oxp-builders reachable if they are ok with changing their ship`s values?

Questions, questions ... with me they will never end.

Right on Archangel! :)

L

Re: shipdata.plist

Posted: Wed Feb 27, 2008 6:07 pm
by JensAyton
Lestradae wrote:
Would it not be possible to write an oxp that only consisted of a shipdata.plist which contained all ships any oxp uses up-to-date with the new prices factured in by hand?
Yes. As long as you call it zzzzSomething.oxp, and required that users have every other OXP installed (so the models and textures are available).

I would have to ...

Posted: Wed Feb 27, 2008 6:54 pm
by Lestradae
As long as you call it zzzzSomething.oxp
That ZZZZ thingy would be for the load order, yes? So that its ship prices override all others?
and required that users have every other OXP installed (so the models and textures are available).
Ah, that`s bad. :( So what would happen if the ZZZZ Ship Pricing oxp is there, but a player doesn`t have all the ship oxps available? Sorry for this kind of stupid questions, but I am very slowly learning how this all works from scratch ...

Thanks for your patience :)

L

Re: I would have to ...

Posted: Wed Feb 27, 2008 7:03 pm
by JensAyton
Lestradae wrote:
That ZZZZ thingy would be for the load order, yes? So that its ship prices override all others?
Yes.
Ah, that`s bad. :( So what would happen if the ZZZZ Ship Pricing oxp is there, but a player doesn`t have all the ship oxps available?
I think 1.70 would just spit out a lot of errors. 1.65 would almost certainly crash.

Posted: Thu Feb 28, 2008 8:30 am
by Hoopy
I thought you could use javascript to check to see if another OXP was loaded. That way you could just change the prices of ships that were present and not change those that aren't.

Posted: Thu Feb 28, 2008 7:38 pm
by JensAyton
Hoopy wrote:
I thought you could use javascript to check to see if another OXP was loaded. That way you could just change the prices of ships that were present and not change those that aren't.
We’ve already established that JavaScript can’t manipulate the shipyard. :-)

Posted: Thu Feb 28, 2008 8:46 pm
by Eric Walch
Lestradae wrote:
OK. So, I asked myself, would it be technically possible to create an oxp that changed all ship prices, be they original ships or oxp ones, according to this formula?
I don't see a point in changing the pricing of ships created by other scriptwriters. There is always a reason for that prise. But not always well thought of. The concept for prising is good but it should be for ship designers to be used. Make an easy to use list for prise values and put that on the scripting area on wiki as guideline for other scripters. When the values are good thought of, it will be useful as it will help to not create uberships. Such ships should than become too expensive to obtain.

But the individual scriptwriter should have the last decision.

Posted: Thu Feb 28, 2008 8:53 pm
by Disembodied
That's true, I think... after all, a ship-creator might want to overprice a ship, to reflect added social status for any pilot flying one. Designer-label ships! But Lestradae's calculations do seem to provide an excellent guide to pricing ships by their statistics, before the manufacturer adds on extras for walnut interiors, metallic paint, built-in surround-smell odourising systems etc.

Posted: Fri Feb 29, 2008 12:26 am
by TGHC
Disembodied wrote:
built-in surround-smell odourising systems etc.
Eeeeew, the mind boggles!

Have started work on my first oxp ...

Posted: Fri Feb 29, 2008 12:32 am
by Lestradae
This is not my first idea, but the first idea that I am actually doing more than planning for.

I have started work on the Zzzz Ship Pricing.oxp! The first testversion should be out in a week or so and will contain revised ship pricing according to the ship`s statistics.

The test oxp will include all standard player ships, the illicit unlock ships, the Tesoura and the old and new Imperial Cruiser. My first experiments have shown the method indicated by Ahruman to be working. I have no idea how the game reacts to this if some of the ships the oxp is adressing aren`t actually available - well, we will find out soon.
I don't see a point in changing the pricing of ships created by other scriptwriters. There is always a reason for that prise. But not always well thought of.
Yeah ... exactly :)
Make an easy to use list for prise values and put that on the scripting area on wiki as guideline for other scripters.
My oxp is going to contain a Word-File that lists all the stats of all the ships it contains. (Careful, spoilers ahead!)

And in the meantime I could use a little help from everyone around here ... if you find the time, could you please :shock: post or PM me the following stats of your oxp ships, as this is a major pain in the iron ass to find out via shipdata.plist? Namely:

* Exact ship name in the game

* It`s chance to appear in a shipyard

* Such a shipyard`s minimal Tech Level

* It`s extended (maximum) Cargo Capacity (that is, if Cargo Bay Extension is available for it)

* Maximum Speed (as appears ingame)

* Amount of Energy Banks (number ingame)

* Amount of Missile Slots

* Possible Equipment (can it use MilShields, Shield Boosters, does it have Cargo Bay Extension Capacity - those three are relevant)

* It`s Pitch & Roll values both

* Which of the four Gun Mounts can be used? Are there restricted ones? (Like only Beam Laser etc.)

* The Energy Recharge Rate (as in the wiki)

... I need these for the revised Ship Prices.

The format should look something like this:

Ship Name -Chance to Appear-Minimal Tech Level-Extended Cargo-Capacity-Maximum Speed-Energy Banks-Missile Slots-Possible Equipment-Pitch/Roll-Gun Mounts-Energy Recharge Rate

Benulobiweed Firefly 35 t 0.755 LS 1 3 No ECC 2.0/1.8 Fore, Aft 2.5 1.110.400 Cr

Boa 125 t 0.24 LS 7 4 No MilSh & ECC 2.8/1.0 All 3.0 315.200 Cr

Boa Class Cruiser 175 t 0.312 LS 8 5 No ECC 2.5/1.0 All 3.2 679.900 Cr

Fer-de-Lance 12 t 0.60 LS 2 2 No ECC 3.6/1.0 All 4.5 606.500 Cr

Gecko 3 t 0.30 LS 3 4 No MilSh & ECC 3.0/1.5 Fore 4.0 70.760 Cr

Imperial Courier (Old) 135 t 0.35 LS 8 8 All 2.0/1.0 All 4.0 972.000 Cr

etc. etc.

In return, there will be complete ship stat lists for all buyable ships be included in the oxp.

Looking forwards to your replies & feedback,

L

PS: I feel honoured by
Lestradae's calculations do seem to provide an excellent guide to pricing ships by their statistics
and
Make an easy to use list for prise values and put that on the scripting area on wiki as guideline for other scripters.
I therefore humbly suggest that if someone would want to do this (I have posted the whole method) the whole formulaic price system can be put anywhere onto the Oolite Boards & wiki! So, by all means and purposes, put the idea into the wiki ... while I am still struggling through shipdata & shipyard plists and the uploading and zipping processes for the oxp. You will have to bear with me ... :?

Posted: Fri Feb 29, 2008 12:45 pm
by Hoopy
@Ahruhman
Is it not possible to have javascipt and old style scripting in the same OXP? If so the js could see what else was installed and then tell the old script which prices to change...

@Hoopy

Posted: Fri Feb 29, 2008 1:07 pm
by Lestradae
Is it not possible to have javascipt and old style scripting in the same OXP? If so the js could see what else was installed and then tell the old script which prices to change...
Could it be ... can I hope ... that you might help me with the creation of this oxp? :shock:

Would it be possible with Java Script to read out the relevant ship data from the oxps available and then calculate the price with the formula, instead of entering each and every calculated price by hand?

As that way, it would be fast & easy to include ships from new oxps much faster than with my intended method ...

Cooperative :?: greetings,

L

Here is a bit of text I`ve written so far ...

Posted: Fri Feb 29, 2008 1:14 pm
by Lestradae
Overview
--------

It all started when I was unnerved at the absurd ship pricing in Oolite. Why should you pay so much money for an Asp MkII if it`s really such a let-down from the Jameson`s Cobra MkIII? And aren`t the ultra-fast Benulobiweed ships, the Imperial Courier Battleship and the better-in-all-and-everything SuperCobra Uber ships, to be shunned by the honest player?

I thought not. What was missing for me was a method of accurate pricing, that actually had some kind of relation to any ship`s performance. So I devised a method to derive a more realistic ship pricing from the ship stats. How large is its Cargo Bay? How fast is it? Can every piece of equipment be fitted in? And, most importantly, is it a ship that unites loads of different bonuses (SuperCobra) or maluses (Adder) at once?

I believe this OXP solves the problem of Uber ships and strange prices alike. Now, if you like to own an Asp MkII just for fun, you don`t have to pay twice the price of a Cobra MkIII to do it. If you want to fly the SuperCobra but it felt like cheating, not any more. Because now you`ll have to earn it - by paying 1.6 million Credits ...

In the early and middle stages of the game, you will know that if you buy a ship with more of something, you pay more. And the other way around. Oolite now realistically trades off cargo space against speed against handling and so on - giving you as the player transparent choices of what you are going for. You can work yourself up a continuous ladder of better and better ships.

I think that the Ship Pricing OXP could even open new Vistas of gameplay for Deadly & Elite veteran Commanders. Seen everything? Won against anything? Well, now you might buy and fight some Dreadnought Carrier with 1000 tons of Cargo, 10 Energy Banks & Missile Slots that can fly at 0.75 LS! You will just have to earn an unprecedented 60 million Credits first. So the game will still have to offer the Elite veteran in his Iron Ass SuperCobra something to strive for.

This is my first OXP, and the first time in the last twenty years that I tried my hand at something remotely resembling programming, so bear with me. If you find any bugs or performance issues that are not already listed here, feel free to PM me and I`ll see what I can do about it.


Revised Ship Prices
-------------------

Flying strut: 276 Cr
Adder: 29.500 Cr
Cobra MkI: 33.080 Cr
Moray Medical Boat: 61.840 Cr
Gecko: 70.760 Cr
Moray Star Boat: 80.300 Cr
Asp MkII: 120.960 Cr
Cobra MkIII: 150.000 Cr
Python: 177.650 Cr
Boa: 315.200 Cr
Tesoura: 432.000 Cr
Fer-de-Lance: 606.500 Cr
Boa Class Cruiser: 679.900 Cr
Anaconda: 714.150 Cr
Imperial Courier (New Vs.):
Imperial Courier (Old Vs.): 972.000 Cr
Benulobiweed Firefly: 1.110.400 Cr*
Super Cobra: 1.622.000 Cr*
The Ultimate Uber Ship: 345.610.000 Cr**

* Revised pricing not yet implemented
** Fictional ultimate Uber Uber ship