Notes on the Market and suggestions for improvement



  • Presumably the buyer would always pay the fee?, otherwise setting sale prices would be awkward and it would be impossible for new players to get their first credits.

     

    Would it work like this?:

    (using an example cost of 0.01 credit per unit per room, which still seems too high for some resources eg: energy)

     

    Alice creates buy order : 100 power for 1 credit each

    Bob sees that order and sells 100 power to it from 5 rooms away, he receives : 100 * (1 - 0.01 * 5) credits

    in the transaction Alice pays 100 credits, 95 of which go to Bob and 5 of which are sunk into the market.

     

    or with sell orders:

    Bob creates a sell order: 100 power for 0.95 credits each

    Alice sees this order and buys 100 power from it from 5 rooms away, she pays 100 * (0.95 + 0.01 * 5) credits

     

    That's the only way I can think of that a credit transaction fee could work, it would change market orders so that the cost is the same regardless of whether selling to a buy order or creating a sell order, (other than order creation fee), which would be a significant change compared to the current system where the order creator pays a credit fee and the order completer pays an energy fee.

     

    pros:

    unifies market transactions to using a single currency (credits) instead of the two currently used (credits and energy)

    simplifies the market somewhat, since it would no longer be necessary to calculate the effective cost of a deal due to energy fees, can just calculate the actual cost

     

    cons:

    breaking change

     

    neutral:

    cost of transactions no longer tied to the value of energy.

    makes cost of market transactions symmetrical.

     

    side note: 

    an idea to allow a more global market while still applying some cost to it might be to have a power creeps special ability be to complete a market order with resources in their inventory, (since this would allow high level players to send a "trader" power creep towards the best price and pay lower fees at the cost of the cpu used to get the power creep there), they wouldn't be able to create orders just complete existing ones.

     


  • Culture

    It would also depend on where the fees are taken from, is it from the player's current credits, or is it part of the transactional credits. People still need to get their initial credits.

     

    There has also been talks of a building which takes some resource, and condenses it down to some form of RESOURCE_CONDENSED_* . It's a special building which condenses 1k of something down to 1 RESOURCE_CONDENSED_*.

    This way the transfers could also be made cheaper.

     



  • The problem is not Credits or Energy.  Energy is a good way to charge the "Transport Fee". And as @Dissi points out, what about players that do not have Credits?  Leave it with Energy for the Fee ... just make it the same for all Distances.

    The concept of a "Regional Market" is missing the fundamental fairness that all Players should feel. I know that I feel slighted because I am a new player and pay MORE for each transaction and also LOOSE the tiebreaker on who gets a transaction based on Distance. When you put those two factors together, the Game is making a statement that "New players are being put at a DISADVANTAGE BY DESIGN". I think/hope that was not intended by the Developers and is a bad message to be putting forth even accidentally.

    The problem is using Distance as a metric for the Fee. Distance is a problem because it is a by-product of a player's relative "newness" to the game. You might say, "A New player can move." That would be short-sighted because to move closer to established players when new means to put yourself in greater threat of being attacked by other more established players.

    An additional problem I have run across recently (as I experiment more with the Market) is that NPC terminals pay more if they are near to Old Players than that of New Players. Another Disadvantage put upon location and therefore the New Player. And again, because I am farther away, the Old Player beats me to the Sell/Buy because of the Distance Tie breaker AND gets to pay less for the transaction.

    The Transaction Fee should just be based on the quantity of materials, NOT the distance.

    I would be in favor of each category of Minerals being a different fee. The game could charge the first tier fee price for One Letter Minerals, then higher Fee for Two Mineral items, then more for Three and so on.

    As with any game mechanic, they will be implemented and adjusted to foster an environment of "Fairness" to all players. The Market is a cool idea. It just needs adjustment now that more people have "tested" it and understand it better.

    Here is my proposal to make Adjustments to the Market:

    1. The Transaction Fee will continue to be paid in Energy as is done now (no change).
    2. The Distance Calculation will be removed from the Transaction Fee calculation and just be based on Quantity.
    3. --> Optionally, decide if the "Heavier Molecules" are charged a higher Transaction Fee (as described above). This again would be the same for all players.
    4. The "Tie Breaker" for multiple same-tick transactions will be changed to use GCL Progress (total GCL Points) with the LOWEST winning (instead of Distance).
    5. Energy should be charged a substantially lower Transaction fee since it is, in essence, a "Zero Mineral" commodity.


  • @XyzzyPrime You do know that the world map "wraps" around the edges for transaction fees?

    Technically speaking every player regardless of how new they are will find themselves in "effective" range of the same number of rooms. The only arguable difference is that the players in the center are more developed which makes the center have a higher concentration of active market players. However, this aspect is debatable.

    The center may have a concentration of "active" market agents, but because those agents are developed they don't import resources, they only export. So the center doesn't actually trade internally meaning there's no distance benefit for being in the center. The only difference is that the developed players usually export finished minerals where the transaction cost is less relevant in reference to quantity while the new players usually trade in energy/base resources.

    From a trade perspective, the best circumstance right now is to actually be a developed player on the map edge since that puts you closest to your "clients".

    Once again, I don't think removing the influence of distance on market trading will have the result you expect. It won't make it fairer at all.

    It's the same problem as in the real world. If there were no trade barriers and all trade was completely free, the well developed efficient economies of the world would dominate the market and drive the less competitive economies out of business. We see this happening in many free trade areas such as the EU.

    If you remove the "regional model" and make the game market global, the only effect is that a few efficient economies (top players) will dominate the market. Top players have drastically lower production costs. They use fewer, cheaper creep parts and less CPU to "produce" more minerals. They will always be able to offer lower prices than the rest.

    Excluding a global level conflict, if the market is global, it will be dominated exclusively by the top players. At least with this model, everyone has a decent chance of dominating his local market.


  • Culture

    > The center may have a concentration of "active" market agents, but because those agents are developed they don't import resources, they only export.

    This is simply not true. There are plenty of buy orders open in the center, and lots of players use the market to balance resources. It may be more true for your "region" (SUN does have a below average number of buy orders for an alliance) but it's not true for all of the "center" rooms. I suppose it also depends on how big you consider a region.

    > From a trade perspective, the best circumstance right now is to actually be a developed player on the map edge since that puts you closest to your "clients".

    This is assuming you're an established player. The new players *are* the "clients"

     

    > It's the same problem as in the real world. If there were no trade barriers and all trade was completely free, the well developed efficient economies of the world would dominate the market and drive the less competitive economies out of business. We see this happening in many free trade areas such as the EU.

    Didn't you say not to bring politics into this?

    Joking aside, I think you're missing a huge point here. Having those developed efficient economies is exactly what the new players need. Until they are at GCL7 at a minimum they can not harvest enough stuff to create all their boosts, which means they have to buy them. They aren't trying to compete on the market in the same way players who have real economies are, they're trying to use the market to supplement the minerals they're missing so they can actually build stuff. This also isn't really peoples livelihoods, so if their profits aren't high enough it's not like they're going to "go out of business" or starve in the streets.

    For those reasons the transaction fees suck. They make selling energy basically impossible since the only other people they can sell it too don't have enough credits to buy it. Selling minerals to other players without having to spend a ton of energy isn't possible because those players have sources that are closer to them or just throw up buy orders to bypass the fees.

     

    >If you remove the "regional model" and make the game market global, the only effect is that a few efficient economies (top players) will dominate the market. Top players have drastically lower production costs. They use fewer, cheaper creep parts and less CPU to "produce" more minerals. They will always be able to offer lower prices than the rest.

     

    They also have the highest demand for their own products. Most top players are focused first on their own XGH2O supplies and then on the market itself.

    I do agree that removing the regional model completely would have some negative side effects, but I think in it's current form it is way too regional.



  • > I do agree that removing the regional model completely would have some negative side effects, but I think in it's current form it is way too regional.

    Fully behind you on that one. Adjusting the transport costs to increase trading volume makes a lot of sense. The market is indeed "too regional" right now. I'm just not in favor of completely removing the transaction cost. I feel the problem we have right now is just about how big the tradeable area is.



  • @Atavus, Yes I understand that it wraps. Still a Regional Market which is BAD for New Players.

    How will a few players "Dominate the Market"? If players have the same fees, then there will only be players that do more or less transactions. That is not dominating the market, it is giving the market liquidity. It would also make the Market prices more reflective of the costs to produce (energy, CPU, time, etc).

    Now with the Distance Penalty, the transaction fee is more of a factor in the Net Cost of the Order than what it actually costs to produce it. Which is not a good market factor.

    Another problem that is not being commented upon is the nature of NPC Orders in the Market. Based on the code, the NPC orders that are for the highest value are farther away from my location (specific example to the general problem). Therefore, they are cost prohibitive because of the Distance Penalty. Again, what is the thinking that Subsidies should go into a specific Region and not be available to everyone equally? The code in the Game is once more giving Old Players a benefit and therefore taking it away from New Players.




  • Let us not forget that the "Regional Model" has TWO parts that are a problem ... The Distance Calc AND the Tie Breaker for closer to the Order.

    The combination of these makes for the New Player being at a disadvantage. Period.

    Again, this issue needs to be viewed through the lens of what is best for New Players... or the whole game will collapse into just a few Old Players hanging out and it will eventually just implode.

    Every effort MUST be to cater to the New Player. At every turn, they MUST see that the Game is slanted to their advantage in some little way. Ties go to the New. Power Sources are spawned closer to New Players in some way ... so they can have a better harvestability and sell that on the Market to old players. There needs to be a symbiotic relationship with Old and New Players or the Game itself will just wind up with a small group. And then one by one they will leave also.

    The Developers are the only ones with direct access to know (I guess players could track it by scraping data) how many new players start then quit. In the "Real World" that is called Churn. If you do any research on Churn in a Subscription business (like SaaS aka this Game), then you will see that a Churn of just 5% per month means that the business is DOOMED. For a good explanation see: http://sixteenventures.com/saas-churn-rate and http://sandhill.com/article/saas-providers-growth-requires-proactive-customer-retention/ 

    So back to the Game ...

    Here is the Developer's problem stated simply: If another player (for any reason) gets to complete a Market Order (wins the Tie) AND pay less to do it (Closer is less Trx Cost), INSTEAD of ME (the new player), then it is "not fair", certainly from the losing player's perspective. If you do not give each player an "in-Game reason" for the un-fair programming then the Developers are being "un-fair by design". On the other hand, if the Developers make the intention, stated and in the code, to give the advantage to a specific player type (as in New Players, in this case) then maybe it will be OK. New players will see the perspective of being appreciated and Old Players will understand and know that it is best for them as well to have more players in the game.

    There are two fundamental goals with the Market: 1) exchange Minerals to help with the player's game development (boosts), and 2) the Token purchase.

    The second objective, with the rules as they are currently implemented in the code, means that the Old Players are the only ones that can possibly get that Token and ALWAYS WILL BE. Someone of you that is smarter than me can do some Math.calculations and figure out how many Sources and Energy harvested and time it will take to generate the 2.5 Million Credits to get a Token. But the answer is obvious that only a VERY small number of the Old Players will achieve it. Also, it will take an active Market made up of thousands of New Players to generate the transactions needed. Or the Developers will just make NPC terminals have enough transactions to let those same Old Players get a Token every now and again.

    This game needs to grow to be successful. At every turn, the Developers MUST cater to the New Player: In the Market; In the CPU time available (again slanted to the Old Player, another topic); In long-term Source availability (rooms able to be defended with Towers because of GCL, another topic); Etc.

    There is only one question which needs to be answered in each decision on which way to do something in this game: "What is best for the New Player in this case?"

    It is clear that the answer for this discussion about the Market is, "No Distance Transaction Penalty and Ties go to the lower GCL".

    IMHO.

    BTW, What is the Churn for Screeps? 😉



  • Maybe we just need a different kind of equation.

    I gather that the penalty for trading over medium distance is exorbitant, but we want to have differentiated areas of competition to make the game interesting and make it difficult for one player to dominate by virtue of their size / efficiency / market manipulations.

     

    I recommend something like this "logistic curve" aka the natural population curve: d => 2 / (1+150*Math.exp(-0.25*d))

     

    Based on tedivm's sheet here's the result: https://docs.google.com/spreadsheets/d/1x0eHimCDwwcbEduv43JE56APGhlqCIon5wkcLOO6NY0/edit?usp=sharing

    EDIT: of course this is pretty close to what we have today, but that's just to illustrate the options. 

    TL;DR - pick a radius for free/cheap transfers and an efficient economy, then tune this to the desired maximum fee for long-range transfers


  • Culture

    I like the idea of a maximum fee (or a point with increases so minor they're negligible). The way this graph jumps lets people participate in both a regional and an international market, but with the international market fees not reaching insane numbers. The idea that its beneficial to trade with people close by is fine, but the "international" market shouldn't be so expensive that it's impossible to participate it.

    There's another reason why distance based transaction fees benefit new players. Most players when searching going to filter orders then pull in the lowest. If distance wasn't a factor they would just grab the lowest price, and in cases where two orders have the same price they would most likely grab the oldest order because that's how the data would get sorted by default. This means players that have old orders, which they keep extending, would have an advantage. Now in that same circumstance the people who have the advantage are the ones closer to you.

    So yeah, adopt a formula shaped like K_C's but with saner constants, or just stretch out the current equation to flatten it out a bit and we'd see a huge improvement.

    As for the credits instead of energy- I think it would be cool to make that an option, rather than force a switch from one to another. That way new players can pay with energy and get credits, and players with credits can actually purchase energy without it being useless due to spending more energy to get the energy than we get back.


  • Dev Team

    OK here is another idea of different approach. We redesign the entire regional factor and move the distance penalty on the order’s owner party rather than dealer party.

    We create a new order parameter called “order coverage“. By default it is equal to 100 rooms range (entire map), but you can set it explicitly by specifying in Game.market.createOrder as the last attribute:

    Game.market.createOrder(ORDER_SELL, RESOURCE_GHODIUM, 9.95, 10000, "W1N1", 25); // coverage 25

    Coverage is visible in orders list, via both API and UI. When you try to deal with an order with coverage not enough to cover the range between your terminal and the order terminal, you get ERR_NOT_IN_RANGE error on Game.market.deal method.

    The important point is that coverage changes the order creation fee. For example, fee% = coverage / 10, i.e. 10% fee by default for coverage 100, and 5% fee (current) for coverage 50. Coverage 10 goes without fee, giving an opportunity to create some tiny starter orders even to players without credits.

    So now the order owner should decide what market they aim at - global or local - create the order accordingly and pay their taxes. Other party (the dealer) should change their code to detect the coverage parameter, but they will not pay any energy cost anymore.



  • A penalty by another name (or calculation) still stinks.

    IF the Game needs to charge a "Tax/Fee" to make the economics of the Developers better, then just say that. 

    If not, then release the angst over the "Regional Model" or as I call it the New Player Market Penalty.

    There is currently a 5% Credit cost to place an order on the Market.

    Why not just make a simple 5% Credit cost to complete the other side of the order.

     - A Buyer [player purchasing from a createOrder(ORDER_SELL,...)] will pay 105% of the total cost of Units*Cr Price of Mineral. This Cr amont must be in the Terminal to make the deal.

     - A Seller [player selling to a createOrder(ORDER_BUY,...)] will receive 95% of the Units*Cr of the Mineral.

    Simple and no inherent Penalty to any players. All are equal and participate in the Market equally.


  • Dev Team

    This change is not about increasing the tax, but about getting rid of buying energy issue and lowering the coding entry barrier while keeping the fun aspect of the regionality. The market will lose huge part of its fun if it becomes plain equal.



  • Good statement, but is it true? Artem has been advocating for the Regional Model consistently. I have been advocating for Equal Access consistently.

    Everyone has been saying the system is flawed in some way and should be changed. 

    Let's check that theory here .... If you think it is "FUN" to have a New Player Penalty/Regional Market, then post here. Please put one of these votes so it is easy to see which side of the issue people are pro/against.

    +1 for New Player Penalty (aka Regional Model)

    +1 for Equal Accessible Market fees.

    Seriously, put it in your next post at the first line so we can get a show of hands.

    @Artem is +1 for Penalty/Regional

    @XyzzyPrime is +1 for Equal Access



  • Artem: (the dealer) will not pay any energy cost anymore

    At first I'm really hesitant to move the cost of doing business to the offer, but I think this greatly simplifies the mechanics of trading.

    When the dealer pays the transfer cost the true price of the product is abstracted away from the market. As well, the true price is constantly changing with the value of energy.

    The only downside is that Terminals which are offering sell orders must hold a larger volume. This is the same cost as today's buy order dealers.

     

    It might be that the formula change is less important than changing who pays the transfer fee.

     

    XyzzyPrime: A penalty by another name (or calculation) still stinks.

    But, is this true?

    +1 Regional Model (Against Endgame Market Manipulation)


  • Culture

    I really dislike this proposal. If anything it makes the problem we're complaining about worse, not better. This would make markets far more regional, and new players that are further away from established players (which tend to export lots of things) would be pretty much screwed by this.

    We keep talking about game mechanic changes, but I really think the issue is simpler than we're making it out to be- just tweak the formula so there is a max transfer fee that is based on the world size so it'll adjust dynamically as it grows. 


  • Dev Team

    Yet another idea - change the transaction cost to the following formula:

    energy_cost = resources_amount * (1 - Math.exp(-range / 30))

    It creates the following graph (dotted line - old, solid line - new):

    Thus energy trade will never be negative, but less and less reasonable as the range increases.



  • OK ... let me ask this, @Artem ...

    What makes it "fun" for a New Player to pay more and lose trades to a Regionally Advantaged Old Player?

    I am drawing a conclusion that this Game, as IRL, is about keeping the poor players poor, while the Rich Players get Richer.

    If Rich/Old Players have ANY advantage then that is what happens. The gap widens.

     


  • Dev Team

    We're not going to remove the regionality factor, let's please stop this discussion. Logistics, geopolitics, geostrategy, local areas of influence are all important aspects of this game. If we were to remove market regionality, we would have to remove creeps' time to live, claim range limit and all other map related mechanics. It'd be more productive if you commented on the proposed ideas rather than repeatedly argued about your own.



  • "It'd be more productive if you commented on the proposed ideas rather than repeatedly argued about your own."

    I could not have said it better myself.