Random market quantities

Discussion and information relevant to creating special missions, new ships, skins etc.

Moderators: winston, another_commander

Post Reply
Astrobe
---- E L I T E ----
---- E L I T E ----
Posts: 609
Joined: Sun Jul 21, 2013 12:26 pm

Random market quantities

Post by Astrobe »

OXZ available here: https://drive.google.com/open?id=0B7mL1 ... k5ZdzNvTjA

What it does:

For all commodities except Gold, Platinum, Gem stones, Alien Items and restricted goods (slaves, narcotics, firearms):
  • Quantities are fully random.
  • Quantities are capped to 30TC (instead of 127 by default)
  • Average prices are increased by 1 Cr
But Why?

To make trading less predictable (buy computers here, go over there and sell them then buy furs...) and therefore more interesting. This OXZ is really for people who like trading, as you'll spend time comparing prices and checking quantities in order to optimise your profits in each system.

Lowering the quantity cap is necessary to make the full randomization effective while not using a fully scripted solution (if you look into the OXZ, you'll see a single configuration file), for the simple reason that the average quantity will be around half the cap; with the default cap it gives about 64TC, which produces too rarely situations where you can't sell or can't buy enough.
The 1Cr increase is there to compensate a bit for the extra travelling. But you have to be aware that your Credits/Minute rate will drop a bit, as you'll sometimes/often have to dock to multiple stations in order to sell/buy all your cargo capacity allows, or even in some cases leave the system with unsold items.

It is recommended to have OXPs that add stations to system, otherwise this OXP is probably just a PITA:
  • Your Ads Here for the Constore. Note that this one has its own market definitions, which my OXZ doesn't touch.
  • Additional planets with extra stations for additional planets. The extra stations inherit the 30TC/good caps, but it computes its quantities based on the main station quantities. Often, quantities go 3 figures for some unclear reason. If you have a large cargo bay (100+ TC), it might be the chance to fill your belly in one go.
  • RSS stations occasionally help.
  • Wildships, which often adds multiple Kyota stations.
Not all of them are required; actually, Wildships by itself should provide enough stations so that you'll rarely leave a system with unsold items (or with a half-filled belly).

Also "Market inquirer MFD" is probably a must have with this. You might want "Market observer" too.

The full randomization is probably very harsh for a fresh Jameson, as you may not even be able to sell your first cargo. I'd suggest to get "Starting Choices OXZ" and go for the easier starting scenario.
Spara's "market cooldown" OXZ is ironically not recommended with mine. "Ironically" because I started this OXP by hacking it. By the way, he is the author of many of the OXZ I've mentioned.

I've tested this mostly while flying a Cobra I, which has a relatively small cargo bay (10TC). I'm interested to hear how well it works with medium cargo bay ships (20-40TC) and if it's still viable with larger bays (100+ TC).
User avatar
Cholmondely
Archivist
Archivist
Posts: 5365
Joined: Tue Jul 07, 2020 11:00 am
Location: The Delightful Domains of His Most Britannic Majesty (industrial? agricultural? mainly anything?)
Contact:

Re: Random market quantities

Post by Cholmondely »

Astrobe wrote: Sat Oct 01, 2016 3:31 pm
This is not available without a "Google Account".

Any chance of uploading it somewhere more useful? (...wiki?)
Comments wanted:
Missing OXPs? What do you think is missing?
Lore: The economics of ship building How many built for Aronar?
Lore: The Space Traders Flight Training Manual: Cowell & MgRath Do you agree with Redspear?
Astrobe
---- E L I T E ----
---- E L I T E ----
Posts: 609
Joined: Sun Jul 21, 2013 12:26 pm

Re: Random market quantities

Post by Astrobe »

Cholmondely wrote: Fri Sep 15, 2023 7:47 am
Astrobe wrote: Sat Oct 01, 2016 3:31 pm
This is not available without a "Google Account"

Any chance of uploading it somewhere more useful? (...wiki?)
What do you mean "without a Google Account"? Everyone has to have a Google account... JK.

This was probably one of the first mods I made, and forgot eventually. It's a simple tweak of the default trade-goods.plist at that time (probably it has changed since then). I reproduced it below. If you really want to use it, I can send you the OXZ.

At the time my focus moved to Minetest modding, I was using the Risk-based economy mod instead and was considering writing a market mod that would implement deterministic (no randomness) markets with complex cycles (there are a bunch of params like pop count, planet size, distance from sun that can be used to parameter sine curves that can be added to create complex variations), which would be more actionable. The deterministic part would have been key, as it would have allowed to consult the state of any system from anywhere - but of course, some of the cycles driving the markets would have been short enough that the prices had changed by the time the player gets there (and/or the market UI could also give the values for a date slightly in the past to account for information propagation time).

Code: Select all

{
/* Strictly, commodity names should be prefixed oolite-, but for
 * compatibility with older OXPs, keep the older names. OXP
 * commodities should be prefixed as usual. */
	"food" = {
		"name" = "[commodity-name food]";
		"classes" = ("oolite-consumer","oolite-edible","oolite-farming");
		"capacity"=30;
		"quantity_unit" = 0;  // 0=t
		"peak_export" = 7; // Poor Ag
		"peak_import" = 0; // Rich Ind
		"price_average" = 60; // decicredits
		// fraction of average ~= 2.75 credits
		"price_economic" = 0.55;
		// fraction of average ~= 0.2 credits
		"price_random" = 0.04;
		"quantity_average" = 15; // gets rounded
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 1.0;
		"sort_order" = 100;
	};

	"textiles" = {
		"name" = "[commodity-name textiles]";
		"classes" = ("oolite-consumer","oolite-wearable","oolite-farming");
		"capacity"=30;
		"quantity_unit" = 0;  
		"peak_export" = 7; 
		"peak_import" = 0; 
		"price_average" = 81;
		"price_economic" = 0.18;
		"price_random" = 0.09;
		"quantity_average" = 15; 
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0.25;		
		"sort_order" = 200;
	};

	"radioactives" = {
		"name" = "[commodity-name radioactives]";
		"classes" = ("oolite-dangerous","oolite-mining");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 241;
		"price_economic" = 0.19;
		"price_random" = 0.06;
		"quantity_average" = 15; 
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0.75;
		"sort_order" = 300;
	};

	"slaves" = {
		"name" = "[commodity-name slaves]";
		"classes" = ("oolite-restricted","oolite-living","oolite-slaves","oolite-salvage");
		"capacity"=32;
		"quantity_unit" = 0;
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 152;
		"price_economic" = 0.45;
		"price_random" = 0.40;
		"quantity_average" = 9.75; 
		"quantity_economic" = 1.10;
		"quantity_random" = 1.59;
		"legality_export" = 1;
		"legality_import" = 0;
		"trumble_opinion" = 0.01;
		"sort_order" = 400;
		"comment" = "[oolite-commodity-illegal]";
	};

	"liquor_wines" = {
		"name" = "[commodity-name liquor_wines]";
		"classes" = ("oolite-consumer","oolite-edible","oolite-farming");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 301;
		"price_economic" = 0.24;
		"price_random" = 0.05;
		"quantity_average" = 15; 
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0.95;
		"sort_order" = 500;
	};

	"luxuries" = {
		"name" = "[commodity-name luxuries]";
		"classes" = ("oolite-consumer","oolite-luxury");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 912;
		"price_economic" = 0.12;
		"price_random" = 0.01;
		"quantity_average" = 15; 
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 1.25;
		"sort_order" = 600;
	};

	"narcotics" = {
		"name" = "[commodity-name narcotics]";
		"classes" = ("oolite-consumer","oolite-dangerous","oolite-restricted","oolite-medical");
		"capacity"=32;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 0;
		"price_average" = 512;
		"price_economic" = 0;
		"price_random" = 1.0;
		"quantity_average" = 32; 
		"quantity_economic" = 0;
		"quantity_random" = 1.0;
		"legality_export" = 2;
		"legality_import" = 0;
		"trumble_opinion" = 1.05;
		"sort_order" = 700;
		"comment" = "[oolite-commodity-illegal]";
	};

	"computers" = {
		"name" = "[commodity-name computers]";
		"classes" = ("oolite-business","oolite-shipyard","oolite-technological");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 828;
		"price_economic" = 0.24;
		"price_random" = 0.01;
		"quantity_average" = 15; 
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 800;
	};

	"machinery" = {
		"name" = "[commodity-name machinery]";
		"classes" = ("oolite-business","oolite-technological","oolite-machinery");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 570;
		"price_economic" = 0.14;
		"price_random" = 0.03;
		"quantity_average" = 15;
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 900;
	};

	"alloys" = {
		"name" = "[commodity-name alloys]";
		"classes" = ("oolite-business","oolite-shipyard","oolite-metals","oolite-salvage");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 398;
		"price_economic" = 0.03;
		"price_random" = 0.16;
		"quantity_average" = 15;
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1000;
	};

	"firearms" = {
		"name" = "[commodity-name firearms]";
		"classes" = ("oolite-dangerous","oolite-restricted","oolite-military","oolite-weapons");
		"capacity"=32;
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 692;
		"price_economic" = 0.26;
		"price_random" = 0.02;
		"quantity_average" = 1;
		"quantity_economic" = 32.5;
		"quantity_random" = 3.5;
		"legality_export" = 1;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1100;
		"comment" = "[oolite-commodity-illegal]";
	};

	"furs" = {
		"name" = "[commodity-name furs]";
		"classes" = ("oolite-consumer","oolite-farming","oolite-wearable","oolite-animalproduct");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 714;
		"price_economic" = 0.18;
		"price_random" = 0.18;
		"quantity_average" = 15;
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0.15;
		"sort_order" = 1200;
	};

	"minerals" = {
		"name" = "[commodity-name minerals]";
		"classes" = ("oolite-mining","oolite-business","oolite-rawmaterial");
		"capacity"=30;
		"quantity_unit" = 0;
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 120;
		"price_economic" = 0.11;
		"price_random" = 0.05;
		"quantity_average" = 15;
		"quantity_economic" = 0;
		"quantity_random" = 1;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1300;
	};

	"gold" = {
		"name" = "[commodity-name gold]";
		"classes" = ("oolite-mining","oolite-business","oolite-consumer","oolite-metals");
		"quantity_unit" = 1; // kg
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 388;
		"price_economic" = 0.04;
		"price_random" = 0.05;
		"quantity_average" = 9;
		"quantity_economic" = 0.39;
		"quantity_random" = 0.39;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1400;
	};

	"platinum" = {
		"name" = "[commodity-name platinum]";
		"classes" = ("oolite-mining","oolite-business","oolite-consumer","oolite-metals");
		"quantity_unit" = 1; // kg
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 718;
		"price_economic" = 0.04;
		"price_random" = 0.09;
		"quantity_average" = 13.5;
		"quantity_economic" = 0.52;
		"quantity_random" = 1.15;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1500;
	};

	"gem_stones" = {
		"name" = "[commodity-name gem_stones]";
		"classes" = ("oolite-mining","oolite-consumer");
		"quantity_unit" = 2; // g
		"peak_export" = 7;
		"peak_import" = 0;
		"price_average" = 196;
		"price_economic" = 0.07;
		"price_random" = 0.15;
		"quantity_average" = 6.75;
		"quantity_economic" = 0.26;
		"quantity_random" = 1.11;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1600;
	};

	"alien_items" = {
		"name" = "[commodity-name alien_items]";
		"classes" = ("oolite-alien","oolite-thargoid","oolite-military");
		"quantity_unit" = 0;
		"peak_export" = 0;
		"peak_import" = 7;
		"price_average" = 436;
		"price_economic" = 0.48;
		"price_random" = 0.03;
		"quantity_average" = 0;
		"quantity_economic" = 0;
		"quantity_random" = 0;
		"legality_export" = 0;
		"legality_import" = 0;
		"trumble_opinion" = 0;
		"sort_order" = 1700;
	};
}
Post Reply