Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)

Сегодня узнаем как дропать игры всего за 15 секунд, сойти с ума и начать реверс-инжинирить их, причем здесь забытая (почти) всеми игра из 2007 года, и как консольное управление оказалось отзывчивее по чистой случайности(?)

https://twitter.com/Klara_Art/status/1402744516470358018
https://twitter.com/Klara_Art/status/1402744516470358018

Зачем?

Недавно уважаемая Маря-сама выступила с челленджом, в котором надо рассказать о неначатых или дропнутых играх. Я не особо любитель писать буквы в публицистическом стиле (мне вломину (и я не умею)), но это напомнило об одной причине, из-за которой я так и не смог поиграть в множество крайне интересных проектов, которые при этом мне очень импонируют. Поэтому я попытаюсь совместить свои личные страдания о невозможности поиграть в то, что мне очень сильно нравится, с краткой заметкой о том, почему же так вышло.

Что общего?

Все игры на скриншотах объединены чем-то: инди, у них хороший саундтрек, интересная стилистика, etc. Список игр мог бы быть больше, но этого будет достаточно в качестве примера, потому что нужен нам только один их аспект - 2D'шное управление.

Что-то лишнее.

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

Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)

Но давайте пойдем от обратного и зададим такие два вопроса:

• Что прицел забыл в этом месте?

Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)

• Для чего нам вся эта часть экрана?

Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)

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

Паззл с палкой в колесе

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

...Ну давай, пройди уже перед перед дверью
...Ну давай, пройди уже перед перед дверью

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

Всё это, как водится, - реклама.

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

ПК геймерам сейчас должно быть СТЫДНО за такое!
ПК геймерам сейчас должно быть СТЫДНО за такое!

Давать стику возможность спокойно ходить по всему экрану - откровенно плохая идея, и из-за того, что на геймпаде это очевидно в сравнении с клава-мышью, для геймпадов сделали ограничение на максимальное удаление курсора от персонажа. Правым стиком мы фликами выбираем направление отклоняя его в крайнее положение (что тоже далеко от идеала, мягко говоря) и можем переместить его в противоположное направление другим резким и точным фликом не боясь, что курсор улетит куда то слишком далеко. В такой ситуации сразу отбрасывается первые два вопроса из начала статьи - в напряженных ситуациях мы знаем где наш курсор и мы всегда знаем, где он будет при следующем нашем действии.
И это значительно отличает геймпадное управление от клава-мыши! Ведь в ситуации, когда нам хотелось бы резко развернуться, чтобы на рефлексе отстрелить уже бегущего за нами противника, мы не знаем сколько именно нам нужно будет пройти расстояния мыши от текущего направления до противоположного, поэтому либо это будет размашистый флик через весь ковер, который физически будет медленным и не очень приятным по исполнению, но гарантированным, либо у нас есть шанс случайно не довести мышь ровно настолько, насколько нужно для разворота. Этот фактор сильно замедляет геймплей и делает его "односторонним", прицеливание на развороте и вбок ощущается слишком неинтуитивным.
Можно, конечно же, сказать, что в этом и есть суть HM, но моё мнение таково, что если бы у игроков было небольшое окно для игры на рефлексах, это не сильно навредило её паззл составляющей, т.к полностью на реакции игра всё равно не проходилась бы, но зато ощущалась бы намного отзывчивее в у управлении и просто приятнее, а для действительно скилловых игроков открыла бы возможность еще более хардкорного и динамичного прохождения с быстрыми врывами в комнаты. К тому же если такой метод управления есть уже на геймпаде, почему его не должно быть с клава-мыши?

Тот, кто почти смог

Запускайте сирены, ибо в одной из без преувеличения лучших инди игр, нам всё-таки дали то, что положено по праву клава-мыши энджойера:

Но рано радоваться, ведь это всё еще не то, что нам нужно на самом деле. На эту настройку довольно редко обращают внимание, потому что... она не помогает. Если открыть вкладку обсуждений в Steam, то можно увидеть большое количество подсказок новым игрокам о том, что directional дэши лучше, чем reticle, поэтому все используют 8-направленные дэши, вместо 360 градусов. Это не всегда удобно, не очень точно, и есть риск простейшего мисинпута, что не очень то приятно.
Теперь от плохих новостей к худшим. Разработчики понимали, что не все фликают на одинаковой скорости с одинаковым расстоянием (т.е. чувствительностью самой мыши или DPI), поэтому нужен был какой-то твик регулировки этого в самой игре и они добавили параметр, который так и называется - "mouse sensitivity". Теперь на схемах Мэддисона объясняю, почему это не работает в играх с 2D управлением:

