Moto Racer 4

Moto Racer 4

Not enough ratings
MR4 - Альтернативная настройка управления
By R. Order
Управление на WASD, трюки на Numpad; стрелочки - опционально
   
Award
Favorite
Favorited
Unfavorite
Info
В данном руководстве приводится одна из возможных раскладок управления Moto Racer 4, разработчики которой, кажется, как следует не тестили игру с PC-клавиатуры (по умолчанию решив, что если они затачивали управление под контроллеры Xbox 360, то такой контроллер непременно есть у всех покупателей MR4).

Данное руководство появилось в результате обнаружения мной ошибок в других руководствах по модификации управления MR4 на Steam - по какой-то причине некоторые авторы не заметили, что текст модифицированного файла input.ini целиком не влазит в один-единственный раздел руководства Steam и в итоге оказывается обрезанным (т.е. Steam ставит лимит на число знаков в единичном "разделе" руководства).

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

AxisMappings=(AxisName="TurnCameraX",Key=Gamepad_RightX,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraX",Key= ,Scale=-1.000000)
AxisMappings=(AxisName="TurnCameraX",Key= ,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key=Gamepad_RightY,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key= ,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key= ,Scale=-1.000000)
Установка
Инструкция по установке:

Сперва вам необходимо найти файл input.ini, отвечающий за управление в игре.
Он находится по адресу:
[название диска - например, С]:\Users\[наименование пользователя]\AppData\Local\MR4\Saved\Config\WindowsNoEditor

Для того, чтобы получить раскладку с управлением на WASD и трюками на Numpad, скопируйте обе приведенных ниже части текста в файл input.ini, удалив пробел между ними (исходное содержание файла можно удалить). В процесса самой игры убедитесь, что Numpad включен.

Вот что у вас должно получиться (на скриншоте изображено место "сцепления" двух частей файла input.ini после копипаста; не забудьте удалить пробел!):

Часть 1 (ActionMappings)
[/script/engine.inputsettings]
ActionMappings=(ActionName="Autopilot",Key=O,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="BackCamera",Key=Gamepad_RightThumbstick,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="BackCamera",Key=R,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="DebugEndRace",Key=P,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="DisplayNearestOpponents",Key=F,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="DisplayNearestOpponents",Key=Gamepad_LeftThumbstick,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="EnableDirector",Key=Gamepad_RightThumbstick,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="EnableDirector",Key=Tab,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Fps",Key=F,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="GetAnyKey",Key=AnyKey,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="HandBrake",Key=Gamepad_FaceButton_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="HandBrake",Key=NumPadNine,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="HideHUD",Key=Gamepad_DPad_Down,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="HideHUD",Key=H,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Klaxon",Key=Gamepad_RightShoulder,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Klaxon",Key=RightBracket,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Lurch",Key=Gamepad_FaceButton_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Lurch",Key=NumPadFour,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Menu",Key=Escape,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Menu",Key=Gamepad_Special_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Menu",Key=M,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuBack",Key=BackSpace,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuBack",Key=Gamepad_FaceButton_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadDown",Key=Gamepad_DPad_Down,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadLeft",Key=Gamepad_DPad_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadLeft",Key=LeftAlt,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadRight",Key=Gamepad_DPad_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadUp",Key=Gamepad_DPad_Up,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuDpadUp",Key=LeftControl,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuL1",Key=Gamepad_LeftShoulder,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuL3",Key=Gamepad_LeftThumbstick,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuL3",Key=LeftAlt,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuLeftTrigger",Key=Gamepad_LeftTrigger,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuR1",Key=Gamepad_RightShoulder,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuR1",Key=LeftShift,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuR3",Key=Gamepad_RightThumbstick,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuR3",Key=Tab,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuRightTrigger",Key=Gamepad_RightTrigger,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuRightTrigger",Key=Tab,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuSquare",Key=Gamepad_FaceButton_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuSquare",Key=SpaceBar,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuStart",Key=Gamepad_Special_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuStart",Key=SpaceBar,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuTriangle",Key=Delete,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuTriangle",Key=Gamepad_FaceButton_Top,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuValidate",Key=Enter,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="MenuValidate",Key=Gamepad_FaceButton_Bottom,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Music",Key=W,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="NextCamera",Key=Gamepad_DPad_Up,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="NextCamera",Key=LeftControl,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="NextCompetitor",Key=Gamepad_DPad_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="NextCompetitor",Key=LeftAlt,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="",Key=Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Pause",Key=Escape,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Pause",Key=P,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="PrevCamera",Key=Gamepad_DPad_Down,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="PrevCompetitor",Key=Gamepad_DPad_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="ResetCar",Key=BackSpace,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="ResetVR",Key=R,bShift=False,bCtrl=True,bAlt=False,bCmd=False)
ActionMappings=(ActionName="SkipStartCinematic",Key=Asterix,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Stunt",Key=Gamepad_FaceButton_Top,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Stunt",Key=NumPadSeven,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="SwitchCamera",Key=Gamepad_Special_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="SwitchCamera",Key=Tab,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Taunt",Key=E,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Taunt",Key=Gamepad_LeftShoulder,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="ToggleLoading",Key=L,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="ToggleMotorbikeLean",Key=Exclamation,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="ToggleVR",Key=V,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Up",Key=LeftBracket,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Validate",Key=Enter,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Validate",Key=Gamepad_FaceButton_Bottom,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Wheeling",Key=Gamepad_FaceButton_Bottom,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
ActionMappings=(ActionName="Wheeling",Key=NumPadSix,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
Часть 2 (AxisMappings)
AxisMappings=(AxisName="Brake",Key=Gamepad_LeftTriggerAxis,Scale=-1.000000)
AxisMappings=(AxisName="Brake",Key=S,Scale=-1.000000)
AxisMappings=(AxisName="LookRight",Key=Gamepad_RightX,Scale=1.000000)
AxisMappings=(AxisName="LookRight",Key=MouseX,Scale=1.000000)
AxisMappings=(AxisName="LookUp",Key=Gamepad_RightY,Scale=-1.000000)
AxisMappings=(AxisName="LookUp",Key=MouseY,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=D,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Gamepad_LeftX,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Left,Scale=-1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Q,Scale=-1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Right,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Down,Scale=-1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Gamepad_LeftY,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=S,Scale=-1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Up,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Z,Scale=1.000000)
AxisMappings=(AxisName="MoveForward",Key=Gamepad_LeftTriggerAxis,Scale=-1.000000)
AxisMappings=(AxisName="MoveForward",Key=Gamepad_RightTriggerAxis,Scale=1.000000)
AxisMappings=(AxisName="MoveForward",Key=S,Scale=-1.000000)
AxisMappings=(AxisName="MoveForward",Key=W,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=Gamepad_LeftX,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=D,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=A,Scale=-1.000000)
AxisMappings=(AxisName="PitchForward",Key=Down,Scale=-1.000000)
AxisMappings=(AxisName="PitchForward",Key=Gamepad_LeftY,Scale=1.000000)
AxisMappings=(AxisName="PitchForward",Key=Up,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraX",Key=Gamepad_RightX,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraX",Key= ,Scale=-1.000000)
AxisMappings=(AxisName="TurnCameraX",Key= ,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key=Gamepad_RightY,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key= ,Scale=1.000000)
AxisMappings=(AxisName="TurnCameraY",Key= ,Scale=-1.000000)
Как настроить управление "стрелочками"
В моем случае большинство клавиш можно было переназначить прямо из меню опций, кроме клавиш управления мотоциклом "Влево" и "Вправо". Как выяснилось, они завязаны на следующих строчках кода:

AxisMappings=(AxisName="MoveRight",Key=Gamepad_LeftX,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=*****,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=*****,Scale=-1.000000)

Где после "Key= " указывается клавиша, которая отвечает за действие. Строка "MoveRight",Key=D,Scale=1.000000" отвечает за поворот вправо с помощью кнопки D, строка "MoveRight",Key=A,Scale=-1.000000" - за поворот влево с помощью кнопки A (точнее, с точки зрения кода игры, "не-вправо", поскольку управление заточено под стики контроллера Xbox 360).

Если вам не нравится управление на WASD, вы можете самостоятельно переназначить его, вписав после "Key= " нужную вам клавишу. К примеру, строка "MoveRight",Key=Right,Scale=1.000000" будет отвечать за поворот вправо клавишей "Стрелочка вправо"; строка "MoveRight",Key=Left,Scale=-1.000000 будет отвечать за поворот влево клавишей "Стрелочка влево".
----
Таким образом, перенос управления мотоциклом на стрелочки будет выглядеть следующим образом:

AxisMappings=(AxisName="Brake",Key=Gamepad_LeftTriggerAxis,Scale=-1.000000)
AxisMappings=(AxisName="Brake",Key=Down,Scale=-1.000000)
AxisMappings=(AxisName="LookRight",Key=Gamepad_RightX,Scale=1.000000)
AxisMappings=(AxisName="LookRight",Key=MouseX,Scale=1.000000)
AxisMappings=(AxisName="LookUp",Key=Gamepad_RightY,Scale=-1.000000)
AxisMappings=(AxisName="LookUp",Key=MouseY,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=D,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Gamepad_LeftX,Scale=1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Left,Scale=-1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Q,Scale=-1.000000)
AxisMappings=(AxisName="MenuXAxis",Key=Right,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Down,Scale=-1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Gamepad_LeftY,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=S,Scale=-1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Up,Scale=1.000000)
AxisMappings=(AxisName="MenuYAxis",Key=Z,Scale=1.000000)
AxisMappings=(AxisName="MoveForward",Key=Gamepad_LeftTriggerAxis,Scale=-1.000000)
AxisMappings=(AxisName="MoveForward",Key=Gamepad_RightTriggerAxis,Scale=1.000000)
AxisMappings=(AxisName="MoveForward",Key=Down,Scale=-1.000000)
AxisMappings=(AxisName="MoveForward",Key=Up,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=Gamepad_LeftX,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=Right,Scale=1.000000)
AxisMappings=(AxisName="MoveRight",Key=Left,Scale=-1.000000)

Проблема: на что тогда назначить трюки и специфические движения вроде "управления углом наклона мотоцикла в воздухе при падении"? Конкретно за последнее отвечают следующие строчки (в приведенном примере они закреплены за клавишами W и S):

AxisMappings=(AxisName="PitchForward",Key=S,Scale=-1.000000)
AxisMappings=(AxisName="PitchForward",Key=Gamepad_LeftY,Scale=1.000000)
AxisMappings=(AxisName="PitchForward",Key=W,Scale=1.000000)

Из всех опробованных мной вариантов управления WASD+Numpad оказался самым удобным именно из-за наличия в игре "трюков" (к которым относится и турбо-ускорение), поскольку их иногда полезно использовать в процессе гонки. Тем не менее, если у вас достаточно времени на эксперименты, надеюсь, это руководство помогло вам понять общую логику устройства управления в MR4 (где есть, например, только действие "Вправо", которое при переменной "1.000..." означает поворот вправо, а при переменной "-1.000..." означает поворот влево).
4 Comments
Мотвэй ЛСД 6 Jul @ 1:28am 
thanks!
KARTON 5 Jul @ 10:41pm 
спасибо
ДжекиЧакиТила 3 Jan, 2024 @ 10:22am 
спасибо, помогло!
𝓛𝓾𝓷𝓷𝓪𝓽𝓲𝓭 25 Jun, 2023 @ 8:35am 
спасибо!! помог!