Построение (частично) управляемой игроками экономики на основе спроса/предложения [закрыто]

У меня в голове есть грубая концепция торговой игры, и я не могу понять, что кажется элементарной математикой.

В моих городах/космических станциях/торговых постах действуют следующие правила:

  1. спрос и предложение ограничены
  2. цены корректируются в соответствии с ним
  3. игроки, а также торговцы NPC управляют ценами

Итак, идея состоит в том, что если X производит меньше еды, чем потребляет, то со временем цена на еду растет, а когда она почти пуста, она взлетает до небес. В то время как Y является нетто-производителем, и цена со временем падает. Это создает торговую возможность Y -> X, прибыльность которой зависит от того, сколько людей проходит по маршруту — если много людей торгуют Y -> X, тогда цены уравниваются.

Чтобы гарантировать, что игроки не вступят в тайный сговор, чтобы накопить еду за пределами X, ожидая, пока цены поднимутся, а затем продавая, торговцы NPC будут использовать самые прибыльные торговые маршруты, чтобы удерживать разницу в ценах и спрос в разумных пределах.

Я думал о размерах хранилищ и о том, как могут колебаться цены, но каждая формула, которую я придумал, не проходит несколько простых тестов. Например, если общее хранилище X составляет 1000 единиц, когда игрок приходит, он может просто купить 500, дождаться роста цены, а затем снова продать - прибыль. Очевидно, это не должно работать.

Я попробовал несколько поисков в Google, здесь и в Gamasutra, и хотя я нашел некоторые идеи, я не нашел того, что, как мне кажется, должно быть простой формулой.

Это связано с построением мира, но фокусируется на игроках и игровой механике, а не, скажем, на разработке экономики в романе. Возможно, он лучше подходит для RPG SE .
Это не РПГ, это стратегия. Да, он не подходит идеально, если только я не пропустил Game Design SE.
@Tom Звучит как экономика игрока в Eve Online. Может быть, сходить туда и посмотреть.
Я играл в EVE Online, и есть некоторые сходства, но в EVE Online экономика, включая цены, полностью зависит от игроков, а я хочу торговать расходными товарами (еда, вода и т. д.), которые покупают неигровые персонажи, а не по игровым персонажам.
@ Том: Game Development SE, кажется, хорошо подходит, не так ли?

Ответы (3)

Доставка

Взимать плату за перемещение предметов на склад и из него.

Налоги

Взимать комиссию за каждую транзакцию.

Разные цены

На самом деле люди предлагают разные цены на вещи. Если у вас есть 50 единиц А, за которые вы заплатили 1000, вы не хотите продавать 10 за 100 — вы теряете деньги. Но если вы заплатили 100 за 15 штук, то с удовольствием возьмете 100 за 10. В любом случае, если у каждого продавца разная минимальная приемлемая цена, то и итоговая цена разная. Таким образом, если вы покупаете 500 единиц, цена выше, чем если вы покупаете 5 единиц. Потому что вы платите цену 5 единиц за первые 5 единиц, а затем более высокие цены за большее количество единиц.

Вы можете заставить это работать либо с помощью forцикла с функцией ценообразования, где вы оцениваете каждую единицу по отдельности, либо вы можете усреднить цены. Петля более гибкая и точная, но средняя проще.

Price(500 of 1000) = 500 * (Price(at 1000) + Price(at 500)) / 2

или в более общем смысле

цена ( количество желанный , количество имеется в наличии ) знак равно количество желанный цена ( количество имеется в наличии ) + цена ( количество имеется в наличии количество желанный ) 2

Это будет работать лучше всего, если ваша ценовая функция является линейной. Если это что-то другое, вам может понадобиться более сложная математика, чем простое среднее арифметическое.

Арбитраж

Вы покупаете и продаете владельцам складов. Они не хотят продавать вам по тем же ценам, по которым покупают. Поэтому они покупают по одной цене, а продают по другой. Разница составляет их маржу или прибыль. Поэтому создайте коэффициент маржи, например, 1,1. Разделите цену продажи на коэффициент маржи, чтобы получить цену покупки, или умножьте цену покупки на коэффициент маржи, чтобы получить цену продажи.