Каждому геймеру известно, что чем выше чувствительность мыши, тем выше шанс совершить ошибку и меньше окно для микродвижений уже постфактум флика. А так как чем выше расстояние, тем выше амплитуда возможных лишних движений, и тем хуже сказывается простое повышение чувствительности мыши, особенно при довольно неествественных для руки диагональных движений (за исключением некоторых хватов и русского стиля). По итогу логично было бы ограничить наше движение мышью, чтобы снизить потенциальную амплитуду, но вот в чём дело: у каждого игрока разный порог максимального "чистого флика", а кому то хочется просто больше скорости взамен точности прицеливания (как мне, например), поэтому настройка, которая нам действительно нужна - точная регулировка максимального удаления курсора от персонажа, которой в Furi, к сожалению, нет.

Chain чуть не помер от кринжа, когда увидел насколько далеко разработчики запихнули курсор при reticle типе контроля.
Chain чуть не помер от кринжа, когда увидел насколько далеко разработчики запихнули курсор при reticle типе контроля.

Виновник торжества

И вот мы дошли до игры, из-за идеального технического исполнения которой, все остальные 2D игры ощущаются недоделанными. Кто-то мог узнать её по арту в начале статьи, для остальных, позвольте мне представить - Teeworlds.

...Всё это, как водится...
...Всё это, как водится...

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

Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)
Проблема, которая не существует - самая полезная и самая редкая настройка в играх (feat. челлендж непройденных игр)

Две настройки, которые позволяют регулировать максимальное удаление курсора - на статичную и на динамическую камеру соответственно (меняются при нажатии бинда, в моём случае это "W").

Вот и всё! Проще некуда. Но именно это позволяет нам делать такие серии точных и быстрых инпутов:

Запись скукоженная, потому что я сам играю в растянутом на 16:9 800x600 

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

Вам понравится. Обещаю.

Обратите внимание, как часто игроки меняют направления курсора, иногда успевая одновременно отстреливаться и таскать свой фриз по карте, а также на этот безумный уровень скилла в казалось бы простой 2D игре.

Избалован навсегда

Teeworlds - особенный экспириенс, после которого такая мелочь, как настройка максимального удаления прицела, ощущается как что-то само собой разумеющееся. Но разработчиков других игр это не сильно волнует, и поэтому каждый раз, когда я смотрю на какие-либо другие 2D игры, мне достаточно всего одного взгляда, чтобы понять, насколько некомфортно будет в них играть. Это что-то на уровне CS с геймпадом, если проводить аналогию с чем-то более привычным.

...Но играть то хочется!

Арка безумия

Даже не имея бэкграунда в геймдевелопменте, всё равно смотря на Furi, что-то наталкивает на мысль, что если в игре уже есть ограничение мыши по ретиклу и почему-то оно с определенным фиксированным расстоянием установленным по дефолту, значит где-то есть переменная с этим значением, которое мы можем поменять?
За 7 лет существования Furi, на неё не вышло ни одного мода, оно и немудрено - игра без моддинг тулов на Unity, да еще и не open source. Значит если моды не идут к Магомету, то Магомет становится моддером. Ровно с такой мыслью я и сел за эту задачу, не имея никакого опыта ни в Unity, ни в C#, ни в реверс-инжиниринге (да, это правильное написание).

Далее будет пошаговый гайд на изменение расстояния до ретикла в Furi, поэтому если вам эта игра или её моддинг не интересен - скипайте сегмент.

Step 1:
Заходим на гитхаб декомпилятора dnSpy (https://github.com/dnSpy/dnSpy/releases) и скачиваем zip архив. В нём будет экзешник нашего редактора. Запускаем.

Step 2:
Тыкаем на "File" в верхнем левом углу, открываем следующий путь: папка игры в стимовской директории - Furi Data - Managed - Assembly-CSharp.dll

Step 3:
Внизу в поиске пишем это: "OnFloorReticleInstantiated". Дважды кликаем по найденному объекту и видим это:

Step 4:
На строке 674 видим такую строчку: this.reticleMaxDistance = Tweakables.instance.mouseKeyboardSettings.reticleMaxDistance; Нам нужно удалить всё, что идет после равно и захардкодить туда своё значение - для этого: правый клик - Edit Method - в появившемся окне удаляем ненужное (важно оставить точку с запятой в конце!) - пишем нужное нам значение* - нажимаем внизу compile.

*Игра по дефолту использует значение удаления в 6f, соответственно если поставить больше шести, то прицел будет дальше от персонажа, и наоборот. Переменная принимает значения с запятой, поэтому можно довольно тонко настроить его под себя.

Step 5:
В меню "File" сохраняем модуль (или нажимаем сочетание ctrl + shift + S), проверяем чтобы пути совпадали, нажимаем OK.

Поздравляю! Теперь только Вы вершите свою судьбу и определяете, где может быть Ваш курсор.

Конечно же поиск этой переменной не был настолько легким для меня как это описано выше, любой процесс копания в чужом коде с отсутствующей документацией и без какого-либо понимания процесса - то ещё занятие, даже на освоение хоткеев и интерфейса декомпилятора ушло немало времени, не говоря уж о поиске решения. Что иронично, переменную со значением удаления ретикла я нашел сразу, но её изменение не приводило ни к какому результату в самой игре, ибо как мне объяснили более прошаренные Unity девелоперы, это значение вшито в сам код поведения объекта, а то что я обнаружил в местном "хранилище" значений - это переменные по умолчанию, которые потом перезаписываются на то, что написано в коде в так называемых "префабах", поэтому то мы и удаляем эту зависимость после "равно" на третьем шагу.

Может быть это и был интересный опыт, но моддить каждую игру так под себя - явно не панацея, так что если вдруг этот текст читает какой-нибудь инди девелопер, умоляю, напиши эти три строчки кода, на Unity на них даже есть гайд, пора уже вводить это как стандарт в индустрию.

Этому не видать конца

Я большой любитель инди сцены, и тем более бодрого экшена! Но каждый раз, когда я натыкаюсь на интересную 2D игру, всегда вижу то самое маленькое разочарование, как это было с упомянутой в начале Rusted Moss, разработку которой я наблюдал с самого начала как автор стал постить в твиттер, из-за того что в игре есть моя любимая крюк-кошка.

Точно так же и с другими играми: Hotline Miami мне очень нравится за его сюжет, Katana Zero - за стилистику, Furi - буквально за всё ...кроме сюжета на тру концовке. Но играть в них в то же время больно и помимо этих четырех игр было ещё невесть сколько дропнутых 2D проектов, которые мне просто не пришли на ум на начало написания заметки.

Это обидно, что девелоперы не осознают потенциала 2D PvP игр и динамичности, которую можно выжать из такой перспективы. По сути всё что остается - это Teeworlds, который всё больше теряет популярность и остаётся хидден гемом в наши дни.
Но я могу ошибаться!

Поэтому мимопроходящих агитирую к накидыванию в комменты примеров с той самой злосчастной настройкой, или, может быть, у вас тоже есть подобная "глупая" причина, из-за которой часто были дропнуты игры? Было бы интересно узнать.

2727
10 комментариев

Не заслуженно мало внимания к такому классному лонгу!

3
Ответить

Выглядит как персональный доеб, если честно.
На мой взгляд, гораздо более частая проблема такого управления - это плохо видимый курсор мыши. Даже если он на чистом экране виден хорошо, то вот в зарубе его может быть очень легко потерять.
Все нормальные клавомышеры прекрасно знают, что если в игре можно регулировать сенс и если они получают нормальный фидбек о том, куда они целятся (для 2d-управления это как раз ХОРОШО ВИДИМЫЙ курсор) - то все можно настроить так, что управляться с игрой будет удобно. Где-то повышением сенса, чтоб курсор было легко ставить в любую точку экрана, где-то понижением (но для 2d обычно требуется повышение).

1
Ответить

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

2
Ответить

Нарезка с лучшими моментами в Teeworlds впечатляет.

1
Ответить

Необычный пост, респек. По теме, как стрелкоигрок я вообще с 90% шансом дропну игру, если она динамичная и там используется мышь лол. Хотя в детстве нормально было в transformice играть, как раз 2д игра-платформер, где используется мышь. Там даже пвп есть. Единственный минус: по сравнению с лучшими годами она мертва

1
Ответить

Не читал, но доёбы уровня " мне не удобно плак плак "

Ответить

как по мне херня

Ответить