Custom Contracts

Hey! We’d like to pick your brains on one of the upcoming topics we’ll tackle in the game’s development: custom contracts. What that basically means is that you’ll be able to create your own contracts from a “construction kit” of conditions, then send your contract draft to another player and have them accept or reject it, or counter-suggest a new one.

So without making more specific assumptions for now, tell us what you’d like to be able to do when creating your own contracts. Which conditions would you like to have available? Which general contract settings (e.g. “reoccuring”)? And of course anything else that comes to mind related to the topic.

As usual we’ll be reading every comment and highly appreciate your input! :slight_smile:

2 Likes

Maybe this doesn’t exactly fit, but: Pay outstanding debt and return outstanding shipments to owner on COLIQ.

So if a new player has a shipment and they COLIQ, the shipment is returned to its owner on the nearest planet. Or if the new player owes money, money is taken out of their account until they’re broke or the contract is paid. Then they COLIQ.

It would be nice to have barter contracts, where materials are exchanged against materials, without credits invloved. I would also like to see donation contracts, where one offers materials or credits without asking for anything in exchange. And the converse of donation contracts, the request contracts where one requests materials or credits without anything in return. This kind of contracts would simplify the exchanges among members of a corporation. Most already emulate the donation contracts on local markets by setting ridiculous prices, like sell 1 DW for 100K AIC or buy 183 LST for 0,01 AIC.

2 Likes

To continue on the contracts it would be nice to mix different materials and credits in the same contract, and also have several steps in the contract with time limits for each step. For instance, Step 1: Alice has to deliver to Bob 120 AL, 10 HE and 10 STL in at most 2 days. Step 2: Bob has to deliver to Alice 40 BHP in at most 6 days after Step 1 fulfilled. Step 3: Alice has to pay Bob 24 000 AIC in at most 2 days after Step 2 fulfilled. The example above corresponds to a real in-game situation. Bob runs a HWP and Alice wants to purchase 40 BHP from him. But she has to deliver the inputs to Bob (120 AL, 10 HE and 10 STL). After her order fulfilled, she pays Bob only for HWP time (24 000 AIC).

In the example above, one could split Step 1 into 3 steps, one for material type. Parhaps it’s easier to code then.

One could follow the following principle for the exchange contracts. There would be one or several steps. Each step needs one of the contractors do deliver something to the other one, credits or materials. If it’s materials, then a planet has to be specified. The planet can change from step to step. Each step may or not require several of the preceding steps to be fullfilled. Each step has a time limit. Time is counted either from the closure of the contract if there are no prerequisites, or from the moment the prerequisites have been met.

In the example above it could be:

Step 1: Alice has to deliver to Bob 120 AL on Deimos. Duration: 2 days from the start of the contract.
Step 2: Alice has to deliver to Bob 10 HE on Deimos. Duration: 2 days from the start of the contract.
Step 3: Alice has to deliver to Bob 10 STL on Deimos. Duration : 2 days from the start of the contract.
Here steps 1,2 and 3 are independent and can be completed in any order.
Step 4: Bob has to deliver 40 BHP to Alice on Deimos. Prerequisites: steps 1,2 and 3. Duration: 6 days counted from the moment the steps 1,2 and 3 have been fullfilled.
Step 5: Alice gives Bob 24 000 AIC. Prerequisite: step 4. Duration: 2 days from the moment step 4 has been fullfilled.

This kind of systems allows a lot of flexibility and can encompass many situation. I will give some examples below.

Example 2: One step contract. Step 1: Alice has to give Bob 100 000 AIC. Duration: 3 days.
This is just a donation.

Example 3: Step 1: Alice has to give Bob 127 569 AIC. Duration: 3 days.
Step 2: Alice has to deliver to Bob 27 FE on Phobos. Duration: 3 days.
Step 3: Alice has to deliver to Bob 11 O on Deimos. Duration: 3 days.
In this example Alice is about to leave the game and gives to her friend Bob some of her assets.

Example 4: Step 1: Alice has to deliver to Bob 100 SIO on Phobos. Duration: 3 days.
Step 2: Bob has to give to Alice 5 000 AIC. Duration: 3 days.
This is a usual trade contract, like on LM.

Example 5: Step 1: Alice has to deliver to Bob 100 SIO on Phobos. Duration: 3 days.
Step 2: Bob has to give to Alice 5 000 AIC. Prerequisite: step 1. Duration: 3 days after step 1.
This is almost the same trade contract, but merchandise first. There is also the variant with money first.

Example 6: Step 1: Alice has to deliver to Bob 183 LST on Nike. Duration 3 days.
Step 2: Bob has to deliver to Alice 200 RAT on Deimos. Duration 3 days.
This is a barter contract. But there are 2 different planets involved. Alice has her LST on Nike, but needs the RAT on Deimos, not Nike. Here step 1 and 2 are interchangeable.

Example 7: Step 1: Alice has to give to Bob 10 000 AIC. Duration 3 days.
Step 2: Bob has to give to Alice 10 272 NCC. Duration 3 days.
This is actually a currency exchange contract.

