Jump to content
Korean Random

SoprachevAK

User
  • Posts

    203
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by SoprachevAK

  1. Да там вообще всё запрещено на самом деле если почитать) Но на самом деле, чисто формально, я для обучения не планирую использовать контент танков, я буду брать просто координаты перемещения союзников/противников. Они под словом контент подразумевают то, что в той или иной степени защищается авторским правом, типа там если бы я визуально на модельках танков обучал, то да Но думаю всем будет пофиг, там вон, в этом же пункте, моды тоже явно запрещены) > распространять, публично исполнять и демонстрировать, сдавать в аренду, продавать, передавать, публиковать, редактировать, копировать, создавать и использовать производные произведения, сублицензировать, делать доступным для широкого круга лиц, декомпилировать, дизассемблировать, реконструировать или использовать Контент другим неразрешенным способом;
  2. Ну все эти данные собираются, надо просто на сайт фильтры добавить, займусь этим как нибудь. Тоже думал, что и по версии и по региону надо разделять, тк там вообще игры разные так то. Про оптимизацию БД оно не прокатит, у меня первичный ключ сортировки – никнейм игрока. Так что разбиение по версии игры ничего не изменит. А партицирование (физическое разделение файлов БД на диске) по месяцам, это на случай, если они начнут весить неприлично много, и надо будет отключать старые куски Спасибо исправил, не то значение поставил по умолчанию, а оно же сохраняется, вот и не заметил) Это действительно так, и повысит удержание на сайте, но тут надо думать как эту информацию представить понятным и интересным образом. Все сайты с динамической статистикой которые я видел, типа XVM, не очень то и затягивают её изучать) Не очень понял на основе каких именно данных делать такой вывод. Рекордные показатели будут зависит от скилла игрока. И всегда лучшей рекомендацией будет играть на каком нибудь чиффтейне, потому что на нём всегда играют хорошо Как только мне не придётся ежедневно что то чинить в текущем сервисе, я тут же пойду извлекать из него пользу в виде динамических тепловых карт, благо PoC уже есть, и надо только умнее отфильтровать хорошие бои и отображать модом Огромное спасибо за исправления, это реально очень ценно! Честно сказать, я сомневался, что кто то читать будет) Завтра залью на сайт исправленную версию По хорошему, конечно, надо пойти и дописать мод на сбор всплывающих событий, которые ribbons. Оно там вроде бы уже написано у меня, но надо допилить. Ими строить тепловые карты будет куда правильнее и удобнее. А ещё я хотел снепшоты миникарты собирать раз в 5 секунд и отправлять после боя, для тепловых карт разъездов и попробовать скормить их нейроне. В общем планов много, времени мало __________ Хотел найти полезность, что чем дольше стоишь в очереди, тем больше шанс попасть в низ списка, а оно наоборот. Чем дольше в очереди, тем больше шанс попасть в топ. От времени суток, на удивление, не зависит Средняя позиция по уровню в команде относительно времени в очереди в секундах То есть когда кидает мгновенно, то в среднем, в бою будут танки на 0.9 уровня выше твоего. А если ждёшь хотя бы 30 секунд, то будут уже на 0.5 уровня выше твоего with 8 as TARGET_LEVEL select round(queue / 1000) as period, avg(length(levelVisible)) as levelCount, avg(TARGET_LEVEL - arrayMax(levelVisible)) as position, count() from (select arrayZip(playersResults.tankLevel, playersResults.team) as levelTeam, arraySort(arrayMap(t -> t.1, arrayFilter(t -> t.2 = playerTeam, levelTeam))) as myTeam, arrayDistinct(myTeam) as levelVisible, S.inQueueWaitTime as queue from Event_OnBattleResult join Event_OnBattleStart as S on S.id = onBattleStartId where battleMode = 'REGULAR' and queue < 1 * 60 * 1000 and tankLevel = TARGET_LEVEL) group by period order by period;
  3. Немного апдейтов 18к уникальных пользователей, данные будут расти, а я буду сражаться с оптимизацией) выкатил апдейт лейаута сайта, он теперь разделён на странични, чтоб А. слишком далеко не скроллить, Б. не отправлять миллион бесполезных запросов на сервер перенёс сервер на другой хостинг, теперь могу ядра накручивать слайдером в любой момент времени. Пока поставил 4 ядра (было 2), посмотрим завтра в праймтайм, если что повышу, а то последние дни бд прям медленно работала Ещё на сайте обновил график распределения снарядов: Добавил общий график, чтоб сравнивать себя со среднесерверным, и перестал обрезать по кругу сведения. Теперь большие циферки совпадают с графиком, но 100% графика не совпадают со 100% снарядов. В случайных боях примерно 10% улетают за пределы сведения. Скрин из натиска Думаю следующее чем займусь, отдельный раздел с разными сериями. Единственное, скорее всего, я не буду выводить ник игрока, который эти лучшие серии достиг, а то появится соблазн накручиваить А ещё, как будто бы уже достаточно игроков, чтоб можно было искать пересечения игроков по боям, и вычислять мясо подставушников
  4. Ну да, я думал у меня наоборот учитывается средний и из-за этого данные некрасивые) Но там по задумке сравнивается именно строго меньше и больше. Тк очевидно, интересен урон ниже среднего относительно строго выше Так что да, всё правильно
  5. Правильный натиск выглядит так, если не обрезать график Скорее всего это связано с дистанцией стрельбы. В натиске она всегда почти в упор, и судя по всему в движении. Видно ещё насколько на клиентском прицеле снаряды реже улетают за пределы. Как раз на стрельбе на скорости серверный не очень Наверное надо график показывать вот как на скрине, чтоб было меньше вопросов. Хотя вылеты за пределы это явно статистическая погрешность, которую надо отбрасывать. Может сделаю ещё одну секцию с расширенной аналитикой распределения снарядов, где можно будет смотреть только статистически точные данные (неподвижно, на дистанции)
  6. Так и должно быть, он захватит эту планету!!) Ну а вообще фича украденная из модпаков, чтоб при обновление игры он не потерялся. К тому же, он так написан, что если что то поменяют и он слометя, то влиять на игровой процесс не будет. Возможно нет смысла в версию 2.0.0.0 копироваться, наверное надо отключить. Слишком оптимистично) Это нормально. Я собираю свои логи на сервер, чтоб фиксить баги потом, но первые несколько логов печатаются ДО инициализации отправщика. Я конечно могу сделать там обходной путь, но как будто бы не надо, там при загрузке и так куча бесполезных логов
  7. Просто прикола ради Обзор wotstat на каком то рандомном корейском сайте))) Людям нравится как я понял https://gall.dcinside.com/board/view/?id=worldoftanks&no=3876578
  8. Действительно Это выглядит очень неправильно, в натиске часть выстрелов теряется из-за бага, я его почти пофиксил но он рандомно влияет на выборку
  9. По хорошему на миникарту, тк во первых она может двигаться и увеличиваться, так ещё и надо между подложкой и основными маркерами, чтоб не мешалась
  10. Благодарю за наводку, гляну Тонкий момент. Я хочу в реальном времени, на основе информации мгновенно доступной игроку (хп команд, таймер боя, счёт), отображать рекомендации, статически просчитанные на ранее полученных данных) Шансы есть) Так то никакой информации недоступной игроку, или для которой нужно сделать дополнительные действия, я не планирую использовать. Да, это определённо подойдёт для прототипа, спасибо большое! И код даже выглядит совсем не страшно. А потом с прототипом пойду к протанкам, если сам не разберусь в xvm. Я тут ещё подумал, что через DAAPI должен быть способ заменить саму картинку миникарту на свою, а значит можно на питоне отрендерить bitmap'у которую накладывать на текущую картинку миникарты и отправлять во флеш. Если конечно миникарты на каждую карту не вкомпилины во флеш
  11. Хорошая идея, добавлю А как вообще 39% получилось? Они должны различаться, но не так сильно График учитывает только выстрелы которые попали в круг, а процент с учётом улетевших за границы. Но 39 слишком мало
  12. А динамически нужно, тк хочу несколько раз за бой менять позиции в зависимости от таймера. В начале показывать позиции актуальные на первые 2-3 минуты, потом на 4-6 (там появляются позиции для дефа) Хорошо видно на степях, хотя сами тепловые карты пока прототип
  13. Я понимаю, что делать за меня никто ничего не будет, но если вдруг кто нибудь верит в коммерческую успешность, и хочет продавать его вместе со мной, то я готов взять в долю. Я хочу продавать такую штуку по подписке, и верю, что покупатели найдутся. Я попробовал сам, строил позиции вручную во время отсчёта, и оно сильно помогает, особенно когда я года три не играл. А ВГ (леста) не должны забанить, если продвигать это под лозунгом "поможем старым игрокам адаптироваться в игре" Основаная идея в том, что позиции могут строиться для конкретного танка, а если данных мало, то для роли/класса/уровня. А ещё позиции обновляются динамически, и если случится новая мета, вручную перерисовывать их не придётся, а значит легко поддерживать будет потом. Очень многие игроки хотят такой мод.
  14. Я хочу сделать мод с динамическими позициями на миникарте. То есть в бою будет отправляться запрос на сервер, а тот вернёт наилучшие позиции. (Знаю звучит как чит на ВХ, но я таким не занимаюсь) И собственно встал вопрос, как добавить что то на миникарту. Меня наверное интересует возможность программно из питона нарисовать линии и квадратики. В качестве упрощения, пойдёт просто отрисовать на миникарте слой картинки с прозрачным фоном. Слой между основными маркерами и подложной, чтоб не закрывал танки Я прочёл кучу тем посвящённые UI (из популярных наверное все), поползал по исходникам GPCracker, попытался поползать по XVM, но не осилил. Общее понимание у меня появилось, но чего то не хватает. Везде код и статьи очень старые 8+ лет назад, глобально наверное ничего не поменялось, но всё равно тяжело В исходниках танков нашел всякие ClassicMinimapPingPlugin и прочие плагины, и вот они выглядят приемлемо. Собственно вопрос в том, насколько это всё тяжко, и стоит ли вообще пытаться вникнуть? Как будто бы самое близкое к моей задаче это направление орудий на миникарте https://github.com/GPCracker/MinimapGunMarkers/tree/v0.1.12, если маркером сделать нужный мне квадратик, как будто бы можно будет заспавнить кучу и программно задать ему цвет Но даже эти исходники выглядят очень сложными для такой задачи, плюс используют другой его же мод-ядро, что сильно усложняет понимание. Возможно стоит заюзать XVM, он же вроде бы делался, чтоб упростить разработку графических модов. Пример того, как хочу отображать
  15. Так там весь питон танковый в 3+ уровне обработчиков исключений Каждый раз когда танки не крашатся, а пишут исключение в лог, это где то сработал обработчик Я вот использовал стандартный танковый класс Event, чтоб из разных мест мода подписываться на хукнутые события, он сам по себе оборачивает вызов в try except , так ещё и всё равно поднимает исключение наверх в следующий обработчик class Event(list): <...> def __call__(self, *args, **kwargs): for delegate in self[:]: try: delegate(*args, **kwargs) except: LOG_CURRENT_EXCEPTION() raise <...> Себе я заменил его на свой SafeEvent class SafeEvent(Event): __slots__ = () def __init__(self, manager=None): super(SafeEvent, self).__init__(manager) def __call__(self, *args, **kwargs): for delegate in self[:]: try: delegate(*args, **kwargs) except: send_current_exception() LOG_CURRENT_EXCEPTION() Который делает буквально тоже самое, но ещё добавляет исключение в очередь на отправку. Раз в 5 секунд, батчами отправляю их в Grafana Loki Имею теперь замечательный список исключений, причём по session могу ещё посмотреть трейс логов моего мода этого игрока Причём данное пойманное исключение случается в момент выстрела (то есть без обработчика, у игрока бы не выстрелил танк), и при этом встречается очень редко, менее 1% выстрелов
  16. Про равно чуть позже гляну, выглядит действительно красивее Это так. Там мод добавили в модпак Jove, на удивление, я в этом вообще не замешан, они сами. Так что последние два дня экстренно исправляю все редкие ошибки. Сейчас уже 3к уникальных игроков
  17. Ну в этом определённо есть смысл, но я не согласен Баги могут быть редкими и случаться при рандомных условиях. Найти какой именно мод упал, не обладая скиллом изучения python.log крайне тяжело. Уж лучше не ломать игру и писать нотификейшен, что мол мод такой то крашнулся Я себе в итоге обернул всё таки обработчики хуков. Но я ещё графану прикрутил, есть вот красивые логи от мода с трейсами. Исключений пока не было
  18. Подскажите пожалуйста, есть ли в танковом питоне какие нибудь причины не оборачивать в try catch все свои хуки? Чтоб на случай любого исключения внутри мода, функционал игры не был задет Я посмотрел по существующим модам, почему то никто так не делает, а потом у пользователей танки крашатся/не логинятся/не стреляют
  19. Есть такое, особенность обрезания по версии. Исправлю при обновлении Всего выстрелов берётся с версии 1.2, а попадания за все версии Благодарю за находку
  20. Не люблю показывать недоделанные результаты, но раз уж начал, продолжу Сегодня сделал немного, но добавил метрику эффективности, это функция, которая применяется к каждому выстрелу (а в последствии будет применяться внутри каждой клеточки тепловой краты) Можно выбрать "своя" и туда вписывать выражение и границы Некоторые интересные примеры: - if(clientShotDispersion / gunDispersion < 5, -1, arrayMax(results. shotDamage) > 0) от 0 до 1. Карта вертух, где цветом выделены попавшие вертухи. Если поставить от 1 до 1, то будут только попавшие вертухи - length(arrayFilter(t -> t > 0, results.shotDamage)) от 2 до 5, арта нанесла сплешем урон нескольким игрокам - arrayMax(results.shotDamage) / shellDamage карта урона ниже/выше среднего. Можно устанавливать границы от 0.75 до 1.25 - if(length(session.lastDmgPlace) < 5, -1, arrayMax(arraySlice(arrayReverse(session.lastDmgPlace), 5))), от 0 до X, выстрелы игроков, которые за прошлые 5 боёв были лучше чем ТОП X по урону Результаты боя пока недоступны в этой метрике, надо подумать как их оптимизировать. Проблема в том, что результаты и выстрелы это разные и потенциально огромные таблицы, и просто тупо JOIN, возможно, плохая идея, надо пробовать, варианты есть. А ещё пока поставил по умолчанию первые 180 секунд боя. Потом оно будет сохраняться
  21. Выглядит интересно, завтра добавлю тепловые карты, можно будет тыкаться более детально и с меньшим шагом ...хотя разделить одну на другую всё ещё будет нельзя @KPOT2338 Всё именно так. вот выстрел с координаты `gunPoint_x: -501.6194`. Если сгруппировать ещё по id, то можно вставлять прямо в URL и смотреть. https://wotstat.info/session?shot=17074726357830000020080 Если я правильно понимаю, то за красную линию можно вжаться до центра танка, а пушка у шведов крепится к самому краю танка, вот он ей и выехал за пределы. Но ситуация любопытная
  22. Полагаю всё такие gunPoint https://github.com/WOT-STAT/WOTMOD/blob/53d2189ba5ee8c8d442e8aaaf96b60e66c07e23d/WOTSTAT/res/scripts/client/gui/mods/wot_stat/logger/utils.py#L16 if player.vehicle and player.vehicle.isStarted and player.vehicle.appearance: return player.vehicle.appearance.compoundModel.node(TankPartNames.GUN).position else: return player.getOwnVehiclePosition() + \ player.vehicleTypeDescriptor.hull.turretPositions[0] + \ player.vehicleTypeDescriptor.turret.gunPosition
  23. Добавил бесполезную, но невероятно залипательную фичу. Подсвечивает выстрелы под курсором, и можно кликнуть по каждому и посмотреть что это был за выстрел Ещё можно выбрать три режима отображения: точки выстрелов/точки попаданий/оба. В режиме попаданий, будет подсвечиваться откуда стреляли в эту точку Попаданием можно настроить конец трассера/маркер/точку попадания (либо эффект взрыва, либо hitPoint по танку) Всякие штуки с фильтром "а побелил ли игрок сделавший выстрел" добавлю завтра, есть крутая идея
  24. Запилил демку, вдруг кому интересно. Тут точки это координаты танка, зелёная – промах, оранжевая – попал Все дефолтные фильтры + карта + команда + интервал времени боя Параметры отображения пока не работают, но там будет группировать кластеры потом, частично на БД, частично потом пост процессингом База данных пока `dev`, она не актуализируется, но накатил сегодняшний бекап https://dev.wotstat.info/map
×
×
  • Create New...