Trade Update Progress/Discussion


#1

I’m trying to sit down and get this system done with a semi functional, theoretical concept model of how it’ll work.

Basically, I need ideas for what the crates should be (e.g. what categories they will be, how they will be related to the planets you find them on, etc.). I also need ideas for a basic model of the randomized mission generation system. I would appreciate any ideas, feedback, and suggestions :smiley:

EDIT: More accurately, I need the final product of this brainstorming to be the implementation of the trade system in word form, detailing what I need to actually program. I want to have something well thought out which I can just program.


#2

Crates could be a shulker box like they are now but with no items in them. They would just have the name in their lore or name tag thingy where it would say its contents.
Mineral Crates: Brown - # Tons of “mineral” (iron coal etc)
Gem Crates: Gray - # extremely rare “gem name” (viberanium, high grade uranium etc)
Resource Crates: Brown - # Tons of “Recource” (wood, stone, sand etc)
Food Crates: Green - # barrels of “food item” (Carrots, potatoes etc)

They would be only obtainable on certain planets for example “wood from arbusto” “sand from aecor or trunkadis” etc. They would cost different amounts of money and when turning in/selling it you would receive credits along with a small amount of points to level up.


Trade Missions:
When entering trade cities there would be a location to look at missions. Missions would by like “A mafia has ordered precious gems be delivered to -planet-. Their pilot mysteriously passed away and are looking for someone to take their place. You will receive -#credits- and -#points- for delivering them”. The missions would be randomly generated from these categories:
-Crate and reason: Gems for mafia, High Grade Uranium for power plant, Weapons to rebels, ship parts to factories etc
-Amount of crates for the above ^
-Location: Location generated by randomly choosing a trade city not on the same planet
-Amount of money and points recieved wich would just be a rate that would be multiplied by the crate type and amount of crates.
-Rate examples: Gems for mafia = 150 credits and 30 points / 1 crate

Random Trade Mission:
Deliver 100 crates of blaster rifles to Syre trade city “name” for 10,000 credits and 1000 points.


#5

Your post confused me a little, could you fix it a bit to match what we discussed on Discord?


#6

For every planet a certain type of crate will be assigned. Arbusto, for example, would have wood crates containing logs and/or other wood products. This would be where you buy the certain type of crates from.

When buying wood crates from arbusto you will have a list of planets where you can sell the wood. Lets say for the sake of this example the planets are: Orcus and Syre. These would be the most profitable planets to sell to. If you take 100 crates and sell at orcus the value of the wood crates on orcus would lower. Therefore Syre would be more profitable and desirable to sell at.

Then when you sell alot of wood crates to Syre, its price drops however orcus’ prices increase. This would not just be for 2 planets though, it would be for like 5 or 6 or even all of the planets without that recource abundent on it.

This would than just need to be coded for all the planets.

This is kind of what its like right now however you cannot go from one place to the other and back again for a steady profit. You would have to change the destination multiple times from this dynamic economy. And its more interactive because you need to plot different courses for hyperjumps and travel.


#7

Trade missions could be randimised for higher risk materials.

Randomization and plot:
-Go to nearest trade city. (arbusto for example)
-Go to trade mission area.
-Get a trade mission thats randomized like this: (Syre, 10 crates of diamons, 10k credits, 1k points)
-Location
-Amount of Crates and their type
-Amount of money recieved and poitns recieved upon delivery
-Fly to location given with crates recieved from trade mission villager (syre)
-Sell crates to their trade city trade mission villager
-Get points and credits

The amount of crates range from 1-25
The type of crates range from: (Each type of crate has its own cash and point rate)
-Diamonds (100C & 10P / crate)
-Emeralds (200C & 20P / crate)
-High Grade Uranium (500C & 50P / crate)
-Blasters (900C & 90P / crate)
-Thermal Detonaters (1000C & 100P / crate)


#8

Dynamic pricing is probably not a good idea, unless you somehow come up with a good algorithm for it. All missions are randomized. As mentioned in the linked issue, cities that are further away have better odds of giving good deals.


#9

Yeah Inflation and Deflation sounds like a bad Idea. Though I think the crates should be shulkers, as they are now, and their contents should be based on the planet’s resources. Example; Ocean planets sell salt (plants? [1.13]), Mineral rich planets sell minerals, etc etc.


#10

Alright I’ve thought about it for a while and came up with some ideas.

Shipping Mission System Concept

Crates

Crates come in block and item form. The item is a custom item which cannot be put in any inventory but a player inventory, cannot travel through pipes, cannot be picked up by hoppers, etc. It is acquired when getting shipping missions from NPCs. The block is a custom block which can only be placed on unextended piston heads. They can be removed either by breaking them or by triggering the pistons to make them all pop out so you can pick them up.

