Разраб растолковал, как работает распрыжка в Quake на уровне начального кода

На YouTube-канале Matt’s Ramblings возникло свежее видео с разбором начального кода уникальной Quake. В нём создатель ролика сказал о том, как работают самые известные «баги» игры, в том числе и знаменитая распрыжка, на уровне начального кода.

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

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

# Taken from SV_Accelerate() in sv_user.c
def update_vel_ground(wishdir: Vec3, vel: Vec3, frame_time: float) -> Vec3:
vel = friction(vel, frame_time)

current_speed = dot(vel, wishdir)
add_speed = clip(MAX_SPEED — current_speed, 0, MAX_ACCEL * frame_time)

return vel + add_speed * wishdir

Что все-таки касательно вычисления скорости в момент нахождения в воздухе, то за это отвечает иная функция:

# Taken from SV_AirAccelerate() in sv_user.c
def update_vel_air(wishdir: Vec3, vel: Vec3, frame_time: float) -> Vec3:
current_speed = dot(vel, wishdir)
add_speed = clip(MAX_AIR_SPEED — current_speed, 0, MAX_ACCEL * frame_time)

return vel + add_speed * wishdir

На базе данной базы строятся такие «фишки» серии Quake как распрыжка, wall running и зигзагинг. При всем этом, необходимо отметить, что в предстоящем все эти движения стали частью и остальных серий. Так, благодаря использованию одной из версий id Tech в качестве базы для движка Half-Life, чуток позднее Counter-Strike также стала известна распрыжками.

Источник: Matt’s Ramblings

Источник: tproger.ru

Поделиться с друзьями:
Андройд IT
Добавить комментарий