#Игры

Что не так с мобильными играми?

Спойлер: много чего не так.

37
Читалка

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

Так что же напрягает во многих мобильных играх:

  • При первом запуске - сразу на первый уровень. И пока не пройдёшь непропускаемые уровни, а их может быть несколько - в главное меню не попадёшь. Некоторые игры тебя в начале даже к настройкам не подпустят.
  • Навязчивая реклама. Не, ну если реклама по запросу игрока с какой либо целью, например бонус или дополнительная жизнь - то ещё ладно. Но если рекламу надо смотреть после каждого уровня - то это уже раздражает.
  • Игра не работает без интернета. И речь не о многопользовательских онлайн играх, где без интернета реально никак. А если игра по сути однопользовательская, а мультиплеер присутствует чисто дополнительно - то почему я не могу играть, если у меня не работает интернет?
  • Чрезмерно нарастающая сложность. Вот например первый 100 уровней проходишь легко, уровни 101 - 200 сложно но терпимо, а после 200 уровня просто застреваешь и не можешь пройти дальше. Особенно касается игр без прокачки, типа всяких головоломок.
  • Гринд. Много гринда. Очень много гринда. В некоторых играх для того что-бы купить какую-то крутую вещь без доната надо гриндить в буквальм смысле месяцами. Зачастую при этом ты ещё и не двигаешься по сюжету.

А теперь сравним со старыми добрыми компьютерными играми (кроме онлайн):

  • При первом, да и вообще при любом запуске - сразу в главное меню. Сначала настраиваешь игру под себя, только потом начинаешь проходить. К сожалению, непропускаемое обучение встречается и в компьютерных играх, и оно так же раздражает.
  • Рекламы в однопользовательских компьютерных играх практически не бывает.
  • Любая однопользовательская компьютерная игра работает без интернета. Особенно пиратская.
  • Сложные моменты бывают и в компьютерных играх. Но сложность не растёт бесконечно, и рано или поздно игру ты пройдёшь. Ну кроме совсем уж хардкорных тайтлов.
  • Гринд есть и в компьютерных играх. Но масштабы не сравнить. Условно, в компьютерной игре на крутой апгрейд гриндишь пару часов, в мобильной - неделю.

Ещё отмечу спорные моменты в мобильных играх (они не напрягают, но они есть):

  • Донат. В принципе сама возможность задонатить не напрягает, если играть можно без доната. Но вот цены на донат в некоторых играх - просто швах. За одну покупку могут запросить несколько тысяч рублей. При этом прирост с этой покупки будет не таким уже и большим.
  • Бесконечная игра. Некоторые игры просто невозможно пройти - уровни генерируются путём процедурной генерации, и их может быть сколько угодно много. Это не преимущество и не недостаток - это просто особенность. Часто в таких играх прилагается возможность бесконечной прокачки.
  • Управление. Многие говорят про неудобное управление в мобильных играх, но к нему надо просто привыкнуть. Хотя да, есть совсем уж плохие игры, в которых управление максимально неудобное.

Ну и напоследок отмечу преимущества мобильных игр:

  • Можно играть, когда под рукой только смартфон. Компьютерные игры конечно привычнее для меня чем мобильные, но не всегда есть возможность играть на компьютере. Смартфон же можно взять с собой практически куда угодно.
  • Различные ивенты. Обычно проводятся по праздникам, но могут и чаще. Позволяют заработать игровую валюту и ресурсы, а также разнообразить геймплей.
  • Некоторые интересные механики будут работать только на мобильных устройствах с сенсорным экраном. Например скролл-шутеры, в которых ты управляешь героем или транспортным средством, просто водя пальцем по экрану.

А теперь общее мнение. Я играл в разные мобильные игры, разных жанров. Есть игры получше, которые прямо зацепили. А есть игры похуже, которые скачал, поиграл и удалил. Но идеальных мобильных игр, в которых всё было бы хорошо - нет.

