I’m developing a farming type game, and one of the big multi-player aspects of it is going to be trading. You can travel outside of your valley to a market where you can buy and sell with NPCs, but can also trade with other players. I want there to be player trading, but I am stuck on how it should be implemented. I don’t want a new player to be able to just get every crop seed, the best tools, and good animals the second they join from somebody who has already progressed really far in the game. I also don’t want somebody to be able to trade a lot of stuff for something like 1 stick. What should I do to make the progression of the game still there for new players, but also not make trading annoying to go through, so that it’s still a good method of obtaining foreign items?
Second, the way the game works, is that when you load up a new save, your valley will have a random set of 3 crops, 2 random trees, and about 5 random animals. If I were to add new items like those examples, how should I implement it so that not only new players can obtain the items, but also older players who don’t want to reset their saves?
For your first question, maybe implement some sort of “level” system. Seeds and tools could require a certain level to be attained or used, and won’t be tradable to players who haven’t reached that level.
I like this idea. Some of the items like tools can be bought by NPCs, so I think the only real purpose for trading would be getting items that your valley didn’t come with. Example: Your valley came with goats, elk, cows, pigs, and rabbits. You could trade with another player who has chickens so that you can use them in your valley.
The thing your trying to prevent has a simple name, Boosting.
This can be cancelled by different tactics, one of them is leveling system for unlocking items.
But that does not cancel boosting entirely since unequal quantities of items may be traded.
Then something like “weight” or “value” could be a solution.
By giving a value to every item and making sure that the trade value is about equal insures no boosting.
Indeed, this is what comes to mind. RuneScape implemented this (in different ways) across the years. For their paid players it is removed, but free accounts cannot have a difference of value in trades between players of 25k (which is a really small amount for that game’s scale). This is dynamically based on a sort of stock exchange for all items, so the exact scenario wouldn’t work, but you assigning a trade-specific value to each item (either directly or behind the scenes) would be my preferred solution. That, in combination with the also aforementioned level system.
Having values to each item. I see games like JailBreak do this where there is a screen saying (Balance to Low) or for if your trading to much (Balance to High) this would be hard to implement but it would be worth it in the long run for your game’s economy.