10 ноября 10 нояб. 16 2978

Движок Source — кузница лучшего мувмента в индустрии

+32

Недавно я блуждал в поисках игры, которую я бы мог пройти. Игровая импотенция, все дела, вы меня поймёте. Я полез в свою библиотеку Steam и наткнулся на одну примечательную игру — Half-Life: Opposing Force. Я считаю себя фанатом игр Valve, особенно вселенной Half-Life, поэтому решил закрыть данный гештальт и пройти игру.

Half-Life: Opposing Force

Дата выхода
18 ноября 1999
Платформы
PC | Mac | Linux
Жанры
1.5K

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

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

Тем более если запустить любую игру Valve, вне зависимости от её возраста, у тебя не возникнет каких-то проблем с адаптацией. Базовый геймплей буквально не меняли уже более 20 лет! Но почему же?

Я, конечно, ещё давно прикинул у себя в голове одну интересную мысль: почему-то все игры на семействе движков Source играются мега-плавно. Причём я имею в виду передвижение, такие базовые вещи, о которых мы даже не задумываемся. Жмём «W» и просто идём вперёд, да? Игре, блин, 25 лет, а она совсем не чувствуется старой.

И ведь я не один такой! Люди до сих пор тратят тысячи часов в Counter-Strike: Source и даже на Counter-Strike 1.6! Люди отказываются переходить в новую часть, отнекиваясь тем, что «раньше было лучше». Да за примером далеко ходить не надо. Многие киберспортсмены из современной Counter-Strike 2 по-прежнему играют в ту самую CS 1.6! Эта игра старше, чем половина аудитории этого сайта. Короче, тут точно собака зарыта, и нужно понять, почему мувмент игр Valve все так сильно любят.

Один из юных дарований CS2 — topo, поставил рекорды по времени на многих картах режима KZ из той самой CS 1.6Тот же ropz, которого все считают лучшим игроком по мувменту, по-прежнему играет в CS 1.6 и активно там тренируется.
Один из юных дарований CS2 — topo, поставил рекорды по времени на многих картах режима KZ из той самой CS 1.6
Тот же ropz, которого все считают лучшим игроком по мувменту, по-прежнему играет в CS 1.6 и активно там тренируется.

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

Всё гениальное простое

Всего я выделил два главных столпа мувмента, на которых держатся quakelite-движки, и простота — один из них.

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

Как у нас устроено базовое передвижение в, например, Team Fortress 2? Мы нажимаем клавишу вперёд, набираем скорость, упираемся в какой-то лимит по скорости, а когда отпускаем клавишу, то плавненько замедляемся и останавливаемся. Похоже на реальную жизнь? Ну, ответ да, раз мы об этом не задумываемся и сразу привыкаем к этому. Конечно, у нас есть ещё всякие фичи, как баннихопинг и стрейфинг, но вот вы когда-нибудь задумывались о том, как оно вообще устроено? Почему моделька ведёт себя так, а не по-другому? У меня есть ответ: Quake!

Как один баг сделал Quake ещё круче

Quake

Дата выхода
22 июня 1996
Платформы
PC | Mac | Linux | PS4 | PS5 | XONE | XBOXSX | N64 | NSW | Amiga | SAT | WM
Жанр
1K

Движок GoldSrc, на котором был сделан первый Half-Life и все дополнения к нему, является очень переделанным форком движка оригинальной Quake, из-за чего все системы передвижения были грамотно скопированы в движок Valve. Забегая вперёд скажу, что все последующие движки Valve (Source, Source 2) заимствуют ту же модель поведения, поэтому она применима и к последующим творениям американской компании.

Так вот, механики взяты из Quake, поэтому обратимся к её коду.

Итак, Quake был первой полноценной трёхмерной игрой. Это значит, что Джону Кармаку нужно было что-то придумывать и изобретать движок самостоятельно. К сожалению или к счастью, технические ограничения того времени не могли развязать руки этому гениальному программисту, поэтому он всё сделал максимально просто.

Начну с самого базового: движение вперёд. Чтобы пойти вперёд, нам нужно нажать кнопку W (или любую другую). Логично? Логично. А теперь посмотрим, как это устроено в движке игры.

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

Дальнейшие скриншоты были взяты из видео с канала Matt’s Ramblings — *тык*
Дальнейшие скриншоты были взяты из видео с канала Matt’s Ramblings — *тык*

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

Для тех, кто забыл
Для тех, кто забыл

По этой причине, кстати, и существует механика контрстрейфинга. Если зажать две противоположные кнопки A и D одновременно, то получатся противоположные направленные равные вектора. Их сумма равна нулю, поэтому если нажать эти две кнопки, то моделька остановится. Так как кнопки действуют независимо друг от друга и уже конечный результат суммируется, то получается, что мы имеем полный контроль над моделькой. Вследствие этого получается делать чёткие распики по пикселям, так как нас ограничивает только физика и не более.

Готовьтесь: весь блог я буду прикреплять свои шедевро-хайлайты. Прошу без осуждения)

С этим связано ещё одно моё интересное наблюдение: если нажать все четыре кнопки, то моделька тоже не будет идти, так как получится то же самое, но в другом направлении. Интересно, что данный «тест» проходят не все современные игры. Можно ли их считать поломанными с самого начала?)

Итак, velocity — это вектор, который олицетворяет движение модельки, то есть то, как она двигается для движка игры. wishdir — это нормализованный вектор, который олицетворяет движение игрока, и обновляется каждый раз, когда двигается мышка или клавиша.

Отлично! Всё работает, как часы. Добавляем сюда трение и ускорение, чтобы игрок плавно останавливался и разгонялся.

Правда где-то здесь зарыт интересный баг. Давайте разбираться:

// код сокращён для упрощённого чтения.
// оригинал можно найти в файле sv_user.с


cvar_t	sv_maxspeed = {"sv_maxspeed", "320", false, true};
cvar_t	sv_accelerate = {"sv_accelerate", "10"};

void SV_Accelerate (void)
{
	currentspeed = DotProduct (velocity, wishdir);
	addspeed = wishspeed - currentspeed;
// wishspeed — это sv_maxspeed, если говорить упрощённо 
        if (addspeed <= 0)
		return;

	accelspeed = sv_accelerate.value*host_frametime*wishspeed;
        if (accelspeed > addspeed)
		accelspeed = addspeed;
	
	for (i=0 ; i<3 ; i++)
		velocity[i] += accelspeed*wishdir[i];	

}

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

Чтобы проверить, нужно ли добавлять ещё скорости, находится переменная addspeed. Это разность между максимальной скоростью, которая ограничена той переменной сверху, и скоростью игрока в данный момент. Чтобы ограничить ускорение игрока, рассчитывается accelspeed. В конце концов, эта вся катавасия умножается на wishdir и прибавляется к velocity, что выливается в увеличении скорости.
А баг у нас находится в том, как рассчитывается окончательный accelspeed.

Каждый раз, чтобы проверить надобность в добавлении скорости, у нас находится скалярное произведение velocity и wishdir, то есть два вектора, один из которых мы можем легко менять. Благодаря тому, что currentspeed — это скалярное произведение, то это число можно менять в зависимости от того, какой угол лежит между двумя векторами. Мы же помним, что wishdir — нормализованный вектор, поэтому мы можем влиять только на косинус угла между этими векторами.

В этом случае можно выполнить этот пресловутый баг: если addspeed будет равен accelspeed, то на следующем кадре мы можем обойти проверку if и увеличить скорость, делая её больше 320 юнитов в секунду.

Такой простой баг, который можно пофиксить двумя строчками кода, открыл настоящий ящик Пандоры.
Например, родились такие фишки оригинальной Quake, как zig-zagging и wall-running. Разработчики дали чётко понять, что раз эти фичи пользуются повсеместно, то они не будут это фиксить, так как это, мол, просто fun to play! Правда нам это не важно, потому что баги, связанные с передвижением по поверхности, были в дальнейшем пофикшены. Нам же нужен воздух!

В определении sv_airaccelerate лежит тот же самый баг, только с двумя особенностями.

// код сокращён для упрощённого чтения.
// оригинал можно найти в файле sv_user.с 


void SV_AirAccelerate (vec3_t wishveloc)
{
	
	wishspd = VectorNormalize (wishveloc);
	if (wishspd > 30)
		wishspd = 30;
	currentspeed = DotProduct (velocity, wishveloc);
	addspeed = wishspd - currentspeed;
	if (addspeed <= 0)
		return;

	accelspeed = sv_accelerate.value*wishspeed * host_frametime;
	if (accelspeed > addspeed)
		accelspeed = addspeed;
	
	for (i=0 ; i<3 ; i++)
		velocity[i] += accelspeed*wishveloc[i];	
}

Во-первых, максимальная скорость ограничена 30 юнитами. Это значит, что чтобы увеличивать скорость через баг, то нужен более прямой угол, чем для бага на поверхности. Своими ручками мы можем произвести угол максимум в 90 градусов.

Во-вторых, тут не применяется трение о поверхность. Видимо, трение об воздух решили не реализовывать, так как оно всё равно ни на что не влияет.

Тот же баг, который позволяет выйти за пределы установленного лимита скорости, применим и в воздухе. Джон Кармак, когда писал эти строчки кода, даже не представлял, во что это выльется…
Поэтому если мы создаём угол примерно в 90 градусов между velocity и wishdir, то получается увеличение скорости, то есть strafe. Мало того, что оно родилось из бага, оно ещё и легко в освоении, интуитивно понятно и требует сотни часов на отработку! Ясен пень, что такую золотую жилу выпиливать из игры не будут.

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

На видео — JoeQuake, один из фанатских портов Quake с сохранением оригинального кода. Для ознакомления я всё-таки рекомендую Quakespasm-spiked, так как он выглядит и играется приятнее. JoeQuake — это тема про полную совместимость с оригиналом, из-за чего этот порт обычно используется для спидранов

Что вообще это значит? Мувмент игры основан на самых базовых принципах реального мира и полностью построен на чистой математике, из-за чего, вместе с багами, получается простейший базис, который, подобно распростёртым объятиям, встречает нового игрока и даёт ему освоиться. Это существенно снижает порог вхождения в игру, а вкупе с небольшими исправлениями от самой Valve, человек, который ни разу игру не запускал, сразу поймёт в чём дело. В принципе, это и есть причина того, что мувмент как-то сильно не меняли за эти 20+ лет, это просто не нужно делать, если и так всё работает.

Только попробуйте назвать CS&amp;nbsp;более сложной, чем Quake: фанаты второй найдут 1000 и&amp;nbsp;1 причину, почему вы&amp;nbsp;не&amp;nbsp;правы и&amp;nbsp;расскажут до&amp;nbsp;селе не&amp;nbsp;виданные факты о&amp;nbsp;вас и&amp;nbsp;о&amp;nbsp;ваших близких.
Только попробуйте назвать CS более сложной, чем Quake: фанаты второй найдут 1000 и 1 причину, почему вы не правы и расскажут до селе не виданные факты о вас и о ваших близких.

Эта же простота и вылилась в то, что у нас появились доселе невиданные фишки аля стрейфинга, которые тоже легки в освоении и интуитивно понятны обычному игроку. Всё-таки нужно признать, что для такого нужно было невиданное везение, которое, по всей видимости, было у id Software.

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

 

Да, он сегментированный и имеет не лучшую репутацию в коммьюнити, но всё равно все движения отточены до идеала! Смотреть такое — одно удовольствие

Попробуйте запустить оригинальный Quake сегодня. Я не говорю про тот новый ремастер, который был перенесён на новый движок, а вот прям оригинал. Или хотя бы один из фанатских портов, но главное тот, где остался оригинальный код движка. Игра чувствуется всё так же замечательно! Вообще не чувствуется, что игре больше 25 лет. Возможно, это я такой не искушённый геймер, который считает это приятным, но блин, попробуйте только поспорить! Спойлер: у вас не получится. Это настоящий шедевр на все времена, не иначе.