А вы играли в мобильные игры?

Какие мобильные игры вам понравились больше других?

Что вас всех больше раздражает в мобильных играх?

Источник: kapi.bar

Степень редкости в играх.

Пробую перенести пост с Капибары.

40

Думаю, поймут многие:

Такая схема это уже классика.
Такая схема это уже классика.

Это классическая градация редкости игровых предметов, инвентаря, экипировки и т.д. Реже встречаются другие варианты, например могут быть другие цвета/названия или может быть больше/меньше степеней редкости. Также может быть возможность повышать редкость предметов, например путём слияния. Увидеть можно во многих онлайн и мобильных играх.

Кто-нибудь знает, где подобная схема была применена впервые?

А где впервые такую схему увидели вы?

Источник: kapi.bar

Бытовая обратная разработка для чайников и домохозяек

Я джва года ждал эту игру!

47
Читалка

Короткий познавательный пост, основанный на моей больной фантазии. Все совпадения случайны.

Обратился как-то один человек на профильном форуме с вопросом, как запустить (не сказать чтобы старую) игру на Windows 10. Игра (хотя я бы назвал это технодемо)
была разработана на легендарном XNA 4.0 (земля пухом) и планировалась к
выпуску через Steam Greenlight (и ему земля пухом) еще в далеком 2012,
после чего заброшена и убрана со всех магазинов.

Игра
была куплена тем человеком еще в тот момент, когда она легально
продавалась. А спустя годы она просто перестала подавать признаки
жизни. $5 за полную версию уплочены, а поиграть нельзя. Обидно.

Так
как типовые решения по типу установки XNA Redistributable не помогли,
то был предложен единственно возможный выход из ситуации - отладка
через dnSpy.

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

Так как ПО было приобретено легально и оно не работает, то этот теоретический случай допустим в соответствии со статьей 1280 гражданского кодекса.

Демонстрировать буду на бесплатной демоверсии, скачать можно здесь.

dnSpy

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

Ошибка. Открываем стек вызовов и ищем место, где произошел провальный запрос в сеть.

А
вот и виновник торжества. По сообщению из исключения можно сделать
вполне однозначный вывод, что проблемой является скупердяйство и
непредусмотрительность автора, который решил перестать платить за домен и
хостинг, а вместе с этим случайно (а может и намеренно) сделал запуск
игры невозможным без интернета. Так как на сайте заявлено отсутствие
DRM, то это явно недосмотр.

Что тут происходит?

Если
почитать документацию на XNA, то этот метод предназначен для загрузки
контента и вызывается автоматически при запуске игры. Первым делом
выполняется инициализация некоторых вещей, после чего открывается файл
настроек (options.xml) и начинает последовательно считываться. Как
только считываются параметры аккаунта для таблицы рекордов, то
происходит отправка логина+пароля на официальный сайт и попытка получить
ID. Если сервер возвращает Failure, то открывается диалог входа,
который можно пропустить. Если сервер возвращает число, то игра
запускается. А вот если сервер недоступен, то вылетает исключение,
которое никак не обрабатывается и приводит к молчаливому вылету.

Диалог входа официально можно пропустить.
Диалог входа официально можно пропустить.

На этом этапе есть 2 варианта действий:

  1. Вручную отредактировать настройки и убрать пункт об аккаунте. Тогда игра будет всегда запускаться без входа.
  2. Физически убрать запрос на несуществующий сайт.

Нормальные герои всегда идут в обход, так что переходим к написанию небольшого патча. (На самом деле, о первом варианте я додумался не сразу. Более того, полная версия зависает при убирании этого пункта из настроек).

Выделяем строчку с запросом и нажимает "Изменить инструкции IL". Открывается окно с заголовком "Изменение тела метода".

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