Types of crates

There is a fixed set of crate types, including:

Perhaps sub-types for some of these, such as oak wood crates etc?

  • Wood Crates
  • Gem Crates
  • Fuel Crates
  • Metal Crates
  • Gas Crates
  • Plant Crates
  • Food Crates

Crate Value

Each crate has a different value for each planet. This is a value from -1.0 to 1.0. If it’s under 0.0, the planet is an exporter planet for that crate type. If it’s above 0.0, it’s an importer. The farther from 0.0 it is, the more intense its value is.

For example: A planet with -0.15 for Wood exports small amounts of wood. On the other hand, a planet with -0.95 for Wood exports massive amounts of wood. The farther from 0.0, in this case the lower the number, the more it exports.

Likewise, a planet with 0.25 for Wood imports wood for modest credits. In contrast, a planet with 0.99 for Wood pays handsome sums for wood.

Notes:

  • With a value of 0, it neither imports nor exports.
  • This can all be balanced visually using a simple GUI program I can make.

Next I will post the shipping mission generation logic concept


#11

Perfect. This system sounds very solid. It also has a lot of room to add on and expand in the future so we wont have to re-due the entire thing. How ever i have one question where will you find the -1.0, 1.0 scale for each planets? Is the GUI you speak of a thing you can open with a command or from a certain type of block where you can go through the list of different items which gives you planets with negative and positive 1.0 values?


#12

(Emphasis added)
It will be a program, outside of Minecraft. A simple desktop application, most likely.


#13

This is the tough part. Here is a draft of potential mission generation logic:

Shipping Mission Generation

  1. Enumerate crates with positive value at the planet.
  2. Select randomly from the available crate types, putting higher weight to the ones with a higher absolute value (distance from 0)
  3. Procedurally generate a certain amount of missions, let’s say 9. Each mission will have a crate type and a destination planet.
  4. For each mission generated, search for planets that import the crate. Planets must have greater than 0.0 crate value and have at least one city.
  5. Order the potential selling planets randomly, using the absolute value as the weight (so planets which import better are more likely to be picked) (Uncertain about this part, maybe give them uniform chance?)
  6. Calculate the value for the mission based on the distance of the importing planet from the exporting planet, the crate value of the exporting planet, and the crate value of the importing planet.
  7. Calculate the cost of the mission based on the value.

Another idea is to have a time limit, so that the mission can only be completed for profit within a certain timespan.

Notes

  • Missions are regenerated hourly, if nobody takes one by the end of the hour it disappears.
  • If someone gets a mission, the mission is removed from the list of missions and the data is serialized and stored somewhere for future reference of the player completing the mission.

#14

this is a better idea so people have to do it right then and there increasing the risk


#15

I think there should SOMETIMES be a time limit, and if there is display it next to the mission details. Mostly just so I don’t have to ALWAYS rush it.


#16

(Emphasis added)
It will be a program , outside of Minecraft. A simple desktop application, most likely.

A lot of the player base might be wary of downloading programs outside of Minecraft - not to mention that some of their parents might not allow them to do so. It might be a good idea to also create an in-game plugin version for those people, although it might not look as clean and visually appealing as the outside program.


#17

It’s a program for me to visualize and balance it lol, not for everyone to use


#18

there should be more then on emission like to attack a ship or base that will fire auto turrets or to liberate a slave from a slave ship. also there should be missions like ex: our economy is beaking, u must lower the competition Recirments: destroy 3 AI or player colonist ships and a Warning: the ships may have escorts, be careful. and rewards and stuff


#19

Update
The basics of cargo crates have been implemented. They also have some new mechanics. You can’t place them adjacent to eachother, and you can place them on only sticky pistons.

Since you can’t place them adjacently, you need much larger storage system. That also requires more redstone. The idea is to encourage some extra innovation with ship building for the new system.

With sticky pistons, the idea is that you can’t accept missions if you do not have a ship with enough sticky pistons nearby. It gives a clear definition of what your ship’s cargo capacity is, since sticky pistons generally are not otherwise used on ships.


#20

I started making a desktop application for that… quickly decided it was overkill :joy:

I still like the idea of visualizing it, so I might make a simpler HTML/JS app for it, otherwise I’ll do it the old fashioned way with commands and text, but that’s boring!

(Referring to a system for setting the values of crates galaxy-wide)


#21

On second thought…


#22

OK, first off I really like this concept. The idea of newer, more redstoney storage system on my ship excites me. Maybe I missed this somewhere, but say I get murdered whilst on a cargo run, the pirate jacks my crates to complete the mission and make the money. How will they know where to go to turn the mission in?