Closed iskizreal closed 2 weeks ago
О, вы пользуетесь PvP, я думал никто не будет, ведь это риски. У меня на самом деле шикарно деньги с PvP идут, я на ночь оставлял на серебряную лигу и утром был в плюсе на несколько лямов чисто с PvP (бот за сессию из 10 PvP каждый раз пишет суммарно, сколько вы получили или потеряли, потом утро можно просто сложить эти 8-10 цифр из лога и увидеть профит.
Что касается вашего вопроса, я сделаю это в предстоящем обновлении.
Тоже пользуюсь... А как правильно задать платиновую лигу? gold - норм. platinum - ошибку выдает, что не правильная лига ((( А в чем риски?
Технические названия лиг из игры: bronze
, silver
, gold
, platina
, diamond
(потом в readme укажу). Риски в том, что ты не факт, что будешь выигрывать. Например на профиле низкого уровня и со слабо прокачаными переговорами и этикой, часто проигрываешь. А вот на профиле 10 уровня, с переговорами и этикой 8 уровня, я выигрываю довольно часто. Поэтому я и написал, что включайте PvP на свой страх и риск.
Спасибо! У меня переговоры - 21, этика - 22 ))) Отлично капает! ) Предложение по доработке: Есть предположение, что юзеры выбирают стратегию не равновероятно. Хорошо бы вести статистику, сколько в Переговорах каких стратегий использовал противник. Хотя бы в файл. Если есть наиболее популярная стратегия - можно заметно повысить эффективность, играя против нее. Ну и ввести в бота - "интеллектуальный" выбор стратегии.
Есть предположение, что юзеры выбирают стратегию не равновероятно.
Я натыкал руками в бронзе 30 раз "агрессивную" и в 70% у оппонента была "защитная". Так что не верю я в то, что это реальные игроки. Так что дальше это буду называть ботом.
Я, тут, погуглил, про стратегии камень-ножницы-бумага и нашёл статью, где "а-ля учёные" вывели формулу успеха: Если проиграл, ставь вариант, который сильней текущего ответа соперника. Если выиграл, оставайся на текущем.
Я потестил и что-то подобное есть и в логике этой игры. Только иногда рандом выскакивает. Мб, чтоб не спалиться, хз
Так что след стратегия, хоть иногда и проигрывает, но в целом рабочая: Если у бота прошлая и позапрошлая карта одинаковые, то укажи то, что сильней их, иначе укажи ту, что слабей прошлой карты соперника (*у бота с большой вероятностью сменится карта)
По коду это что-то типа такого:
if prev_prev_opponent_strategy == prev_opponent_strategy:
curent_strategy = get_stronger(prev_opponent_strategy)
else:
current_strategy = get_weaker(prev_opponent_strategy)
где (*мб перепутал названия местами. Не знаю порядок элементов в self.strategies)
def get_stronger(strategy):
return self.strategies[(self.strategies.index(strategy) - 1 + len(self.strategies)) % len(self.strategies)]
def get_weaker(strategy):
return self.strategies[(self.strategies.index(strategy) + 1) % len(self.strategies)]
# тут хочется работать как с enum'ом, чтоб было наглядней... Но я не знаю, что хранится в self.strategies
Интересная логика.
@Duwaz self.strategies
- это List такого вида: ['aggressive', 'flexible', 'protective']
Названия стратегий там скорее всего будут именно в таком порядке, т.к. в таком порядке они в dbs, откуда я их забираю.
Итак, значит, если у бота (игрока) в этот и прошлый раз была одинаковая стратегия, например aggressive
, то я в следующий раз переключаюсь на ту, что её выигрывает, т.е. protective
, иначе наоборот на более слабую, т.е. flexible
. Я правильно понимаю? Должен ли я "помнить" последние 2 стратегии оппонета в следующем запуске переговоров (через час) или это должно работать в пределах одной партии переговоров? Какую стратегию выбирать в 1 и 2 раз после запуска бота, когда этих двух переменных еще не будет?
Опять же, в начале ты пишешь про условия, связанные с тем, выиграл ты или проиграл, а основное твое предложение вообще не учитывает этот факт, так что я запутался.
Мое мнение - эта стратегия так себе. Она основана на психологии, для игры с одним игроком. Не, для к-н-б с одним игроком она норм. Но тут то каждый раз разные противники (хоть и попадаются бывает подряд одни и те же ). Тут же важнее статистика и теория вероятности. Больше всего выбирают ЗАЩИТУ, потом идет ГИБКАЯ стратегия, и реже всего АГРЕССИВНАЯ. Да, может попасться 5 агрессий подряд, это рандом, но на больших числах - именно как я написал. В последних моих замерах (я дописал вывод стратегий в файл): агрессия - 176, гибкая - 201, защита - 217. До этого (до поломки бота): 140-159-165. Со стратегией flex я всегда в плюсе на 40 боев, не только по победам, но и по деньгам (не забываем про налог). Главное - про прокачку Переговоров не забывать. PS: Могу посчитать все в значениях вероятностей, но лень ))) Запустите 50 переговоров по очереди с каждой стратегией - сами все увидите по результату ) PS2: Наблюдаю так же небольшой "дрейф" периодический. Когда большинство видимо решает, что их стратегия стала хуже - и переходят на агрессию, там начинают сливать еще больше - и возвращаются. Но на 100 переговорах этот "дрейф" сглаживается. PS3: Хорошо бы считать и выводить расширенную статистику в конце сеанса:
Опять же, в начале ты пишешь про условия, связанные с тем, выиграл ты или проиграл, а основное твое предложение вообще не учитывает этот факт, так что я запутался.
Да, ты прав. Мысль ушла вперёд напечатанных слов. Там есть своя логика, но с конечной идеей я будто поторопился и многое упростил.
Чтоб не писать кучу букв и вводить в заблуждение, сел считать статистику.
Затестил слова @iLimus . Поставил только flexible. Сыграл 115 игр. Стата такая: мой ход - ход противника - количество игр flexible - aggresive - 38 🔴 flexible - flexible - 40 flexible - protective - 37 - WIN *так что мой аргумент, что там бот, который подстраивается под игрока - глупость
Запустил свою стратегию описанную выше. Забрал код из коммента. Сыграл 185 игр. Стата: aggresive - aggresive - 22 aggresive - flexible - 22 - WIN aggresive - protective - 15 🔴 flexible - aggresive - 17 🔴 flexible - flexible - 22 flexible - protective - 25 - WIN protective - aggresive - 28 - WIN protective - flexible - 17 🔴 protective - protective - 17
Без понятия, почему распределение немного лучше. Возможно, просто повезло. А мб что-то в этом есть
В любом случае, думаю, лучше тогда уж не торопиться с не рандомной логикой
Тоже тестирую... Иногда protective лучше играет. Agressive - пока было всегда хуже, но не факт, что это не изменится. Но какие то "волны" по статистике есть, это точно. Заметил падение дохода, поставил protective - стало лучше. То же самое делал до поломки бота, но тогда падение было на protective и перешел на flexible. UPD: По последним 200 боям - agr: 70 flex:49 prot:81 Флексеры перекинулись в агров ) Но это я на Платинуме сейчас смотрю. На Голде может другая статистика. Но все равно Протект - чаще юзают. Поэтому думаю стоит играть за него (с хорошей прокачкой Переговоров) или против него (флекс, если переговоры не очень).
Делал задания руками. ПВП выбирал справа налево, от самой крайней правой Protective, и далее шифт влево на 1 стратегию в каждом раунде. Винрейт где-то 60-70%. Как бы этот порядок прописать в боте? Просто по кругу.
PVP loses in any condition :) 2024-08-11 19:15:14 | INFO | 394 | MainNumber | PvP negotiations started | League: diamond | Strategy: random 2024-08-11 19:15:18 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:15:26 | SUCCESS | 455 | MainNumber | Contract sum: 63M | Your strategy: aggressive | Opponent strategy: protective | You LOSE (-63M) 2024-08-11 19:15:29 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:15:42 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:15:50 | SUCCESS | 455 | MainNumber | Contract sum: 79.8M | Your strategy: aggressive | Opponent strategy: protective | You LOSE (-79.8M) 2024-08-11 19:15:52 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:15:59 | SUCCESS | 455 | MainNumber | Contract sum: 50.5M | Your strategy: aggressive | Opponent strategy: aggressive | You LOSE (-50.5M) 2024-08-11 19:16:01 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:16:09 | SUCCESS | 455 | MainNumber | Contract sum: 88.3M | Your strategy: aggressive | Opponent strategy: protective | You LOSE (-88.3M) 2024-08-11 19:16:11 | INFO | 413 | MainNumber | Searching opponent... 2024-08-11 19:16:20 | SUCCESS | 455 | MainNumber | Contract sum: 83.7M | Your strategy: protective | Opponent strategy: flexible | You LOSE (-83.7M)
i switch it off, so many loses
I have not found a clear description of what skills are needed to win each strategy specifically. Maybe someone knows or has seen where it is described?
ask support, wait for reply
Я не нашел четкого описания того, какие навыки необходимы для победы в каждой стратегии конкретно. Может быть, кто-то знает или видел, где это описано?
написал в саппорт, жду что скажут
рассматривал логи у PvP, и наблюдаю, что при установке на protective часто начинают попадаться flexible-противник. Тут есть кривая распределения, то что в каждое временное окно когда отрабатывается сентимент той или иной карты, по её текущей популярности, происходит ранжирование веса всех трех карт. И по этому весу определяется, самая популярная, средняя и последняя (малая). Обозначим - MAX, MID, MIN. В этом временном интервале выбирать нужно всегда MID и переходить с других стратегий. Потому-что стратегия веса MID будет превалировать в победе над MAX, и проигрывать в стратегии против MIN как проигрышная по правилам игры, но в меньшей степени, ибо вес MIN меньше и она реже выбирается противником.
Подобное взято в игре LostDogs, которая сейчас хайпится и до сентября там игра идет на ставку среднего значения веса карты, от всех выбравших карты участников в раунде. Побеждает средняя, админы игры дают подсказки в постах и текстах в канале. По ним народ анализирует и пытается подобрать карту которая окажется в среднем весе. Но вся фишка в том, что если по подсказкам народ ломанётся выбирать определенную карту, то она динамически меняет вес и проигрывает)
Фишка лютая, я к чему, к тому что просматривая лог за PvP у нескольких акков в XEmpire понял, что тут можно играть также и выбирать стратегию, высчитывая сантимент и вес стратегий... Но как пока прицепиться к этому временному окну, не могу понять... Т.е. какое то время бот играет и определяет сентимент, далее уже высчитывает вес и динамически пересчитывает его по выбору карт оппонента..
Закрываю эту ветку. В дальнейшем развитии PvP нет особого смысла.
Заметил, что иногда их сервер отдает ошибку 500 при клайме. Такое кстати бывает и в самом приложении иногда. Было бы здорово, если бы бот не отключал ПВП после ошибки, а например засыпал на 10 сек и пробовал еще раз. А вот если будет больше ошибок, чем в ERRORS_BEFORE_STOP (ну или новую переменную завести), тогда уже выключать или засыпать на час (как это сейчас). К сожалению не шару в python :(
Пример ошибки:
PvP error: 500, message='Internal Server Error', url=URL('https://api.muskempire.io/pvp/claim')
PvP negotiations finished