Ключевым
элементом является стек. Что такое стек я уже когда-то рассказывал. Это
некоторое место, на вершину которого можно последовательно добавлять
значения (числа, строки и прочие объекты), а так же снимать их в
обратном порядке.

Не эти стеки, но суть та же. Можно добавлять сверху новые фишки и снимать с вершины старые.
Не эти стеки, но суть та же. Можно добавлять сверху новые фишки и снимать с вершины старые.

Тут мы добавляем на стек:

  1. newobj: Новый объект типа "веб-клиент".
  2. ldstr: Строку "http://poega.me/gamelog.php?u=".
  3. ldloc.2: Значение локальной переменной под номером 2 (с типом строки)
  4. ldstr: Строку "&p=".
  5. ldloc.3: Значение локальной переменной под номером 3 (тоже строка).

Потом
мы вызываем String::Concat(), принимающий в себя 4 строки и соединяющий
их вместе. При вызове метода будут сняты 4 верхние строки со стека и
добавлена новая строка.

Вызов
следующего метода (WebClient::DownloadString()) снимает строку,
полученную от String::Concat(), и веб-клиент. В результате должна
остаться только 1 строка, возвращенная WebClient::DownloadString().

Следующим
этапом мы должны снять эту строку со стека и сохранить её в локальную
переменную 1, но этого не произойдет, так
как WebClient::DownloadString() всегда будет проваливаться и выбрасывать
исключение. Исключение, если его не обработать сразу, будет раз за
разом проваливаться глубже по стеку вызовов, пока не достигнет
обработчика или дна. Так как никаких обработчиков по пути нет, то
исключение достигает дна и приводит к вылету.

Чтобы избежать получения исключения, мы можем убрать всё, что предназначено для запроса в сеть. Примерно вот так:

8
инструкций превратились в 2: загрузка строки с числом (которое может
быть любым) и сохранение в локальную переменную под номером 1.

Сохраняем и проверяем результат.

Было.
Было.
Стало.
Стало.

Из
декомпилированного кода полностью исчез кусок с запросом. Осталась лишь
загрузка константной строки и сравнение с "Failure", которое всегда
будет успешным.

Сохраняем модуль и пытаемся запускать опять.

Жопиздан!
Жопиздан!

С
этой задачей успешно справился человек, который не смыслит в
программировании вообще ничего. По его словам, он джва года ждал эту
игру!

Но не всё так просто. Если попытаться пройти любой уровень, то вылетит то же самое исключение.

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

А для надежности выделяем WebClient, нажимаем "Анализировать" и смотрим, где еще может ждать нас подлянка.

В
Finish.Update() мы ошибку только что исправили, в Game1.LoadContent()
исправили в самом начале, а Login.button1_Click(), Program.Main() и
Title.Update() нас не интересуют, так как достаточно просто не делать
того, что приведет к обращению в сеть (а конкретно: не открывать диалог
входа, не указывать никакие аргументы при запуске и не пытаться
авторизоваться через главное меню (вроде бы не реализовано)).

Вуаля. Игра работает как прежде.

Источник: vombat.su

Стресс-тест не всегда показателен

41
Читалка

Вчера ночью решил впервые за год катнуть в Baldur's Gate 3.

Важная ремарка: с тех пор сменился процессор - c 13600K на 14600KF. Знаю, не самая умная покупка, но летом прошлого года от ИИ-компаний уже начало нести компостом. Поэтому я начал закупать запасное железо. Вернее, ставить всё новое в комп и отправлять старое в запас.

Настройки power limits много раз менялись, ибо выяснилось, что при текущем охлаждении стандартных 181 ватт для него много. Но в конечном итоге вернулся обратно к 181 ватт, потому что тесты показали, что в тех играх, в которые я обычно катаю, тротлинг всё равно не достигается.

Вернёмся к БГ3. Не прошло и катсцены, чую, что ловлю тепловой удар... При выключенном отоплении... Шозанах?

Открываю экран стресс-теста Аиды64, не включая сам стресс-тест, а там...