Example 8: Step 1: Alice has to give to Bob 100 000 AIC. Duration 2 days.
Step 2: Bob has to give to Alice 120 000 AIC. Prerequisite: step 1. Duration: 20 days after step 1.
This is a loan. Bob borrows 100 000 AIC from Alice and has to return it with interests 20 days later.

Example 9: Step 1: Alice has to deliver to Bob 1000 MCG on Nike. Duration 2 days.
Step 2: Alice has to give to Bob 500 AIC. Duration 5 days.
Step 3: Bob has to deliver to Alice 1000 MCG on Harmonia. Prerequisite: step 1. Duration: 3 days after step 1.
This is actually a shipping contract in disguise. Alice wants Bob to ship her 1000 MCG from Nike to Harmonia in 3 days, and pays him 500 AIC for that. But it allows more flexibility for Bob than a usual shipping contract. For instance, it can happen that Bob already has his own 1000 MCG on Harmonia. So he could deliver the MCG on Harmonia to Alice from his own reserve, and come for the MCG that Alice gave to him on Nike much later.

Example 10: Step 1:Alice has to give to Bob 20 000 AIC. Duration 2 days.
Step 2: Bob has to deliver to Alice 1000 TUB on Phobos. Prerequisite: step 1. Duration 15 days after step 1.
Step 3: Alice has to give 80 000 AIC to Bob. Prerequisite: step 2. Duration : 2 days after step 2.
In this example, Alice, who is also the governor on Phobos, orders 1000 TUB to Bob, who has several glass furnances. The TUB are needed for POPI. The total cost for Alice is 100 000 AIC. But Bob wants part of this sum to be paid in advance. Because you know, 1000 TUB is a large quantity that would take a lot of time to produce, and it would not be easy to sell on the CX if Alice breaks the contract.

Example 11: Step 1: Alice has to give to Bob 5 000 AIC. Duration 2 days.
Step 2: Bob has to deliver to Alice 100 LST on Deimos. Prerequsitite: step 1. Duration: 2 days after step 1.
Step 3: Alice has to Deliver to Bob 50 BSE on Deimos: Prerequisite: step 2. Duration: 6 days after step 2.
Step 4: Bob has to give to Alice 40 000 AIC. Prerequisite: step 2. Duration: 6 days after step 2.
This is a manufacturing contract. Alice runs some PP2 on Deimos. Bob want to order her 50 BSE.
Alice has the AL for that, she’s on Deimos after all. But she does not have enough LST, and Bob has to provide her with his own LST. However, Bob does not trust Alice enough, and wants a collateral for his LST. Thus step 1.

As one can see, a layered contract system as described here can cover almost all kind of situations.

6 Likes

Some contract elements I think are essential:

  • escrow; items are fulfilled but not delivered until both parties are fulfilled. If both sides not fulfilled, contract fails.
  • partial fulfillment: eg a large order can be fulfilled incrementally as/when additional items are fulfilled. This would allow large open orders e.g. 100k DW. (This could also be a standing procurement contract e.g. I’ll always buy DW from you for xxx AIC)
  • loan agreements: financial contracts allowing the swap of a sum of money for agreed interest repayment. Followed by a bond market mechanism!
6 Likes

Hi Counterpoint!

Assuming a fairly vanilla contract editor where you string A + B + C together, what I’d really like to be able to do are the following:

  1. Mark certain actions as being “automatic”. Kinda like how auto-provisioning already works. So I could make a sales ad that marks the “payment” as being automatic, meaning the second the other person accepts the ad the money is subtracted (if available in their wallet). This is great both for convenience and also for sharing the true intentions behind the ad (pay me in advance!).

  2. Repeating contracts. Pretty much as you imagine them. I make tons of reoccuring ads with my partners, I’d love to have repeating ads.

  3. A manual two-way vote to abort any contract. It’s kinda silly that both sides can agree that a contract was a mistake and yet they are forced to fulfill it or have a breach on their hands. This becomes especially important if contracts can repeat.

  4. Trigger conditions. Basically when you pick different parts to put in your contract, such as “pay money”, “deliver commodity” and so on, you can also pick options such as “after breach:”, “after 5 days:”, “after completion:”. Any contract stuff under these triggers only happen if the trigger has come true. The most obvious example could be to use an “after breach:” clause and then “automatic payment of 5000 NCC” afterwards.

5 Likes

Recurring is definitely the most desired feature. So the option “every [x] days” would be awesome.

Also sometimes you might not want a rigid timeline, so there could be the option “[x] repeatable”. That would make it so that once the contract it finished, one side or both sides get the button “[repeat]” which will then re-open it fresh (or create a copy of it) potentially pending the acceptance of the repeat by the other side. So you can repeat it as much as you want, depending on when resources/money is available.

Another awesome thing would be an “open ended bucket”-contracts, where it just says, “I buy/sell [up to x] resources for [y] per unit”. And then contracts is just kept alive for [z] days. Whenever one side has any amount of resources available they can press the “dump 1/5/10/100” button in the contract and it dumps that amount of goods into the contract (maybe even with drag’n’drop into the contract?). The contract is fulfilled when the time is up or the max amount of resources has been dumped.

1 Like

Good idea. This would be very useful indeed.

1 Like

I would love to see some prebuilt breach protection clauses you could add in which take effect automatically upon breach. Usually when a company breaks a contract without the other parties consent there are clauses written in the contract to penalize the party which failed to deliver.

In my opinion, the reputation hit does not dissuade breaching contracts and the only in-game option to interact with the party which wronged you is to blacklist them, which I feel isn’t always the right recourse in the event of a breach.

This would require balancing on the penalties as I don’t think a company should be completely wiped out if they have a bad week and mess up logistics but it should open up a nice avenue for p2p interaction I think.

I fill like the escrow and the automatic payments upon breach go against the spirit of the contracts in PrUn. In PrUn the constracts are about trust and risk. If one of the contractors wants to scam the other one, nothing should prevent him from this. The only thing the scammer loses is his reputation. By reputation I mean not only the in-game reliability rating, but also his standing among the other players. A scammer could break several contracts, but the player community will end up by knowing about him. With an escrow system and automatic payments upon breach the game itself would somehow represent a neutral third party that would ensure the safety of the contracts. Do we want third parties in PrUn contracts? Actually there could be triggered clauses “upon breach” and penalties for the one who breaks. But these should not be automatic payments. If one breaks a clause then one would have to pay additional penalties if one still wants the contract to be considered as fullfilled on his side. But if one doesn’t want to pay the penalties, the game should not force him.

Perhaps if a contract involves a third party ensuring the safety of the contract, then there should be additional fees paid by the two contractors. These contract safety fees could be substantial, and would be an additional currency sink.

3 Likes

Oh as another one - the ability to create shipping contracts containing multiple items. Currently, if I want to send say, a week of consumables for my pioneers + settlers + technicians from the CX to a base, that’s a lot of contracts needing set up and it’s just simpler and easier for me to do the supply run myself. Being able to set up a custom contract to handle it all would be great.

2 Likes
  • Contracts that don’t actually fulfill until both parties have fulfilled their orders/goods/paid.

  • On-going contracts.

  • Loan contracts that involve interest payments.

  • Contracts where you put up collateral against a shipment, or whatever. If you breach the contract the other person has the option of taking in order Liquid Currency > Inventory > Liquidating buildings (they get the building parts from a used building).

  • Protections in various forms.

  • Refueling Contracts, this is a bit of a feature unto itself, but setup a contract to fly directly to another ship and transfer fuel or possibly inventory.

  • A way to delete the contact between two people, if neither actually want to fill the conditions.

Just a few thoughts

2 Likes

It would also like the possibility to exchange ships through contracts. See my post on this topic:

There should also be the possibility to cancel or amend an ongoing contract if both parties agree. Like change the duration, the amounts, add more clauses, etc.

1 Like

I guess this is an obvious one:

As well as sending contract to another player, if contracts could also be sent to a Corp, I suppose your own would be most likely, then anyone in that Corp could accept the contract.

Some great ideas in this thread. I like the escrow option, mutual abort, partial delivery/payment ideas, and multiple items.

2 Likes

Someone else mentioned escrow, so I’ll mostly just say that all of the user scenarios covered by Eve Online’s contract system should be considered (by that, I mean, accepted/rejected explicitly). I’d consider custom contracts useless if it doesn’t support escrow or collateralized shipping contracts… similar for personal/corporate contracts.

Great and promising development log. Wait for the customs contracts with impatience.

Something that could also be useful is to have a longer maximal contract duration. As of now, it’s 20 days. In some situations, loans in particular, it makes sense to have longer durations, perhaps as long as 60 days.

Tie corporate contracts into another feature - Corporate warehouses.

  • Ability for corporations to build a corporate warehouse
  • Ability to create open/ongoing corporate contracts open to any shareholder
  • buy contracts to fill the corporate warehouse: buy item X at price Y; max inventory level Z
  • sell contracts to withdraw goods from corporate warehouse: sell item X at price Y; min inventory level Z
    Joining a corporation would then also mean picking those corporations that have corporate warehouses on planets where you have bases, and that stock items you are wanting.
    It also means you don’t have to find an immediate partner for your LM contract, as the corporate warehouse acts as the other party.

Interesting idea. But who will pay for the buy contracts? If a company sells something to a corpotate warehouse through a contract, where does the money come from? As far as I know, there is no corporate wallet implemented.

Awesome dev blog.

In addition to targeting a specific user/company and, hopefully, a Corp, with a custom contract, will there been a means to post a custom contract ad?

Have you guys decided how this feature will split across different game licences? I hope TRIAL/BASIC could at least be recipients and editors of custom contracts.

Do you think LM use may drop as a result? Maybe this is an opportunity to open LMs to TRIAL users? I’ve posted before about the need to keep player numbers up in order to have an interesting, functional economy - well imo ofc.

1 Like