@nikitafrolov132

Как сделать контролируемые обмены в онлайн-игре?

Имеется онлайн-игра, в которой можно собирать вещи разной ценности: обычный, эпический, легендарный. Самые дешёвые вещи — обычные, подороже — эпические, а самые дорогие — легендарные. Если вы собрали 10 вещей одинаковой ценности, то вы можете их обменять на одну вещь ценностью выше. К примеру, если вы собрали 10 вещей эпической ценности, то вы можете их обменять на одну легендарную вещь. После такого обмена пользователь может уйти в минус или в плюс, потому что 10 вещей ценностью ниже могут в сумме стоить дороже одной вещи ценностью выше или же наоборот. Пользователю может выпасть вещь стоимостью от 25% до 400% от стоимости обмена. Как можно сделать подобные обмены контролируемыми, чтобы кто-то мог уходить с этих обменов в хороший плюс, кто-то оставаться на нуле, а кто-то уходить в минус? Но самое главное условие, чтобы по итогу онлайн-игра была в плюсе с обменов.
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Karpion
Я не понял проблемы.

Где игроки собирают вещи? В процессе игры - подбирают с земли, берут с лута?
Я бы сделал так, что собрать можно только сырьё; а вещи - скрафтить самостоятельно или купить у соответствующих мастеров. Причём мастера делают вещи только когда у них есть сырьё; и цены на вещи-и-сырьё зависят от соотношения спроса и предложения.
Готовые вещи - можно снять с разбойников, но никак не с животных.

У кого можно "обменять 10 вещей одинаковой ценности на одну вещь ценностью выше"? У других игроков? У NPC-торговца?
(Кстати, тут лучше говорить не "ценность вещи", а "класс" или "категория".)

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

Я не понял фразу "10 вещей ценностью ниже могут в сумме стоить дороже одной вещи ценностью выше или же наоборот". Откуда вообще берётся понятие "стоимость"?

Я вообще советую не делить вещи на категории. Т.е. у вещей есть только цена в деньгах - для торговли; и сырьё + мастерство для изготовления.
При этом - изготавливать вещи могут как NPC-мастера, так и игроки. Но игроку для этого надо долго прокачивать навык, портя при этом сырьё. А NPC-мастера есть не везде.

Если Вы считаете, что у вещи есть какая-то стоимость - то Вы (как автор игры) задаёте эту стоимость всем NPC-торговцам. И понятно, что стоимость выражается в каких-то деньгах.
Так вот, если NPC-торговец соглашается менять какие-то вещи на другие, но имеется расхождение по стоимости - то NPC-торговец требует от игрока доплатить некую сумму или же сам предлагает доплату.
Если Вы хотите, чтобы NPC-торговец имел прибыль - то он должен постоянно делать перекос цен в свою сторону. Т.е. если я хочу поменять вещь Икс на вещь Игрек - то NPC-торговец требует доплатить 80 монет; а если я хочу поменять вещь Игрек на вещь Икс - то NPC-торговец предлагает мне доплату только 55 монет.

Я бы хотел предупредить, что сильный перекос в сторону торговца - сильно раздражает игроков; будьте умерены в жадности.
И я очень советую позволить игрокам расторгать сделку без пеней, если он это делает быстро (например, в течении часа после сделки) и никак не использовал купленную вещь. Т.е. "купил вещь - понял, что эта вещь не нужна - вернул торговцу".

Следует разделить NPC-мастеров и NPC-торговцев.
NPC-мастер - покупает сырьё и продаёт свою продукцию. Причём процесс производства - подчиняется законам сохранения.
NPC-торговец торгует чем угодно; ну или группа NPC-торговцев делят товары сообразно своей специаизации, если так игрокам удобнее. Но NPC-торговец может торговать только тем, что у него есть. Товары он может покупать и у игроков, и у NPC-мастеров своего города. При этом NPC-торговец может создавать квесты на доставку каких-то предметов, неважно откуда: он просто выставляет заказ с некой ценой.
Чтобы написать стратегию поведения NPC-торговцев - я советую пригласить студентов-экономистов в качестве курсового проекта или даже диплома. Надо договоритться с каким-нибудь экономическим ВУЗом, и каждый год студенты будут дописывать торговый алгоритм.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Берите комиссию с каждого обмена. Практика проверенная всеми казино и букмекерами.
Ответ написан
BruTO8000
@BruTO8000
Можно совсем по разному. Пример - как только онлайн игра в минусе - включается фактор недобросовестности.
Random = 25 - 400%
if (X > 0) Random = 25 - 75%
Где X это сумма проигрыша онлайн игры
Ответ написан
@majstar_Zubr
C++ & gamedev
Можно сделать простую машину состояний, для каждого игрока, которая при обмене будет менять состояние с более жадного на более щедрое.

Состояния будут содержать в себе коэффициенты для стратегий наполнения буферного пула вещей-кандидатов для обмена, из которых будет рандомно выбираться итоговая вещь.

Во время праздников и акций разумно эту машину делать щедрее, чтобы увеличить вывод валюты. На практике, эта машина использует наборы состояний: для обычного игрока, на время акции/эвента, для вернувшихся после долгого отсутствия и т.д.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы