И вот, годы спустя, мне захотелось сыграть в эту игру. Но она не заработала на современном железе. Пришлось разбираться. В процессе захотелось ещё и поддержку широкоформатных разрешений… и понеслась! Немного увлёкся этим делом, и в результате получился внушительный патч. Более 8000 строк на ассемблере, исписано 18 листов А4, огромный список изменений…
Что нового?
- Адекватная поддержка широкоформатных и больших разрешений. Игра без проблем работает на 1920?1200 и других разрешениях без искажения пропорций изображения.
- Улучшена графика машин. На максимальных настройках у других машин текстуры в 2 раза лучшего качества, всегда крутятся колёса, никогда не исчезают зеркала и другие элементы (это происходило из-за отображения худших моделей при наличии более двух машин в кадре).
- Увеличена дальность отрисовки в зеркале заднего вида. На максимальных настройках теперь объекты не исчезают так рано как раньше.
- Потрясный эффект тумана и лучи света из фар теперь работают и при отрисовке через Direct3D 6. В оригинальной игре эти эффекты работали только на видеокартах 3dfx Voodoo через Glide API или при использовании эмуляции Glide API при помощи врапперов.
- Улучшена поддержка 3dfx Voodoo / Glide API. Glide API в принципе не позволял использовать широкоформатные разрешения, и чтобы обойти это ограничение, Glide API было расширено совместно с автором враппера nGlide, в архив включён nGlide 1.04.2 с поддержкой этого расширения.
- Переносимость. Игра больше не лезет в реестр за настройками, все системные настройки хранятся в ini-файле рядом с исполняемым файлом игры (он должен иметь такое же имя как и запускаемый exe-файл).
- Добавлено несколько оптимизаций. Например, игра не делает копию музыкальных файлов при каждом старте и читает их сразу их исходного каталога, что экономит время и 10 мегабайт ресурса вашего SSD на каждый старт.
- Исправлено несколько десятков ошибок и недоработок оригинальной версии. Например, индикация загрузки теперь намного более плавная.
- Устранены многие проблемы совместимости с современными Windows, мешающие работе игры. Добавлены новые системные настройки.
- Более сотни изменений в целом. Смотрите подробности в файле readme.
Ручная установка
- Скопируйте каталоги FEDATA и GAMEDATA с оригинального диска в новый пустой каталог.
- Извлеките содержимое архива nfs3_modern_patch.7z (1.3МБ) в этот же каталог, с заменой файлов.
- Готово!
Готовая сборка
Да простят меня издатели за раздачу игры 1998 года, я собрал весь оригинальный контент из всех официальных изданий, и сделал сборку с предустановленным патчем. Скачать можно либо на Рутрекере, либо по публичному torrent-файлу (а лучше стать на раздачу и там и там).
Скриншоты
Было и стало: у машин других игроков не исчезают зеркала и лучше текстуры
Было и стало: даже машинам трафика не удалось избежать улучшений
1280?720, без тумана
1280?720, с туманом
1280?720, ночь, туман...
Комментарии (53)
b3nd3r
11.06.2015 20:12+6Вообще было бы прекрасно, если бы разработчики публиковали исходные тексты старых игр или программ, как это делала id Software. Ведь они кем-то могут использоваться, причем лицензионные версии, а поддерживать это уже никто не хочет и не будет.
Замечательная работа, но и правда была бы очень интересна статья о том, как вы всего этого добились, какие-то самые интересные вещи, т. к. 100 патчей описать в одной статье может и не получится.VEG Автор
11.06.2015 21:08+3Публикация исходных кодов было бы идеальным решением для игр «на пенсии». Хотя вот Microsoft спустя 12 лет отсутствия обновлений внезапно слегка обновила Age of Empires II и теперь успешно её продаёт в Steam. А ведь казалось, что игра уже давно на пенсии…
Что касается описания процесса патчинга, даже понятное описание небольших изменений — весьма трудоёмкая задача. В этой статье 2009 года я описал 3 небольших изменения, и то объём вышел достаточно большим. Хотя кое-какие статьи на эту тему я всё же планирую написать для Хабрахабра.100 патчей описать в одной статье может и не получится.
Для этого пришлось бы привести все 8000+ строк фрагментов ассемблерного кода и в несколько раз больше текста с описанием :)KindDragon
14.06.2015 21:22Хотя вот Microsoft спустя 12 лет отсутствия обновлений внезапно слегка обновила Age of Empires II и теперь успешно её продаёт в Steam.
И неплохо продается steamspy.com/app/221380
Lerg
11.06.2015 21:15+7Мне она настолько нравилась, что я даже записывал её на кассету, а с кассеты потом обратно на компьютер, при помощи стандартной «Звукозаписи». Это единственное что я тогда смог придумать.
А мы купили проводок Jack-Jack 3.5mm и соединяли им выход и вход звуковой карты, включали игру, включали звукозапись, работало достаточно хорошо!
DarkPreacher
11.06.2015 21:43Отличный подарок перед праздниками! Без проблем запустилось на win8.1 с драйвером dgVoodoo, с dx6 картинки не было, а второй монитор начал часто мигать. Много часов было накатано в детстве на PS1… Играть, спустя столько лет, с геймпадом от PS4 — ностальгично и приятно ?
VEG Автор
11.06.2015 21:48Попробуйте ещё драйвер nGlide. Он менее требовательный к ресурсам.
DarkPreacher
11.06.2015 22:08Да, с nGlide тоже запустилось без проблем, субъективно — картинка более плавная, хотя вполне возможно, что это моё воображение.
white_panda
11.06.2015 23:38Прекрасно запустилось под Wine. Вот оно, детство! Спасибо большое.
VEG Автор
12.06.2015 09:16Под Wine (по отзывам) игра лучше всего идёт с thrash-драйвером nGlide. С драйвером DX6 (что идёт по умолчанию) почему-то нет тумана и вместо него испорченный (слишком яркий) горизонт.
MTonly
12.06.2015 00:10Устранены ли периодические рывки оригинальной NFS3 при работе через D3D (равно как и через Glide-wrapper’ы типа nGlide, работающие через тот же D3D)?
VEG Автор
12.06.2015 09:14Зависит от вашей системы и используемого thrash-драйвера (просто попробуйте разные варианты, я специально в комплект включил несколько штук). Потеря кадров может быть из-за того, что игра вынуждена работать на одном ядре. Скорее всего при использовании DX6 или DX8 будет всё плавно, правда в DX8 не поддерживаются некоторые эффекты. По крайней мере у меня на двух системах нет никаких рывков при использовании этих драйверов, а при выводе через nGlide подёргивания есть, и они исчезают при отключении SingleProcAffinity (привязка процесса к одному ядру) — на одном из компьютеров игра не зависает в таком виде примерно в половине случаев, поэтому и смог протестировать.
kreatiff
12.06.2015 11:13Lenovo Yoga 2 11 и Windows 10 — игра пошла на ура с разрешением Full HD через nGlide. Встал на раздачу на рутрекере.
Nolex
12.06.2015 13:00Спасибо!!! Скачал поиграл на Win7, все работает.
Никогда не смотрел Credits, а вот сейчас посмотрел. Очень прикольно оформлено + имеются фотки 360° команды разработчиков.
Одна из игр, втянувшая меня в модостроение) Эх, сколько было радости, когда получилось в этот NFS впихнуть свою машинку из 3dsmax.
xforce
12.06.2015 13:22Вопрос такой, а в этой версии TCP/IP мультиплеер работает? Как только ни пробовал, доходит до появления… вместо empty и потом отваливается назад. Даже если два компьютера в одной сети находятся.
VEG Автор
12.06.2015 13:30Должно работать так же, как и в оригинальной игре (код мультиплеера не изменялся в патче). Знаю что в NFS3/NFS4 есть проблема, когда после выбора типа соединения ничего не происходит, то есть не появляется главный экран игры со списком участников, чатом и т.д. и её обычно фиксят перезагрузкой компьютера. Я сам по сети не играю вообще, поэтому эту часть игры не тестировал, и не знаю как оно там работает.
Так, для информации, какая у вас ОС? Системный фаервол не мешает игре? Может, нужно какие-то порты открыть для NFS3? :)xforce
12.06.2015 13:58Win7 на обоих машинах. Судя по всему игра использует 1030 TCP, оно открыто и даже соединение есть. Все возможные фаерволы выключены, на клиенте вообще не видно, что что-то происходит, на хосте только появляется… и потом обратно в empty. Когда-то давно это работало :)
VEG Автор
15.06.2015 08:21Ivan_83 был более настойчивым и выявил, что в оригинальной игре работало, а с патчем — нет. Я уже исправил проблему в последней бете, скоро войдёт в релиз. Сейчас жду ответа автора nGlide по поводу проблем с этим враппером, которые мешают ему стать идеальным вариантом для NFS3. Надеюсь, следующее обновление будет всё же «финальным», то есть готовым к использованию в ближайшие годы, а то надоело уже пользователей мучать еженедельными обновлениями :)
Starnger
12.06.2015 13:37+3Ох, вспоминаю, мы с дядей в прятки играли в этой игре в split-screen. Один игрок уходил на пятнадцать минут, а второй за это время искал дырку в карте и прятался в текстурах, после чего второй его искал.
Temych
12.06.2015 14:19Платформа: Windows XP, 7, 8
Системные требования: Pentium 200 МГц, 32 МБ ОЗУ, 700 мегабайт свободного пространства на диске.
Ээээ… Вы уверены, что винда XP, 7, 8 пойдет на пне с 32 метрами оперативки? )VEG Автор
12.06.2015 14:21Ну если вы запустите игру на Windows 98 на компьютере с 32 мегабайтами RAM, то она должна работать. Я старался писать код так, чтобы не ломать совместимость со старыми ОС (хотя я не тестировал патч на старых компьютерах).
Temych
12.06.2015 14:25+1Просто минимальные указанные требования для системы не совпадают с требованиями последних винд — об этом речь, не более того.
Ivan_83
13.06.2015 21:05+1Сейчас играю под wine (ехе почти оригинальный), пришлось плясать с бубном запуская принудительно в однопоточном режиме.
К сожалению идёт только в 640х480 — особенность вайна + нвидии под фрёй: не получается переключать разрешение в полноэкранном режиме (вайн).
Кроме патченного ехе (ноцд) у меня ещё стоит куча машин дополнительно (как официальные так и любительские), и ещё куча машин которые я поставить не могу тк в игре лимит в 50 машин (там кажется слоты/статический массив). Все дополнительных машин у меня >50 лежит.
Ещё есть трассы (с деясток), но честно говоря не вставляют, по сравнению с официальными.
Есть варианты локализации: англ, рус-фаргус и ещё два каких то русских. (хранится дифами: только изменённые файлы).
Ещё там куча утилит для работы с игрой, но думаю они уже не актуальны.
Сам я накорябал патчер который умеет:
— ноцд (не моё, просто посмотрел как другие сделали),
— патчит функции для доступа к реестру заменяя ALL_ACCESS на READ (до этого приходилось руками давать полные права в реестре на раздел где игра держит свои данные)
— GetFreeDiskSpace() — раньше игра чекала свободное место и офигивала когда было больше 4гб :)
Ещё редактор был, который позволял менять места, музыку, демки которые крутятся (там собственно названия в ехе).
Если надо, могу выложить: архив 180 метров.
У меня только один вопрос: почему не nfs4? :)VEG Автор
13.06.2015 21:26+1Я кстати вчера вечером нашёл и исправил этот баг, из-за которого игра зависает при работе на многих ядрах. Немножко поспешил со статьёй :) Включу в следующее обновление. Для машин там действительно лимит в 50 штук, по крайней мере под строки названий машин выделено ровно столько айдишников (там в UI для каждой строки есть уникальный ID, и машинам там отведён какой-то диапазон). Если задаться целью, то конечно можно расширить этот лимит, но мне кажется так много машин это уже слегка перебор :) Запишу в список идей. Но там у меня под сотню позиций и так. Например, в игре есть куча куда более неприятного хардкода касательно трасс — нужно немало кода переписать и изменить структуру файлов, чтобы реализовать полноценную возможность добавления трасс (например, 3D модели всех трасс для меню хранятся в одном общем файле, а не в каталоге с трассой). Я думаю сейчас только пофиксить ещё несколько багов и хватит. И так много времени на патч потратил. На пенсии остальным займусь :)
У меня есть трассы из этого пака: nfs3expansionpack.webs.com/nfs3ep-track-list. Правда, я ничего не пробовал, просто скачал и лежит без дела. В детстве помню качал какую-то трассу с городом и она вроде неплохой была :)
NFS4 никогда вживую не видел, на скриншотах не нравится интерфейс и боюсь, что если возьмусь за патч этой части, то не удержусь от того, чтобы его не переделать :) NFS5 в детстве не понравилась. А вот NFS3 в душу запала, поэтому и занялся ей. На сколько я знаю, часть из решённых проблем здесь есть и в NFS4/NFS5. Может под настроение как-нибудь исправлю и в них хотя бы основные баги.VEG Автор
13.06.2015 21:40К слову, в игре был такой же лимит на количество разрешений — им было выделено всего 20 позиций. Я это переделал (новый диапазон, новые буферы подходящих размеров, плюс все соответствующие правки) и теперь игра может видеть до 100 разрешений :)
wdmaster
15.06.2015 00:03Недавно тоже пытался запустить эту игру на Win8. Как-то вроде получилось даже, но графика была, откровенно говоря, остой. Скачал вашу сборку — это потрясающе! Спасибо за проделанную работу и за возможность окунуться в прошлое.
Skovarodker
15.06.2015 19:35Может быть, вы посмотрите, как хотя бы баг с определением 3Д-карты в Дальнобойщиках-2 устранить?
За сборку ОГРОМНОЕ спасибо, это просто очень замечательно!VEG Автор
15.06.2015 20:33+1Увы, но у меня было слишком много ассемблера в последнее время, и ещё несколько игр ждут своего часа… Однако, если вы программист, вы можете попробовать открыть для себя новое направление :) Я сам когда-то начал этим заниматься из-за того, что мне хотелось исправить один небольшой недостаток в Age of Empires II, а потом пошло-поехало. Общий процесс патчинга я описывал здесь.
Skovarodker
17.06.2015 12:30Программистом я себя назвать могу с большим трудом.
Спасибо за ссылку, постараюсь изучить её, всё же.
zabuldon
16.06.2015 01:00а что за баг такой, если не секрет?
Skovarodker
17.06.2015 12:26На картах Nvidia (на моей GTX670, в частности) игра не запускается, потому что не видит 3D-акселлератора. Много чего делал, но не помогает ничего. Кажется, действительно придется копаться в дебаггере, чтобы как-то это обойти.
И еще, на некоторых других компьютерах не контроллируется частота кадров — и игра идет, как будто она под ускоряющими сознание веществами.
zerbino
17.06.2015 14:14Автор просто умница. Всегда радовали увлеченные люди. Особенно в программерстве, наверное потому что самому icq и выдержки не хватило самообучиться до такого уровня.
iago
17.06.2015 17:51Эх, помню как я хранил порно в папке Fedata, а сестра все равно нашла…
vlivyur
19.06.2015 16:52+1Надо было в $Recycler прятать, там мало кто способен найти.
iago
19.06.2015 17:25+1Я нашел еще один способ — класть в zip архив и переименовывать его в .dll, чтобы Windows Commander его не открывал как папку :) только долго было разархивировать видос, поэтому туда попадали только избранные, скачанные по дешевому диалапу с 5 до 8 утра, а после школы просматривались :)
Riod
С учетом возраста игры намного более инересной и полезной была бы статья о том как вы всего этого добились. Список изменений крутой, но игра уже давно не привлекает.
VEG Автор
Графика в этой игре, конечно же, по современным меркам уже устаревшая. Но я эту игру помню и люблю за весьма заводной сплитскрин, особенно в режиме с полицейскими, когда ты догоняешь и штрафуешь друга. Я купил в Steam несколько разных гонок со сплитскрином (к сожалению, это уже необязательная функция, поэтому выбор ограничен), но ничего толком не зацепило. А недавно вот у меня товарищ в гостях был — мы попробовали несколько раз сыграть в NFS3, и таки азарт был. Так что и старые игры могут на отлично выполнять свою развлекательную функцию.
Что касается методов разработки патча — несколько лет назад я писал статью о патчинге Age of Empires II. С тех пор мало что изменилось, методы применяются те же :)
disinvis
Помню этот азарт! А ещё клавиатура не отрабатывала больше определённого количество нажатий, а играли на одной клавиатуре. Можно было подставлять друга в поворотах.
Помню как-то на серпантине запрятался, что он меня не мог найти. Видел мой экран, но не мог угадать место. Море позитива.
Хотя не уверен, что сейчас было бы интересно… Ещё играли в Ignition на одном экране. Тоже заводная вещь.
foxmuldercp
Не стоит говорить за всех.
У меня несколько знакомых до сих пор держат компьютеры и ОС тех времен для теплых ламповых посиделок в DooM, NFS, Heroes, Warcraft, CimCity, Keen, Fox, C&C, Elite и другие шедевры игростроя 1980-90-2000х.
webkumo
А зачем держать отдельные компьютеры/ОСи? Почти всё из этого прекрасно работает под DosBox (в том смысле что некоторые вещи я лично запускал и проблем особо не испытывал… хотя для Гоблинов пришлось поплясать с бубном… вот виндовые игрушки — те да, сложнее запускать)…
megahertz
Так теплый ламповый гймплей)
anloop
Внезапно DosBox позволяет запустить Win98?
ДОСявые игрища — не вопрос. Но, например, тот же нативный МК3 имеет ощутимый лаг, между нажатием клавиши и реакции персонажа. Страшный момент «почти». У меня для этого «почти» — стоит системник с двумя падами от PS1 (один зацеплен от LPT-порта, второй зацеплен от COM-порта. Оригинальные от PS1). Ибо на современных системах просто некуда цеплять их.
Ну и всё-же на тему МК. Ну просто на не оригинальном 6-кнопочном паде набрать тот же brutality — невозможно. Я про тот самый МК3U с SMD.
Ну а если по теме — NFS3 был одной из моих любимых игр. Я, в принципе, перепаивал свой ЕДИНСТВЕННЫЙ геймпад от PS1 для компа только для того, чтоб удобней было играть в НФС3 )
И с друганом зарубались, вот как сейчас помню: Атлантика. Ламбо Диабло.ДЕСЯТЫЕ доли секунды)
Riod
Я не против, да и сам таким занимаюсь, чтобы поиграть в Constructor. Но все же…