Нет предела совершенству

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

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

Мувмент в quakelite-движах можно описать одной фразой: easy to learn, hard to master. Ты быстро учишься базовым навыкам, а потом оттачиваешь их до бесконечности в погоне быть самым лучшим и крутым. Это позволяет соревноваться игрокам не только в том, кто лучше стреляет или кто лучше думает, но и в том, кто лучше всего двигается. Новая стезя, где может возникнуть конкуренция, позволяет усложнить геймдизайн и предоставить новую плоскость, в которой игрок, как дирижёр, может контролировать своего персонажа. Это, в свою очередь, повышает интерес у игроков.

Передвижение игр семейства движков Source можно обозвать таким понятием, как skill-based movement. Чтобы правильно и эффективно двигаться в игре, нужно обладать скиллом, да ещё ого-го каким. Такие механики, как стрейфинг, баннихоппинг, рокетджампинг и другие требуют от игрока сноровки и навыков, которые нужно оттачивать десятки и сотнями часов. Да что уж там говорить, на основе этих механик свои местячковые турниры проводят!

 

Вот, например, турнир, посвящённый баннихопингу, с призовым фондом в 2500 долларов!

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

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

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

Когда мы начали разработку [Apex Legends], мы отталкивались от Titanfall 2, и мы не знали, что в игре не будет двойного прыжка или бега по стене. Решение убрать эти механики пришли примерно из-за того, плейтест шёл вразрез с нашими целями: сделать стратегическую, поддающуюся обучению, глубокую игру.
Мы думали насчёт таких вещей, как бег по стене и двойной прыжок, на протяжении долгого промежутка времени, временно у нас был тройной прыжок, они делают сражение слишком сложными для победы в них. Ты не можешь предугадать, откуда появляются игроки или куда ты их выталкиваешь, и такое бы случалось чаще, чем ты бы мог предугадать и ответить на них. Так что в это реально весело играть, но это очень плохо влияет на разборчивость в бою.

Дрю МакКой в интервью Eurogamer

И мы с этим ничего не можем поделать, ведь время изменилось и игры сейчас идут по пути простоты игровых механик. Но за высокую цену платят полным контролем своей моделькой, которую ограничивает только разве лимиты самого движка. Если ты хочешь реально всех разваливать всех в этой игре, то ты должен этому научиться и потратить очень много времени. Разве не в этом состоит главное преимущество онлайн-игр? Большинство современных FPS (за парочкой исключений) не предоставляют игроку простора для всяческих экспериментов над собой. В том же Overwatch Фарра, которая всеми силами старается напомнить о своём протеже — Солдате из TF2, хоть и имеет ракетную установку, но совсем не умеет от неё прыгать.

Буквально однокнопочный (двухкнопочный) геймплей

Ну, у вас получится получить какое-то отталкивание, но оно практически не несёт практической пользы в игре. Чтобы взлететь, нужно просто прожать пробел или кнопку умения. То, для чего в TF2 вам нужно быстро посмотреть вниз, выстрелить, нажать одновременно прыжок и присед, посмотреть вверх и вернуть свою камеру в прежнее положение, в Overwatch вы нажимаете буквально одну кнопку. Это просто скучно.

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

Вы только запустили игру, практически ничего о ней не знаете. Где-то даже толкового обучения нет, но у вас всё равно есть то стремление, которое отключает полностью ваш здравый смысл. Вы заходите на сервер и вас УНИЖАЮТ. Подло, некрасиво, беспощадно уничтожают. Никакого матчмейкинга, никакого подбора по скиллу, ты сражаешься с олдами игры, которые видят в тебе очередного нубаса, который ни на что не способен. Ты должен приспосабливаться любыми возможными средствами, которые тебе только доступны. Может, он просто читер? Почему он так издевается над теми, кто только зашёл в эту игру? У тебя ноль шансов перед ним.

Честно ли это? Да конечно же нет! Но кто сказал, что игры должны быть всегда честными? Нет лучшей мотивации, чем жажда стать лучше, лучшей версией себя. И игры тебе всегда показывают людей, которые лучше тебя. Разве это не стимул развиваться дальше? Лично со мной это сработало, как и с многими людьми на этой планете. Я не говорю, что игры не должны иметь подбор по скиллу, я говорю о том, чтобы людей иногда из зоны комфорта насильно выпихивали.

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

Обожаю кликбейтные заголовки и&amp;nbsp;превьюшки… Если что, по&amp;nbsp;канону игровая индустрия умерла уже 24 раза, так что нормально, ещё переживём.
Обожаю кликбейтные заголовки и превьюшки… Если что, по канону игровая индустрия умерла уже 24 раза, так что нормально, ещё переживём.

Например, Valve прекрасно понимали, что они делают. При создании TF2 они намеренно переделали механику рокетджампов, чтобы сделать её более универсальной и скиллозависимой.

min (1000, damage * volume multiplier * scale)

Данный код я позаимствовал отсюда, так как не смог найти оригинал.

Эта функция отвечает за то отбрасывание, которые ты получаешь от урона по самому себе.

  • damage — это урон, тут всё понятно.
  • volume multiplier — это произведение констант измерений модельки в 
    юнитах поделённое на это же произведение, но в текущий момент времени:
    (48 * 48 * 82 / длина * ширина * высота).
    Всё меняется, когда мы приседаем. Наша высота с 82 юнитов магическим
    образом превращается в 62 юнита, а когда получаем урон, то это значение
    падает до 52 юнитов. Получается, что если мы приседаем и одновременно
    подпрыгиваем на ракете, то у нас получается ускорение в 1,5 раза.
    Когда мы просто стоим, то это 100% Когда приседаем — 132,25806% Когда приседаем и наносим самим себе урон — 149,09091%
  • scale — разные константы в зависимости от условий получения урона
    например:
    tf_damageforcescale_self_soldier_rj 10.0
    tf_damageforcescale_self_soldier_badrj 5.0
    В разных случаях разные константы, тут всё просто.

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

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

Здесь, конечно, у меня не было какого-то жёсткого преимущества, просто классный момент: 3

Игра тебе даже на уровне микро взаимодействий даёт выбор, и ты волен склоняться к тому, что сам желаешь нужным. Ты тут царь и ты контролируешь всем, к чему только твои руки дотянутся. Вот что делает этот мувмент лучшим в индустрии.

В целом, в это просто весело играть! Ну весело в это играть, ВЕСЕЛО!!! Как мне ещё описать то наслаждение, которые ты испытываешь при красивом баннихопчике или при правильном рокетджампе, который тебе позволил перевернуть весь ход игры. Это невозможно описать, вот в чём проблема. Это нужно взять и попробовать. Я, конечно, понимаю, что это моя проблема лежит в том, что мне слов не хватает, дабы описать всю эту красоту, но, наверное, я лучше прикреплю ещё один видос. Аааах, ну посмотрите же на эту красотищу!!

 

Это настоящее искусство.

Вот почему старички всё ещё играют в привычный им CS 1.6. Они всё ещё не достигли какого-то потолка, после которого они не могут развиваться. Игры, в отличии от спорта, не затрачивают так много сил и энергии, поэтому люди, в надежде стать лучшим, готовы тратить тысячи часов на любимую игру. У игр Valve, вкупе с этим пресловутым мувментом, огромный потенциал на реиграбельность, ведь помимо обычных режимов найдутся и другие занятия. Одним из таких занятий и стали режимы, основанные на передвижении игрока. KZ, HS, jump, surf карты всегда занимали и будут занимать топы сторонних режимов мультиплеерных игр Valve, ведь у тебя есть чёткая мотивация совершенствоваться. Вот в чём всё состоит всё обаяние этих игр. Чем глубже и реиграбельнее проект, тем совершеннее становятся в ней механики, фишки и сам геймплей. Задумайтесь, почему люди всё ещё играют в старые части Quake? Да всё по той же причине, которую я только что расписал.

Те же яйца, только в профиль

Да что уж там говорить, когда можно привести пример. Apex: Legends сделан на мега перелопаченном первом Source, а значит, мувмент там более-менее похож. Понятно, что базовое передвижение всё такое же плавное и приятное, но вот возьмём в пример моего любимого героя — Патфайндер. У него есть такое великолепное приспособление, как крюк-кошка. О Бог мой, что с ним только можно вытворять…

И это просто «база», которую должен знать каждый мейнер Патфайндера

Игроки научились абузить этот крюк-кошку по самые не хочу. Опять же, приятный мувмент на персонаже, который позволяет находить новые нюансы движка и позволяет долго и упорно тренировать этот навык. Причём это не так сложно в освоении и понятно даже такому ламеру, как я. Думаю, что даже несмотря на заявления разработчиков об упрощённом мувменте (я же не беру в пример первые два Titanfall, хотя надо бы. Это, пожалуй, тема для отдельного разговора), у них получилось найти маломальский компромисс между легкостью и глубиной. Конечно, крюк-кошка никогда не сравнится с механикой рокетджампинга из TF2, но это всё ещё приятная механика, которой нужно учиться, и это великолепно.

И у Apex есть куча других примеров, просто они не такие репрезентабельные и наглядные. Игра изобилует такими приколами и всё-таки немного, но сохранила дух олдскульных шутеров (и Titanfall в частности), несмотря на слова бывшего продюсера игры, чьё интервью я вставлял ранее. И что я могу сказать по этому поводу? Ну, это классно!

Ссылка: *тык*
Ссылка: *тык*

Буду признателен, если вы приведёте в пример ещё современных мультиплеерных шутанов, которые идут против тренда и оставляют комплексные механики.

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

Движок Source и ему подобные дают такой потенциал игрокам, из-за чего многопользовательские игры на нём живы до сих пор, так как у игроков есть ещё дело незаконченное…

Да, Overwatch?

Засим я откланиваюсь, низкий Вам поклон.


Quake

Платформы
PC | Mac | Linux | PS4 | PS5 | XONE | XBOXSX | N64 | NSW | Amiga | SAT | WM
Жанр
Дата выхода
22 июня 1996
1K
4.3
608 оценок
Моя оценка

Counter-Strike: Global Offensive

Платформы
PC | Mac | Linux | PS3 | X360 | XONE | XBOXSX
Жанры
Дата выхода
21 августа 2012
2.4K
3.5
2 039 оценок
Моя оценка

Team Fortress 2

Платформы
PC | Mac | Linux | PS3 | X360 | XONE | XBOXSX
Жанры
Дата выхода
9 октября 2007
1.1K
4.2
871 оценка
Моя оценка

Apex Legends

Платформы
PC | PS4 | PS5 | XONE | XBOXSX | NSW | iOS | Android
Жанры
Дата выхода
4 февраля 2019
2K
3.8
1 649 оценок
Моя оценка

Overwatch 2

Платформы
PC | PS4 | PS5 | XONE | XBOXSX | NSW
Жанры
Дата выхода
4 октября 2022
1.3K
2.6
1 106 оценок
Моя оценка

Лучшие комментарии

В том же Overwatch Фарра, которая всеми силами старается напомнить о своём протеже — Солдате из TF2, хоть и имеет ракетную установку, но совсем не умеет от неё прыгать.

Еще как умеет. В Overwatch скорость складывается. Если у нее правильно затаймить выстрел под ноги и подлететь вверх на ранце можно выстрелить собой в воздух. У нее даже мемная реплика по этому поводу в игре имеется.
Бастион, который ограничен в мувменте может выстрелить под себя гранатой и забраться куда-то на хайграунд. Раньше он вообще мог делать это в режиме танка и это отличало хорошего бастион мейнера от плохого.

По видео Андроксус выглядит приятно, а Дрогоз уж совсем похож на Фарру. Я не играл, но мне показалось, что это очень похоже на мувмент из Overwatch, поэтому ме. Буду рад ошибиться

Было бы интересно узнать твое мнение о мувменте в Paladins (конкретно о персонажах Вилло, Андроксус и Дрогоз). Как ты оцениваешь тамошний мувмент?

Вот я и домучал ещё один блог (!), так что предлагаю к ознакомлению. Как обычно: открыт к критике и исправлениям. Спасибо, что прочитали мой блог!

Не совру, сказав, что проводил куда больше времени в режимах surf, bhop и kz чем в нормальных матчах CS 1.6 / CSS. Увы, времена популярности уже давно прошли, а оставшиеся сервера пустуют с поодинокими заблудшими душами.

Помню как пользовался своими навыками «лонгджампа» для запрыгивания в непредусмотренные места, вроде скалы на de_nuke. Народ сразу начинал пытаться туда попасть — тщетно. =)

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

Отдушиной стали упомянутый здесь Apex и Quake Champions. Первый радует меня вот уже… а сколько лет собственно? xD А второй показывает, какое я ничтожество.

Всё зависит от рук разрабов. ИМХО. И от ощущений/предпочтений конкретного игрока. А не от движка. Для меня идеальный мувмент в борде 3 (и в целом по ощущениям и по скорости). В апексе неплохой, да.и в квейке тоже хорош (хотя в кваке не хватает чутка веса оружия/персонажа). А вот в ТФ2 мне мувмент совсем не нравится, также как и в кс го (возможно даже не сам мувмент в целом, а скорее низкая скорость, возможно, но по итогу всё равно совсем плохо воспринимается).

Автор использует прием с Фарой из видео FUNKe, но абсолютно не уловил контекст. В видео автор делает сравнение с ТФ2 в качестве юмора. В реальности, у персонажа есть не только буст, но еще отталкивающая граната, которая работает на себя и САМОЕ ГЛАВНОЕ, что рокет джамп ТОЖЕ есть. Все это можно сочетать и использовать для движения в разных плоскостях. Тот самый Easy 2 Learn, Hard to master, на который у автора блога слюньки текут. Я уже не привожу в пример Люсио или Хомяка, геймплей за которых — отдельные мувмент-бейсд игры.

Особенно смешно видеть хоть что-то положительное о Шляпексе, когда это буквально Тайттан Фолл 2 на инвалидной коляске.

За простое объяснение кода респект.

Я не играл в Paladins, поэтому хз. Домой приду, посмотрю

Я в первый раз слышу об этом видео)) Отталкивающая граната всё равно не даёт такого простора, как стандартный рокетджамп, и никогда не приблизится к этому уровню.

Рокет Джамп Фары – это больше гиммик, который позволяет сделать минимальные корректировки в поведение модельки. Да, это всё ещё лучше, чем ничего, но не сравнится с рокет джампом из TF2.

Про Люсио и Хомяка согласен, но я всё равно считаю их не такими глубокими, как те же механики их Apex.

Надо было мне больше расписать про то, что раньше такие режимы были ещё популярнее (в CS 1.6). Мувмент в играх явно поменялся, что я и пытался расписать в блоге)

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

Еще как умеет. В Overwatch скорость складывается. Если у нее правильно затаймить выстрел под ноги и подлететь вверх на ранце можно выстрелить собой в воздух. У нее даже мемная реплика по этому поводу в игре имеется.

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

А ещё сайт сделал что-то с моими сносками. Что бы я не делал, они всё равно подчеркиваются и не работают

ничево не понятно, но очень интересно) спасибо+лайк

Вообще не шарю в программировании, но прочитал с интересом, держи плюс

Спасибо! Если честно, я сам ничего не понимаю в программировании (только python могу кое-как читать), рад, что получилось классно!

Читай также