Оказалось, эта херня греется. Не особо опасно, с едва заметным троттлином, но комната 2х3 превращается в сауну. Понизил ватты до 120 (и для лонг и для шорт) - ничего не изменилось. Понизил до 100 ватт, поставил настройки графики в игре на минимум - всё равно сработала детекция троттлинга и ядро 3 стабильно ходит за 90 градусов. Как?

Забавно, что я обычно играют в SPT-версию Escape From Tarkov, и там температуры всех ядер сидят в районе 70. Мало того, что сама игра знаменита высокими требованиями к процессору и в целом сделана из говна и палок - я ещё и установил 66 серверных модов (эмулятор сервера работает на этом же компе одновременно с игрой). Один из этих модов - MOAR - даёт мне изменять количество и размеры волн ИИ (как "игроков" так и диких), а именно расчёты, связанные с персонажами в рейде - это самые ЦП-нагруженные операции в игре. Тем не менее, игра хорошо работает даже с трехкратно увеличенными волнами спавнов, и проц не греется. Каким образом BG3 оказалась тяжелее EFT+SPT?

Решил на следующий день поменять термопасту на всякий случай. Менял недавно, но вдруг косякнул. Температуры стали сильно лучше, отыграл Power Limit взад до 120 ватт без троттлинга, температуры в БГ3 в целом ниже 90 градусов и не триггерят троттлинг. Но вот что интересно...

Первая половина графика - это моя сессия в BG3. Вторая половина - это стресс-тест Аида64. Несмотря на то, что игра в среднем использует 20% мощности процессора, ряд ядер часто достигает пограничных температур. Тем временем во время стресс-теста, использующего 100% мощности, выданной процессору, такого не наблюдалось.

Словом, у меня появился новый бенчмарк. И альтернативный способ отопления хаты, пока не потеплело. Страшно подумать. что будет летом.

Недетские игры

49

Вчера приходили гости, проводила им конкурсы, чтобы не просто в настолки рубиться (хотя это тоже интересно). И вот нашла идею игры, которой хочу поделиться, потому что очень понравилось!

Называется "Странные животные".

Для игры нужна коробка пластилина (бюджет 100 рублей, в Фиг-прайсе). Я добавила к бюджету ещё покупку призов победителям, но это не обязательно. Поймать фан можно и без них.

Это Ковролинь
Это Ковролинь

Что делать: все участники игры придумывают и пишут на маленьких листочках названия несуществующих животных. Листочки сворачивают и хаотично меняются ими, можно через вытягивание из шапки.

Желательно проверить, чтобы никто не вытянул свой собственный листочек, иначе ему будет не так интересно.

Правда он шикарен?
Правда он шикарен?

Далее ставится таймер на 10 минут и каждый за это время лепит животное, название которого ему досталось.

У нас получились вот такие:

Затем, когда все рассмотрели животных и поржали над их видушником, начинается вторая часть игры: каждый называет животное, которое лепил, и рассказывает о нём. Где оно живёт, что ест, какие у него повадки, как размножается и т. д. Никаких ограничений, кроме вашей фантазии!

Это пальмовый хрюкостяг
Это пальмовый хрюкостяг

Всеобщий ржач гарантирован!

Я ещё вручила призы за три номинации: лучший художник (голосовали за наиболее понравившееся животное), лучшее придуманное название и лучший рассказ.

Это танцерог
Это танцерог

У нас как лучший художник победил автор Ковролиня, лучшим названием хотели выбрать его же, но я сняла его с конкурса, потому что Ковролиня придумала я, и победил Шерстистый Жопозавр. А лучший рассказ был про Шнекороторного коня.

Это жопозавр
Это жопозавр
Змеюшка
Змеюшка

Ребятки-лисятки, а вы что-нибудь подобное проводите? Расскажите, а? Потырю идеи на следующие мероприятия :)