Serialized Contract Commands: An Interrim Solution to the state of Contracts

In Summary: Right now, the contracts system is a hindrance. I suggest allowing players to create contracts by entering a correctly encoded String.

For example: a CONTC command, so you could execute CONTC ContractTitle-ContractDescription-BUY-H2O-500-ICA-20-HRT-5-FileFolders to immediately create a BUY contract draft with the name ContractTitle, with ContractDescription, pre-filled to buy 500 H2O @ 20ICA/u at HRT from FileFolders. Then, all the player would have to do is hit Send.

The currently implemented contract system was clearly designed to be future proof to handle a much more complex feature set, however due to the fact that none of these features are currently implemented, the contract system is uncomfortably cumbersome for the simple contract templates we do have.

Obviously, a feature-complete contract system would be ideal, but dev-time is limited as it is, so instead we need a solution that conforms to a few restrictions:

  • Requires minimal dev-time to implement
  • Doesn’t conflict with current or future game features
  • Doesn’t go afoul of the game’s automation TOS requirements (I.E. No asking for a contract API)

Of course, I am speaking as an outside without knowledge of how the game is programmed, but a command that decodes a string and pre-fills a contract draft should be the option that takes the least amount of time, as it should require no new graphical features, and only a small bit of code to translate it over for each contract type. It’s expansible, doesn’t conflict with existing game features, and allows external community tools and players to share contracts to other players quickly, without requiring API access. It doesn’t make any modifications to the existing Contracts system, meaning that no additional work would have to be done to implement the planned future features.

In the future, I intend to create some tools for my corporation that let us more easily coordinate regular logistical routes between our bases, and allowing my program to export multiple shipment contracts based on the remaining available space that player can just import directly into the game would be an immense boon. If it proves useful for my corporation, I intend to release it as a general community tool where we can share our ship itineraries and more effectively and efficiently ship materials.

Thank you for reading my ramble! This game is great and as a developer I understand the constraints preventing the small QoL issues from being reasonably fixed, I wanted to suggest the least obstructive solution I could think of!
Anyway, have a good timezone :slight_smile:

8 Likes

Also, ideally we’d be able to chain multiple contract strings in one command which would open a buffer for each contract (Since we can’t put multiple commodities in one singular contract).

Would be great for qol and player retention.

1 Like

I would love to see this implemented. Streamlining the contract process would add a lot to the game and might help me convince my friend to get back to playing with me.

1 Like

I’d like to extend that idea as a way to implement multi-material sales in a single contract without much additional UI.

Allowing us to paste in any formatted multi-contract or multi-buy orders would be great. Eve Online has something similar with their multi-buy tool. You can copy-paste right from a spreadsheet, which makes a tab and newline delimited format.

It aligns with the essence and spirit of the game, which encourages planning in out-of-game tools and spreadsheets. The average prun-player could definitely manage a paste-able format to make a contract (or a buy order, or an MTRAs). It’s not automating, but it does reduce drudgery.

As others have mentioned, I really think this sort of thing will reduce click-burnout, which contributes to the more experienced players leaving.

Doing bulk contracts in one web request would save the server a lot of work because the alternative is people opening new buffers individually and dozens and dozens of CONTDs (each requires several “save” clicks, so it is surely a lot of backend action going on!)

It saves dev time from making UI code, which is the worst part of game development. :wink:

I think leaning into the wonderful community and recognizing that tool developers could form some sort of “action strings” for the vanilla game to parse could open up easier ways for the developers to implement features like this one.

1 Like

Update to everyone who is following this post:

I have started work on a tool that will allow players to manage shipments outside of the game, and I have just finished my first functional prototype build of some of the intended features.

The specific mechanisms for encoding the shipment data into contracts is in place, which means that if this serialization mechanism was implemented into the game, players will be able to immediately start using it to store and deploy multiple-commodity shipment contract bundles.

Contracts rn make me want to open a contract on my own life. This would be great

4 Likes

i’m not even 10 days in and the contract system is already starting to wear on me. this would go such a long ways to making it less tedious

You have a link to the proto we can try and help troubleshoot for you?

As of right now, the primary features are not complex enough for me to have any real need for external testers.
However, once I have enough features implemented into my application, I’ll release it to the community tools discord server for download and testing, and if no bugs are reported, I can consider it ready for a major request.

Ok I am new and played Eve Online for 8 years so I seriously understand the challenge of CONTACTAGEDDON on a very real level.

We discussed this topic in our weekly meeting. Having a string that would require parsing on the server to create a new custom shipping contract is nothing else than an API, albeit an unusual one.

We do want a proper API with access tokens, rate limits etc. but don’t have the time at the moment to implement it.

An alternative that we came up with is to create a new command that takes all the necessary parameters for a shipping contract and it would pre-fill the respective contract UI. It would still be string based and these strings could be created by third party tools, but it would not involve the server. It merely fills out the UI components and the player would have to save that contract just like any other.

It would still be quite a bit of dev work though.

3 Likes

Yeah, a string that would require server-side parsing would be unnecessary and nothing more than an API (though in truth, isn’t everything? XD).

That being said, I don’t believe my suggestion was actually different from what your team came up with during the meeting! I don’t think there’s any particular reason for the parsing to need to happen server-side, as I made the example string follow the fields in the shipping template, so I would assume (as an outside programmer) that implementing the parsing itself would be as simple as splitting the string, and then applying whatever entry validators you already use for the contract fields to each of the segments, before creating and opening the draft.

I have no idea how much dev work is needed for the actual implementation of a new command and possibly buffer interface, so it’s probable that that’s where the work you’re talking about is involved!

Even just having the fields autofilled would be a massive time saver, especially in regards to recipient selection! I find that selecting a recipient for a contract (even an existing draft) is a bit of a pain, as you always have to scroll down when you enter a user as the dropdown appears below the lower edge of the buffer window, and you cannot send a contract until you have chosen your recipient from it, even if you type their username identically.
Having the ability to Paste → Save → Send just like that would help larger companies, a lot, not to mention the newly implemented governments as well, seeing as they now use the same contract system, tools like FIO would allow community tools to autogenerate things like repayment contracts for every party involved in supplying resources for upkeep cycles, for the government to then pass in a motion!

Out of curiosity, would spawning several buffers from one command be difficult (i.e. presently unsupported)? Allowing us to use one command to spawn multiple contracts in one go would be the cherry on top!

Anyway, thanks for giving my ideas a fair chance, it means a lot to me!

1 Like

You said you wanted a preview? Here you go! I’ve just finished up my Alpha 2 Release milestone, and you can download the binaries for your preferred platform here!

The alternative you describe here is how I interpreted the original proposal. I don’t want to presume to know how easy anything would be to implement, but if a string-based auto-fill feature is feasible, at least as a stopgap between here and a more fleshed out contract system, that would be valuable in my opinion. At the very least, I could edit a string with fewer clicks and duplicated keystrokes than the current system.

Not to deviate from the topic too much, but one of the most frustrating parts of the contract system for me is the inability to edit quantity of a saved contract template and have price update to match the same price per unit. I sell a lot of the same stuff but in different sized orders, which requires me to almost entirely recreate the contract template for every transaction. The nice thing about a string system would be that, even if the string requires total price instead of price per unit, it would be pretty trivial for the community to put out a tool that would generate strings maintaining the same price per unit with different quantities.

3 Likes