Если вы покупаете, а затем сразу же продаете что-либо, вы всегда будете терять деньги таким образом.

Принимая это как наиболее практичный и полезный ответ.

То, что вы описываете, является ключевой реальностью бизнеса. Если вы готовы держаться за правильный инвентарь, вы получаете прибыль. То, что вы описываете, похоже на то, что называется «загнать рынок в угол». Вы скупаете весь рынок, ждете, когда спрос взлетит до небес, а затем получаете прибыль. Даже если вы не полностью захватили рынок, вам платят за ваши усилия!

Настоящий вопрос заключается в том, что делает город, когда Игрок с денежными мешками приходит в город и пытается скупить половину еды. Что это значит для каждого жителя города? Они продают продукты, которые им нужны на зиму? Если это так, цены могут резко возрасти, когда начнет падать снег. Или продают излишки, которые иначе бы сгнили?

Да, я понимаю это. Самый простой выход — положить суммы в экономику вне досягаемости игроков. Если в городе хранится 1 млн. еда, игрок, который может купить 1000, не может загнать рынок в угол — но в этот момент экономика больше не управляется игроком, цены не будут колебаться в сколько-нибудь значительных величинах и т. д. — я как раз ищу решение, которое город будет использовать, чтобы не допустить, чтобы его рынок был загнан в угол.
В вашем случае нужно смотреть на неочевидные затраты. Если бы я мог купить 1000 тонн хлеба, я мог бы (во всяком случае, ненадолго) купить хлеб на углу в своем городе, и цена, вероятно, выросла бы. Но когда я попытаюсь продать его, я, возможно, смогу получить хорошую цену за первые буханки, но их продажа снизит цены, возможно, ниже той, которую я заплатил. Кроме того, где я храню свой хлеб? Его едят крысы или воры воруют? Арендую ли я склад для его хранения? Каковы транзакционные издержки (оплата продавцам, транспортные расходы)? Достаточные другие затраты могут сделать его более нерентабельным.
Там есть отличная идея - сделать хранилище и доступное для покупки не одним и тем же числом. В этом месте может быть 1000 единиц еды, но не все они будут продаваться, особенно если производство ниже потребления. Я уже думал о транзакционных издержках, вместе это может решить проблему. Все еще ищу математические формулы. Я не могу быть первым, кто сделает экономическую игру. :-)
@ Том, ты также должен учитывать, что если у тебя 2000 игроков, возможность купить 1000 тонн хлеба действительно движет рынком. По отдельности они, возможно, не смогут загнать его в угол или сильно на него повлиять, но в целом рынком по-прежнему будут управлять игроки.
@ Том Посмотри на ЕВА. Они сделали именно то, что упоминает Марк. Есть целая каста игроков, которые только и делают, что находят товары по доступной цене в одном месте, скупают столько, сколько могут, прежде чем цена станет недоступной, а затем пытаются продать все это в отдаленном месте. (И вы не можете просто развернуть его на месте, потому что цены покупки и продажи разные)

«Например, если общее хранилище X составляет 1000 единиц, когда игрок прибывает, он может просто купить 500 единиц, дождаться роста цены, а затем снова продать — получить прибыль. Очевидно, что это не должно работать».

Эта часть вашего вопроса кажется довольно простой:

1) Цена, когда игрок приходит, является равновесной ценой, когда есть 1000 единиц. Если он покупает 1 единицу, должна быть рассчитана новая равновесная цена. Если он попытается купить 500 единиц, то повторите эту процедуру 500 раз, каждая единица все дороже и дороже. (Я знаю, что очень интенсивное использование процессора, может попробовать каждые 10 единиц или около того) [Я не знаю, каковы ваши исходные формулы для расчета равновесной цены, поэтому я не могу внести коррективы каким-либо разумным образом]

2) Меньшая процессороемкость - на рынке в любой момент находится только часть предлагаемого товара - скажем 1/20. Это максимальная сумма, которую игрок может купить за любой ход — следующий ход, следующая цена.

Сложность в том, что не существует простой формулы хорошего алгоритма накопления вещей для следующих ходов города. Все это основано на ожиданиях и предвосхищении действий других агентов.

(хотите ужасный, простой?)