как изменить java игру
»Игровые новости Игры Baldur's Gate 3 Baldur's Gate Starfield metacritic
Baldur's Gate 3 внезапно подверглась ревью-бомбингу, и кажется, в этом виноваты фанаты Starfield
Одна из самых популярных игр этого года от Larian Studios все таки не смогла избежать современного тренда игровой индустрии. С момента полноценного релиза, практически два месяца, на игру выходили довольно честные пользовательские оценки, как хорошие, так и не очень. Однако недавно ситуация изменилась, Baldur's Gate 3 стала получать необоснованные разгромные оценки на крупнейших агрегаторах.
Заметнее всего ревью-бомбинг Baldur's Gate 3 оказался на портале Metacritic. За короткое время к игре были опубликованы десятки негативных пользовательских оценок, которые уже начали снижать общий рейтинг игры. Как оказалось, низкие оценки к игре ставят боты с недавно созданных аккаунтов и с минимальным описанием. Благо администрация сайта быстро обратила на это внимание и удалила накрученные оценки.
Кто и зачем занялся намеренным ревью-бомбингом проекта, который вышел несколько месяцев назад, не совсем понятно. Существует предположение, что этим промышляют обиженные фанаты Starfield. На это указывают те же аккаунты-боты. В некоторых случаях они снижали оценки Baldur's Gate 3 и одновременно с этим ставили высшие баллы для Starfield.
1990 Игры настольгия 90-е
geek Игры story
Как взломать вампира или История одного нубохака
Пролог
Пару лет назад на просторах интернета столкнулся с многообещающей игрой с фурри-проном в вампирской тематике. Игра называлась (и называется) “Vampire Life”. Вампирскую тематику я люблю, рпг уважаю, название намекает на некий симулятор, что тоже неплохо, а вот фурри прон мне заходит ситуативно, т.к многие автора плохо видят границу с зооеблей. Пожалуй, решающим аргументом в пользу скачивания стала необычная рисовка: мультяшная, будто рисовали кисточкой, без нарочитого нарушения пропорций тел и черт лица, чем нынче грешат (грешили и будут грешить) многие ленивые художники называя это “авторским стилем”. В описании на торрентах создатель честно предупредил что в игре присутствует гринд… нет, не так - много гринда, и это несколько настораживало, но я все же решил рискнуть, в конце концов - гринд гринду рознь, и как показало время страхи были не беспочвенными.
Часть 1: Суть игры и мотивация к взлому
Сама игра выполнена на (в?) рпгмэйкере, управление интуитивное, уже в то время (пару лет назад) в игре большинство стоковых ассетов было заменено, что делало визуал более свежим, приятным и приближало его к сеттингу. Сам протагонист - вампир, который проснулся в своем “логове” (на деле - грязной пещере), будучи голым, нищим и потерявшим всю свою силу, навыки и память (если таковые были) за время сна. Клише конечно, но, будем откровенны, большинство сюжетных ходов было изобретено еще в античные времена, так что на данный момент все зависит главным образом от авторской подачи. Вампир знакомится со своей верной, но бестолковой слугой, с жителями поселения которое находится на выходе из логова и решает зарабатывать на жизнь отловом и продажей в рабство/на опыты фурри-розбійників (называемых в игре морфами), что в обилии обитают в тамошних местах, параллельно поебывая тех самых фурри, по возможности не обходя стороной и обычных неписей.Игра обладает множеством механик: потребности (еда, вода, сон, иммунитет), шмотки и оружие, их заточка, крафт, отстройка логова, отношение с неписями, прокачка навыков, зелья, артефакты и т.д., что, хоть и может крепко увлечь на первых порах, в дальнейшем становится рутиной и источником необходимости гриндить для получения новых элементов прогрессии все больше и больше (в оффлайн игре!).С первых секунд игры появляется ощущения что тебя троллят.., нет - откровенно издеваются. Причем не как над персонажем, а как над игроком, и в дальнейшем эти ощущения только усиливаются. Регулярно возникают игровые ситуации, которые требуют значительной прокачки (явно больше чем может иметь игрок попавший в них на старте) или метаинформации, и в случае провала значительно тормозят прогресс игры (еще больше гринда). Самого гринда много: мало лута, мобы имеют рандомные статы, требования по ресурсам для прогрессии значительные. И по мере самой прогрессии только растут. При таких вводных очевидно, что накрутить себе нужных параметров условным артмани становится удобным решением для пропуска дрочи (в плохом смысле), и переходу непосредственно к новой порции контента. И тут меня ждал сюрприз: разработчик озаботился защитой от желающих срезать углы.
Часть 2: Взлом начинается
Так как никакие попытки найти нужные мне значения с использованием тулзов проде читэнжина или артмани не увенчались успехом (и я позже поясню почему), была предпринята попытка модификации сейв файла. Благо что движок популярный - онлайн эдиторы присутствуют, а сам сейв должен являть собой сырой JSON (в теории). В реальности, меня в этот раз постигла неудача - онлайн тулза для модификации сохранений упорно рапортовала об ошибке чтения. Решил заглянуть в сам файл и поглядеть что там не так, и таки что я там вижу? Строка из букв разных кейсов, крайне похожая на нечто заэнкоженное в Base64. Но увы, походить не значит являться (АУФ!) - снова неудача. К тому моменту мной уже плотно овладел азарт, мне было пофиг на геймплей, я хотел решить этот пазл, и очевидно низкий технический уровень разработчика, который просматривался сквозь декорации игры давал надежду что у меня получится. Не можем прочитать сейв? Тогда бы почему не открыть сам проект?Ищу в стиме Rpgmaker MZ, смотрю на цену, вспоминаю что я далеко не самый состоятельный человек в нищей восточноевропейской стране, и отправляюсь в зеленый стим. Ставлю и вылечиваю Мэйкер, создаю новый проект и копирую в него ресурсы из игры. Чуда не произошло - ресурсы не читаются. Открываю файлы ресурсов - там те же закодированные строки заместо джейсонов, как и в сейвах. Т.к чудес очевидно не бывает, и игра все-же должна как-то уметь читать свои же ресурсы, то она явно хранит в себе некий декриптор или декодер который превращает буквенное месиво в джейсон. Пришла пора лезть в код.
Как выглядели ресурсы игры |
Часть 3: Пора кодить
Как в любом приличном проекте на рпгмэйкере , в файлах игры лежит движок, написанный на JS, и который, как я подозревал, был модифицирован автором игры для защиты от взлома и модификации. Хоть я и большую часть времени я пишу на Java, в моей жизни было два года, когда я работал на проекте где приходилось совмещать 50/50 джаву с Node JS. Научившись в свое время отличать асинк от авэйта, промис от колбэка, и запомнив все 6 (или 7?) типов которые существуют в JS я подходил к разбору кода со сдержанным оптимизмом. Который чуть было не иссяк стоило мне увидеть код. ВСЕ было написано на прототипах, на которых писал еще мой прадед в перерывах между охотой на мамонтовую фауну и наскальной живописью. Было ли то результатом некой компиляции из typescript либо невозможностью (или нежеланием, что по сути одно и то же) разработчиков движка добавить в него поддержку es6 я не знал, да и к сути задачи оно не относилось. Через непродолжительное время копания в коде, мною было обнаружено что весь кастомный код содержится в папке /plugins, что весьма логично, в коде есть захардкоженный список ресурсов которые енкриптятся особо, а искомый декриптор, очевидно кастомный, созданный автором игры, хранится в PKD_Protector.js.
Фрагмент того самого обфусцированного протектора |
К слову, в процессе перебора исходников пришло понимание почему в артмани не работает поиск: каждая переменная в памяти игры хранится в двух полях. Условно А и Б. Истинное_значение = A - Б, где Б генерируется случайно при каждом изменении переменной. Таким образом, для поиска условного артмани обе цифры в памяти меняются как-бы случайным образом. Или не меняются, т.к рандом может и совпасть.
И как всегда ложка дегтя: код декриптора был обфусцирован (переписан с сохранением синтаксиса языка, но в нечитабельной для человека форме). Это уже успех - запустив этот скрипт можно получить чистые исходники ресурсов для последующего их открытия в Rpgmaker MZ. В теории. Но на практике посмотреть и изменить ресурсы и скрипты игрового процесса мало - нужно еще вложить их на старое место предварительно зашифровав обратно. А для этого нужен был алгоритм шифрования. Обфусцированного кода всего 300 строк, что очень немного. Расставляю брейкпоинты, запускаю дебаггер помечаю используемые строчки кода и значения. Спустя полчаса алгоритм дешифрования найден и переписан в явном виде (всего в 20 строк). Еще 3 минуты на написание и проверку обратного алгоритма. Запустил сразу на все содержимое папки /data, и получил исходники ресурсов. Теперь (наконец-то!) можно переходить в Rpgmaker MZ и насладится творчеством разработчика.
Как было оно было задумано разработчиком (логика сохранен) |
Часть 4: Глубже в кроличью нору
Еще на этапе игры меня не покидало чувство, что игру делал человек с сильным желанием, хорошей фантазией, большими амбициями но малым опытом в разработке. когда я увидел ресурсы игры мое мнение превратилось в твердую уверенность, с чувством легкого уважения к человеку, который не умея толком кодить, не зная английского языка и изобретая велосипеды по пути, смог сделать (и заставить работать) потенциально многообещающий продукт. Далее просто приведу перлы которые я успел найти в коде:
Естественно, что обладая буквально авторскими возможностями в игре сложно сохранить интерес к геймплею, так что я выдав персонажу все нужное для завершения прохождения текущего билда быстро просмотрел оставшийся в игре контент и отчалил.
Часть 5: Выводы
Мне очень понравилась концепция заложенная в игру “Vampire Life”, у проекта хорошие интенции, и мне жаль что местами проект портит неуместный йумор и баланс настроенный на гринд. Сам проект висит на патроне уже б-г знает сколько и как по мне, разработчику пока остановится с новым контентом, потратить время на починку старого, выправить баланс и релизится с чистой совестью. На полноценную игру контента хватит с головой, хватит сосать из патронов шекели. Удачи разрабу во всем, надеюсь мой пост будет компенсацией за то, что поиграл в версию с разблокированными возможностями так и не занеся ему денег
P.S. Этот пост должен был выйти в день моей днюхи, но слегка запоздал. Не являясь активным участником срачей или контентмейкером реактора я посчитал нужным вместо фотки кота, торта и монитора (у меня и кота то нет), что было бы крайне неуместно и нагло с моей стороны, угостить честной люд вкусным контентом - так будет правильно
Paradox Interactive Разработчики игр Игры гендерное равенство скандалы SJW gaming
«Ты тут для вида»: сотрудницы Paradox рассказали о притеснениях женщин в издательстве
Казалось, что в этом году ничего более дикого, чем историю о сексуальных домогательствах в Blizzard, мы не услышим, однако, как оказалось, тогда дно ещё не было пробито. Газета Svenska Dagbladet опубликовала информацию о ситуации внутри шведской студии Paradox Interactive, скорее всего известной вам по сериям игр Hearts of Iron, Europa Universalis и Crusader Kings.Если верить информации со страниц SvD, мнение сотрудниц студии зачастую остается без внимания, но набирает вес, если такую же идею выдвигает представитель мужского пола. Одной из девушек, когда та предложила своё видение ситуации, прямо во время заседания сказали: «Знаешь, ты тут только для того, чтобы выполнить квоту по количеству женщин в штате. Поэтому, мне кажется, тебе лучше помолчать».
До августа 2021-го в Paradox должность старшего менеджера занимал человек, который в открытую приставал к девушкам в студии: «Он слишком много вступал в физический контакт с сотрудницами. То руку на поясницу положит, то очень тесно обнимет и уткнет лицо в шею». Что примечательно, буквально за несколько месяцев до своего попадания в Paradox, он по решению суда выплатил пожаловавшейся на него девушке солидную сумму в 270 тысяч крон (более двух миллионов рублей) - многое говорит о наборе персонала в Paradox.
В ситуации сильнее всего пугает тотальное молчание других работников студии. По словам Svenska Dagbladet, жалобы сотрудников не доходили до вышестоящего руководства, поскольку главы отделов не хотели выглядеть плохо. Это, в свою очередь, привело к сокращению этих самых жалоб: было ясно, что они останутся без внимания. Сами же жертвы боялись поднимать эту тему, ибо опасались потерять работу не просто в Paradox, а в шведском геймдеве в принципе. Согласно источникам Eurogamer, что дополнили материал SvD, даже во время анонимных опросов о качестве работы внутри студии сотрудницы не отвечали честно, так как сомневались в их анонимности.
Одновременно забавно и грустно наблюдать подобные новости именно из Швеции - столицы современного прогрессивного общества. Становится очевидно: даже если нанимать женщин по квотам - отношение к ним внутри студии вряд ли изменится. Остается надеяться, что эта история не останется без внимания и заставит общество изменить свой взгляд на тему неравенства на рабочем месте.
https://dtf.ru/gameindustry/901584-ty-tut-dlya-vida-sotrudnicy-paradox-rasskazali-o-pritesneniyah-zhenshchin-v-izdatelstve
TurboSloths гонки Игры gamedev видео gifs
Here we go again...
Привет реактор!
Месяц прошёл с последнего поста (и моей отсидки за лицемерство в бане), так что думаю пора написать что нового:
1) У нашей игры на реакторе теперь есть свой тэг! (Слава вождю!) Как говорится велком все кому интересно и блокируйте кому нет
2) Главный по проекту поиграл в последнюю сборку и решил записать как он лично рассекает на заброшенном аэропорту (А то я всё гифки выкладывал)
3) В целом проект не стоит на месте, добавили кучу разрушений, выпустили ботов с гонок на Арену, подкрутили SteamTogether для игры по сети (хоть и в сплит скрине), добавили срезы на карты и всякие мелочи в виде оптимизации и тп. и тд.
4) В общем то всё, буду иногда выкладывать смешные моменты с разработки, писать если будет интересно о проблемах которые возникают во время всего этого безобразия да и в целом новости
Спасибо за внимание! *Прыгнул в каток, подцепил сломанный ускоритель и улетел в закат*
Игры Minecraft Мультиплеер видео длиннопост
Тысячи игроков в одном чанке: новая ветка развития Minecraft
Как «синхронизировать» множество серверов в единый бесшовный мир и как изменится игровое сообщество с выходом нового серверного ядра — MultiPaper.
Одной из самых главных проблем большинства игровых серверов является однопоточность или сильная зависимость от главного потока, где важна частота процессора (а точнее IOPS), что сильно ограничивает масштабность игры в мультиплеере. Разработчики Minecraft пытаются решить данную проблему ещё с версии 1.14, но всё упирается в сложности разработки и «неповоротливость» компании. С каждой новой версией производительность серверов наоборот ухудшалась. Многие всё ещё остаются на 1.12 ради возможности вместить больше 200 игроков.
В 2020 году студия Mojang экспериментировала с Aether Engine компании Hadean, чьи технологии используются в EVE Online Aether Wars. Они смогли поднять сервер на 1024 игрока.
"Внедрение Aether Engine в Minecraft открывает для наших игроков множество новых захватывающих впечатлений, событий и режимов игры. Aether Engine отлично справляется с увеличением количества соединений и вычислительной сложности, что позволит нам создавать более масштабные и захватывающие события, чем когда-либо прежде. Увеличение возможностей игроков и производственных возможностей также открывает новые возможности для получения прибыли, не перестраивая радикально существующую инфраструктуру Minecraft."
Майкл Вайлбахер, CTO Mojang Studios
Что в итоге получилось от сотрудничества непонятно. Сообщество решило взять эту задачу в свои руки. С каждым годом серверные ядра, плагины и моды пытались превзойти друг друга добавляя всё больше оптимизаций и переписываний оригинального кода игры под многопоточность.
В 2021 году появился проект Mammoth от WorldQL. Они пытались добавить возможность горизонтального масштабирования с использованием общей базы данных и брокера сообщений. Проект провалился.
"Горизонтальное масштабирование подразумевает увеличения вычислительных ресурсов путём распределения задач на разные компьютеры и сервера. А вертикальное — увеличение на уже имеющихся мощностях (апгрейд процессора, добавление памяти)
Форк — использование кодовой базы программного проекта в качестве старта для другого, при этом основной проект может как продолжать существование, так и прекратить его." Википедия
Также можно отметить попытки реализовать полностью самописные движки для сервера. С 2019 года в медленном темпе разрабатывается Feather, написанный на Rust. Выглядит перспективно, но не понятно что с проектом.
Ещё есть Minestom, что также пытаются написать свой мультипоточный сервер, но уже на Java. Имеют довольно активное сообщество. Подходит скорее для мини-игр, чем на полноценный опыт.
Для ядер Fabric и Forge также были попытки написать моды на многопоточность — MCTM и MCTMFabric. Разработка практически не ведётся.
Начало положено
В это же время над своим решением начал работать австралийский разработчик PureGero — MultiPaper (github / сайт). Основой для него является серверное ядро Pufferfish. Это позволяет получить лучшую производительность со всеми оптимизациями и сохранить совместимость с гигантской экосистемой плагинов Bukkit. Вот так выглядят отношения между популярными серверными ядрами:
Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → MultiPaper
Vanilla → CraftBukkit → Spigot → Paper → Airplane → Pufferfish → Purpur
Vanilla → FabricСтрим ютубера Ish. Все 897 игроков собрались в одном месте."Попробовать поиграть самому можно уже сейчас на специально созданном под эту статью сервере на MultiPaper. Он тестовый и не будет регулироваться, поэтому прошу соблюдать рамки приличия и быть благоразумными.
Хотел сразу на 1.19 сделать, но один из плагинов на приват, HuskTown, не успел обновиться.
syndicate.ss220.space - Minecraft 1.18.2 (любой клиент)"
Как это работает?
Multipaper Master — это прокси-сервер и база данных, которая взаимодействует между подчиненными серверами и предоставляет сервис, на основе которого эти серверы синхронизируют свои данные и отправляют пакеты. Каждый сервер MultiPaper подключается к одному Master, чтобы данные между ними обновлялись в режиме реального времени. Если игрок на сервере A атакует другого игрока на сервере B, сервер A отправит эти данные прямо на сервер B, чтобы сервер B нанес повреждения игроку и применил обратную связь.
PureGero, автор проекта
Такая координация позволяет удостоверится, что каждый загруженный чанк «тикается» только одним сервером за раз и позволяет осуществлять смену текущего «владельца» чанка в зависимости от нагрузки. Каждый шард кэширует чанки, которые нужны игрокам, что обслуживаются им. Если правильно всё сделать, то вы сможете поднимать/останавливать шарды по мере необходимости и игроки практически бесшовно будут переключаться между ними (увидят лишь загрузочный экран на 1 секунду).
Вывод команды /servers с информацией о состоянии каждого шарда
Недавно PureGero поставил рекорд по заполненности сервера — 7000 ботов в одном прегенерированном мире на 7200x7200 блоков со 100+ ботами на каждом шарде. Для этого использовались виртуальные сервера Google Cloud Platform. Также потребовались тонкие оптимизации настроек методом проб и ошибок.
Стресс-тест ботами - https://github.com/PureGero/minecraft-stress-test
Достаточно тяжело уловить золотую середину между количеством шардов на машине, количеством памяти на один шард и расходами на хостинг. Всё это очень индивидуально и зависит от концепции сервера. Рекомендуется арендовать выделенные сервера на расстоянии до 1мс между шардами и мастером для избегания проблем с синхронизацией и с хорошей шириной канала.
Уже есть некоторый список проверенных плагинов, что были опробованы с MultiPaper. Вы можете попробовать и другие. Если в плагине есть поддержка работы с базами данных, то есть вероятность, что он заработает без изменений. Тут уже надо экспериментировать.
Советую вступить в discord разработчика MultiPaper, чтобы иметь возможность задавать вопросы и делится своим ценным опытом с другими. Есть слухи, что уже больше 5 крупных коммерческих компаний готовят новые сервера на MultiPaper на протяжении последних нескольких месяцев.
З.ы.
Дальше дополняет автор к спизженной мною статье от себя пару слов:
Надеюсь вам понравилась статья. Пытался писать для обычных геймеров, не перегружая технической информацией. Целью статьи является попытка сделать MulitPaper более известным среди майнкрафтеров, и чем известнее он будет становится, тем больше технической поддержки будет от сообщества.
Немного расскажу про свой опыт. Я являюсь одним хостом довольно крупного игрового проекта и discord-сообщества на 17000+ участников. Оно сформировано по совершенно другой нишевой игре, не Minecraft. Дневной онлайн на наших игровых серверах составляет обычно 400-600 игроков.
Недавно попробовали вместе с некоторыми стримерами Банды (суммарно вышло 1к+ зрителей) организовать ивент на MultiPaper сервере с двумя этапами: строительство игровой зоны (город/пригороды) и последующая масштабная королевская битва. Как оказалось, привлечь больше чем 100 игроков довольно трудно, даже если есть такое немалое сообщество и среднего размера стримеры.
Поэтому мне интересно посотрудничать со стримерами, ютуберами и сообществами в организации чего-нибудь интересного на MultiPaper или просто общения для обмена опытом.
Telegram: @azizonkg
Email: azizonkg@gmail.com
Отличный комментарий!