Arskama.ru

Автомобильный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Slrr как передвинуть двигатель

Добавляем в игру мультиплеер с помощью Node.JS и Frida. Часть 1

На Хабре уже есть пару упоминаний об инструменте Frida («Frida-node или немножко странного кода», «Точки соприкосновения JavaScript и Reverse Engineering»). В одной статье уже упоминается использование Frida на практике, однако почти везде инструмент используют как фреймворк для реверс-инжиниринга и исследования функционала программ (может даже взлом).

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

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

Дано:
Node.Js + Frida + frida-node
Игра Street Legal Racing: Redline
SLRR: java pack

Установка Frida

Что с игрой

Небольшая история игры.

Сама игра была выпущена в 2003 году компанией Activision. Игру разработала Венгерская компания Invictus Games. Случилось так, что игра, толи из-за плохого маркетинга, толи из за явного несоответствия интересам аудитории, не взлетела. Несмотря на это, у игры образовалось несколько сообществ фанатов, скорее всего из-за особенностей
геймплея: Автомобиль можно практически полностью разбирать и собирать, менять и настраивать детали, очень реалистичная (на тот момент) физика, деформация кузова, и поведение на дороге. Несколько раз сообщество пыталось заполучить исходные коды игры, подписывая петиции и отправляя их в Invictus. Разработчики отказывались их передавать, ссылаясь на проблемы с правами и компанией Activision, которой в данный момент принадлежат права. Несмотря на это, как-то случилось так, что в сеть утекло часть java кода игры. В саму игру встроена какая-то старая и урезанная версия JVM (Java Virtual Machine, даже без поддержки throw-catch), полностью отсутствуют функции для работы с сетью, а файлы сохраняются и открываются только во встроенном в игру формате.

На данный момент нашим земляком, с ником RAXAT был выпущен неофициальный патч 2.3.0LE, который стал
стандартом для этой игры. На базе этого патча я и решил добавить в игру поддержку мультиплеера.

Неудачные и удачные попытки

Сразу хочу заметить, что я не первый из сообщества, кто захотел реализовать мультиплеер в игре. Также я сам сделал несколько попыток добавить нужные функции в игру. Изначально я делал это с использованием dll, написанной на Delphi, которая инжектировалась в процесс. Такой метод работал, но добавлять что-либо в модуль было достаточно трудоемкой задачей.

На помощь пришел инструмент Frida, который позволяет внедрять в процесс JavaScript движок V8, и работать с процессом «изнутри». Самой важной задачей по началу являлось добавить обмен данными между JVM игры и внешним процессом Node.js.

Код проекта валяется на Github: https://github.com/lailune/SLRRMultiplayer однако представляет из себя исключительно тестовую версию, и то, что я имею на данный момент.

Ссылку на игру не привожу по понятным причинам.

Скрипт, загружаемый внутрь процесса будет называться injectScript.js. Название самого скрипта приложения не важно, я назвал его app.js.

Наш скрипт будет запускать бинарник игры, и передавать pid процесса модулю Frida для внедрения скрипта.

Сама функция AttachHook содержит весь код инициализации Frida:

  1. Подключаемся к процессу
  2. Загружаем наш внутренний скрипт во внедренный V8 (в это время V8 проверяет скрипт на ошибки и компилирует его в байт код)
  3. Ставим обработчик сообщений из скрипта
  4. Запускаем скрипт, и выводим сообщение об успехе или ошибке.

В случае прихода какой-либо «посылки» (payload) из нашего внедренного скрипта мы должны его обработать по своему. Для этого есть функция handleMessage, в которой, правда, пока реализован только прием информации о позиции игрока в виртуальном пространстве.

Теперь мы можем распоряжаться этими данными так, как нам захочется, например: передать их на сервер.

injectScript.js

Способ передачи данных из игры я выбрал крайне возмутительный: перехватываю вызов CreateFileA.
Почему:

  1. Так проще всего. Достаточно открыть файл с
    «нужным названием», внутри которого будут данные, которые мы передаем.
  2. Я так и не смог научить Frida искать нужный
    текст в памяти приложения, для дальнейшего использования определенной
    области памяти.
  3. Это работает.

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

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

Немного Java

Поскольку игра использует внутри себя урезанную версию Java, придется немного написать на этом великолепном языке.

Интересный момент: прямо внутрь игры встроен компилятор java в байт код для JVM, достаточно положить java файл в соответствующую директорию внутрь папки src, и при запуске игры будет создан class файл.

Для теста я использовал класс City (реализует базовые функции для управления городом в игре). В дальнейшем планирую вынести реализацию своего псевдо-сокета в отдельный глобальный класс.

Пока реализует только передачу данных наружу.

Street Legal Racing/ Redline: Совет (Советы и тактика к игре)

Как грамотно подготовить автомобиль к гонкам.

Внимание! Данная статья не может быть использована как пособие по настройке автомобилей в реальной жизни, ни при каких обстоятельствах!

Чтобы грамотно настроить ваш автомобиль, лучше использовать оригинальные, запчасти. Несмотря на то, что некоторые запчасти от других марок автомобилей всё же могут подходить. Это касается в основном запчастей на двигатель. Перед тем как покупать деталь, запомните полностью название детали, которая у вас стоит, иначе рискуете купить то же самое. В каталоге найдите детали вашей марки авто. Если вы нашли деталь, которая стоит дороже вашей текущей, то покупайте её. Запчасти, которые точно не подойдут вам, компьютер просто не позволит купить. Не все запчасти имеет смысл менять. Старайтесь не покупать обычные фабричные детали, а берите спортивные, профессиональные. Я привел вам список тех запчастей, которые имеет смысл менять, для улучшения характеристик вашего авто. Все улучшения будут отображены в информационной таблице вашего авто.

Читать еще:  Холодный запуск двигателя камаз

1. Блок цилиндров: Отвечает за объём двигателя и соответственно за мощность, разгон и максимальную скорость. Это сердце вашего автомобиля. Чем больше объём, тем более мощную установку закиси азота он сможет выдерживать без напряга. Никогда не ставьте мощную систему NOS на слабый мотор, иначе он сгорит после нескольких заездов. Чем больше ваш двигатель, тем больше отдачи вы получите от NOS. Вы можете вставить минимальные и максимальные обороты. Никогда не выставляйте максимальные обороты больше тех, при которых двигатель выдаёт пиковую мощность. Чтобы посмотреть обороты, при которых двигатель выдаёт максимальную мощность, воспользуйтесь графиком в таблице показателей вашего автомобиля.
2. Маховик: отвечает за разгон и максимальные обороты. Он должен быть максимально лёгким и большим по диаметру.
3. Коробка передач: отвечает за грамотное использование мощности мотора, коробка с хорошим передаточным числом уменьшит время разгона и увеличит максимальную скорость. Так как передаточные числа изменять нельзя, то берите коробку с максимальным числом передач, не страшно, что передачи будут коротким, зато двигатель всегда будет на больших оборотах. Этим вы обеспечите себе хорошую тягу почти всё время.
4. Анти-срыв сцепления: позволит сберечь сцепление при резком ускорении.
5. Сцепление: отвечает за возможность быстро трогаться. Берегите его, как зеницу ока и никогда не буксуйте по пустякам. Это — самое уязвимое место вашего автомобиля.
6. Распредвалы: отвечают за разгон и максимальные обороты двигателя. Их можно настроить для более быстрого разгона, однако это может привести к ускоренному износу двигателя.
7. Поршни: отвечают за мощность, при использовании NOS, прогорают, поэтому используйте кованные или улучшенные.
8. Выхлопной коллектор: отвечает за мощность.
9. Впускной коллектор и рамка, регулирующая подачу топлива: отвечает за подачу топлива и разгон. Можно регулировать смесь, делая её богаче или беднее. Вы подаете либо больше топлива, либо больше кислорода. Здесь нужен баланс.
10. Нагнетатели и турбины: подают топливо под давлением, что позволяет увеличить разгон и мощность. Идеально работают с NOS.
11. NOS: закись азота, временно увеличивает мощность двигателя. Оказывает разрушительное воздействие на него. Чем больше баллон, тем дольше вы сможете ей пользоваться. Требует очень аккуратного обращения.
12. Карбюратор: Отвечает за подачу топлива и за разгон. Если есть возможность его отрегулировать, то можно либо увеличить разгон, либо максимальную скорость.
13. Головка блока: если поставить более дорогую, то это увеличит ход поршня, что приведёт к увеличению объёма двигателя и увеличению мощности. Возможно, потребует замены шатунов на более длинные.
14. Если есть возможность, то делайте специальный тюнинг, но это доступно не для всех машин.
15. Глушитель и выхлопная система: отвечают за разгон. В принципе глушитель и выхлопную трубу можно вообще снять, оставив только выпускной коллектор. Правда машина будет громче работать, и у вас могут быть проблемы с полицией.
Прямоточная выхлопная система, точнее её полное отсутствие может привести к увеличению износа двигателя.
Все оставшиеся запчасти для двигателя менять следует только по мере их износа.
Если на вашей машине не стоят какие-либо запчасти, которые можно установить, то установите их, например, машина может продаваться без радиатора или без нагнетателя.

Все кузовные детали делятся на заводские и дополнительные. Заводские — это основные ваши детали — стекла, двери. Дополнительные детали — это, как правило, либо декоративный обвес вашей машины, либо улучшение аэродинамики кузова.
Рекомендуется ставить более обтекаемые бампера, которые сокращают дорожный просвет, а также антикрылья и спойлеры, которые обеспечат вам лучшую устойчивость при больших скоростях на прямой.

Детали внутреннего интерьера.

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

Подвеска и тормоза.

1. Пружины: Отвечают за высоту клиренса, устойчивость машины на поворотах. Ставить надо максимально короткие и жёсткие пружины. При перестроении на скорости машину не должно качать, как корабль на волнах, иначе вы рискуете перевернуться, либо сорваться в занос. Чем ниже ваш центр тяжести, тем более вы устойчивы.
2. Амортизаторы: Отвечают за гашение вибрации от ям, а также должны препятствовать раскачке машины на поворотах. Амортизаторы надо ставить газовые и самые прочные — как правило, самые дорогие.
Растяжки на стойки амортизаторов: позволяют машине преодолевать крутые повороты с наименьшим сносом. Надо ставить на переднюю и заднюю подвеску. Чем дороже их стоимость, тем лучше.
3. Сама подвеска: на неё крепятся пружины и амортизаторы с растяжками, а так же тормоза. Если есть в продаже более крутая модель, то поставьте.
4. Тормоза: отвечают за расстояние, за которое вы затормозите. Надо брать большого диаметра, и чтобы у тормозных цилиндров было как можно больше поршней.

1. Шины: Отвечают за сцепление с дорогой при разгоне и торможении. Имеет смысл ставить низкопрофильную резину, причём мягкую. Однако, чем мягче резина, тем быстрее она стирается.
2. Диски: Диски надо брать широкие и большого радиуса, в соответствии с вашей резиной. Однако не перестарайтесь, резина при дисках большого радиуса, должна быть низкопрофильной. Чем шире резина, тем больше сцепление с дорогой, а соответственно и устойчивость на поворотах.

Читать еще:  Хороший крутящий момент двигателя

Рекомендации по игре.

1. Чем более навороченный у вас автомобиль, тем дороже обойдётся его ремонт. Поэтому не следует выкладываться на полную катушку без нужды, особенно это касается ухода от полиции.
2. Если твёрдо решили, что не уйдёте от полицейских, то лучше заплатите им сразу, либо сражайтесь до конца. Не пытайтесь уйти по прямой, а используйте узкие улочки с большим количеством поворотов.
3. Если вы видите что у оппонента более крутая тачка, то не соревнуйтесь сразу на деньги, а то можете проиграть. Даже если оппонент ниже вас по рангу.
4. Играйте лучше на механической коробке передач, но с автосцеплением. Это позволит вам трогаться аккуратнее и лучше использовать возможности машины.
5. Будьте очень осторожны при заносах, особенно при управлении заднеприводным и полноприводным автомобилем.
6. Чем мощнее ваша машина, тем быстрее она исчерпает свой ресурс, будьте внимательны и не разбрасывайтесь по мелочам.
7. Когда покупаете себе машину, учитывайте её вес — чем легче, тем быстрее она будет ездить. 180 лошадей при 1100 кг, это лучше чем 200 лошадей при весе 1500 кг.
8. Если у машины стоит 4-х цилиндровый двигатель, это ещё не показатель что она слабая. Лёгкий с хорошим 4-х цилиндровым движком способен порвать тяжёлого 8-ми цилиндрового .
9. Старайтесь как можно меньше соревноваться днём, это слишком опасно для машины. Для этого заработайте 10 тысяч долларов в дневное время и отправляйтесь на ночные гонки. Минимальная ставка там 10 тысяч, а победа будет не сложной, главное — чтобы у вас были нормальные запчасти. За престиж лучше тоже соревноваться ночью, так как по прямой легче ездить, да и за участие в ночных гонках дают больше очков престижа.
10. Когда закончите заезд по прямой, то на финише ваша машина затормозит автоматически, постарайтесь при торможении уйти подальше от трассы в сторону, иначе ваш оппонент врежется в вас после гонки, а когда поедете по ней обратно к старту, то не врежьтесь в гонщиков, идущих вам навстречу. Никто не заплатит вам за ремонт машины.

Чтобы попасть в чемпионат даже без очков престижа или с невыполнеными условиями сделайте следующее:
1) Выберите «Чемпионат»
2) Наведите курсор на кнопку «Принять участие» (она будет зачёркнута) и нажмите ENTER. Всё! Вы в чемпионате!

Знаете, как на старте обойти соперника?
Короче: дайте газу, когда времени останется «1», тачка заревёт, но это фигня. Как только можно будет ехать, не отпуская газа включите передачу и вы попрёте быстрере любого соперника!

У игры фирмы Фаргус. Я на ней нашел один полегный глюк. Он заключается в том, что не тратя деньги моно приобретать машины.
Объясняю как.
Берёте продаёте все свои авто (ну чтоб денег было побольше), затем сохраняете и выходите из игры. После этого копируете папку save (сохранения на игру, которые находятся в папке с игрой) куда нибудь себе на комп. Затем входите в игру с сохранениями, которые у вас остались, и покупаете приглянувшуюся вам тачку. Затем сохраняете и выходите из игры. Потом надо копировать сохранения, которые вы прятали себе на комп, в папку с игрой поверх старых (выскакивает вопрос о замене, надо нажать «Да для всех»). После замены входите в игру и у вас остануться ваши день и появиться машина в гараже, которую бы приобрели в прошлой игре. Таким образом можно приобретать бесконечное множество машин не тратя ни копейки, а затем продавать и набирать огромные денежные суммы.

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

Купите Айнваген затюнингуйте его (как раз 25000 хватит (покупайте запчасти к движке ПерПро)) выезжайте на гонки ночью.
Выиграйте несколько тачек и впарьте их. Снимите со своего Айнвагена движку а машину продайте. Купите Духен и поставьте на него движку от Айнвагена — получится зверская тачка! И движок не сгорает и на поворотах устойчива. Ещё можно снять крышу, купить 19ти дюймовые диски поставить низкопрофильную резину и выиграть всех соперников.

Когда вы играете, покупайте машину и заделывайте её под максимум.
Сохраняйтесь в первой графе, и начинайте новую игру. В новой игре не покупайте ничего (даже машину), и просто выходите из игры. В ос заходите в каталог с игрой, открывайте папку save, и из папки 001 переписывайте файл main в папку 000, после этого запустите игру, и загружайте первую графу. В итоге у нас машина и 25000 денег!

Если у вашего оппонента машина мощнее вашей, и вы не хотите париться при обгоне, то просто при начале заезда тараньте его в зад и тем самым развернёте его на 180 градусов. Считайте, что заезд вы уже выиграли.

Когда участвуете в гонке чемпионов, включайте круиз кнтроль (кнопка «S») и ваш автомобиль будет ехать практически без заносов.

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

Читать еще:  Чем можно варить двигатель

Я знаю как размножать тачки.
Создаёшь профиль, покупаешь тачку, сохраняешься в первую строку, выходишь из игры.
В папке с игрой открой папку save, в ней 000, копируешь файл playercar1. Переименовываешь его на playercar2, копируешь в вышепреведённую папку и так до бесконечности.

Всё это годится для V2.1.8 и выше.
И так.
1. Самая крутая подвеска: перед — DLH Prime 500, зад — Hauler SuperDuty 750. С ней пройдёте все повороты ROC’а, если не перевернётесь: + Бешеный старт.
2. Самые — самые движки: R4 — 886 HP

550 Hm, V8 — 898 Hp

930 Hm. Всегда есть к чему стремиться!

P.S. Если ставите навороты на ИГРУ ВСЕГДА делайте Backup’ы.

Duhen Sun Strip с двиглом 2.2л 664 л.с. и расгоном до сотни за 3.8 секунды.

Блок Duhen D22V; Холостые 600 и максимальные 6750 оборотов
Головка блока DDSB8C
Вып. и Вп. коллекторы Shimitshibu
Турбина Shimitshibu RCMW FCR22W12; вывернуть на максимум
Поршни, шатуны и колено от Duhen D22V
Маховик Devils 6SFi 3.6
Распреды:
Впускной — Focer EC224-135; Повернуть на -7.0 градусов
Выпускной — Focer EC244-135; Оставить 0.0 градусов

Еще понадобится купить в отделе Pro Tuning топливную рампу — SL Tuners 4 channel methanol injection fuel rail; Выставить соотношение ВоздухТопливо на 16.00:1

Для того, чтобы разогнать машину с этим двиглом, нужна и коробка соответствующая — та, которая поддается регулировке — таких только две: D20CV и Faktun Group Tran6.
Последняя дороже и я ставил ее.
Передаточные числа такие:
Первая передача — 2118:1
Вторая передача — 1515:1
Третья передача — 1131:1
Четвертая передача — 0,856:1 и так далее

Резину на 19-х дисках ставить с профилем 25 и все будет как надо.

Одна пометка. Все это только с тремя патчами Если без них, то многих запчастей из тех, о которых я сказал, вы просто не найдете.

Если вы вылетаете из игры, а когда входите вашего сохранения нет, вам приходится проходить занова, но вы можете востановить ваше сохранение. Когда вы вылетели из игры зайдите в save, а потом в 000, скопируйте файлы в другую папку. Зайдите в игру создайте в 1-ой ячейке игрока и выходите из игры, за тем берёте скопированные файлы и вставляете в папку save в папку 000, появляется табличка, нажымаем «для всех», готово. Заходим в игру и играем. (И так каждый раз если это будет повторятся).

Если Вас загребывает вес машины (типа тяжелая), то можно в директории cars/racers/. data/scripts открыть cfg-файл и ручками переправить вес любой части. Но править данные вещи надо с умом, можно баланс угробить.

Чтобы порвать всех противников, купите любой из «Дахенов» и снимите с него движок. Покупаете все запчасти для 2,0 и отверткой тыкаете на коробку. Меняете числовые значения на следующие:

1. 2.113
2. 1.213
3. 1.118
4. 0.884
5. 0.774
6. 0.500

Установка модификаций для игры Street Legal Racing: Redline

Street Legal Racing: Redline – игра довольно старая (выпущена в 2003 году). Но сделана она была так качественно, что пользуется заслуженной популярностью спустя десятилетие. Новые сборки продолжают выходить по сей день: некоторые из них изначально модифицированы, другие просто немного адаптированы под современные системы.

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

Сведения об установке

Если при установке САМП необходимо, чтобы игра была «чистой», то дополнения для SLRR можно устанавливать и на различные сборки. Как и при установке мода на Мафию 2, добавление материалов в игру производится путем замены исходных файлов модифицированными. Если вы не хотите потерять стандартный игровой контент, делайте резервные копии заменяемых файлов и сохраняйте их в другом месте.

В архиве с модификацией должен быть файл readme (или FAQ), в котором указаны все необходимые сведения: название дополнения, его краткое описание, инструкция по правильной установке.

Всегда открывайте и внимательно читайте readme – тогда никаких проблем с добавлением дополнительных материалов в игру не возникнет.Если для установки модов на Just Cause 2 приходится самостоятельно создавать конечную папку, в которую загружаются дополнения, то в корневом каталоге игры SLRR все необходимые директории уже есть.

Папки назначения

Важно! Не устанавливайте несколько дополнений сразу, так как они могут конфликтовать. Добавляйте моды по одному – тогда вы сможете избежать появления ошибок.

Все необходимые папки находятся в каталоге игры «Street Legal Racing: Redline» в директории «Program Files». Рассмотрим основные пути, по которым нужно копировать моды определенного типа:

  1. Новые машины добавляются в папку cars/racers.
  2. Модифицированные двигатели – parts/engines.
  3. Треки – maps/addon maps.
  4. Рули, сиденья, глушители, шины, диски и другие мелочи – SSLR/parts.

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

В некоторые сборки дополнения не устанавливаются в принципе. В первую очередь это касается релизов от JACK (Pre-release 3 и 4).

Также не рекомендуется устанавливать дополнения на изначально модифицированную игру. Пользователи отмечают, что в таком случае появляется огромное количество багов: скрипты модов конфликтуют между собой, что приводит к проблемам при запуске SSLR.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector