Как устанавливать патчи?

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Как устанавливать патчи?

Сообщение AxelX » Вс ноя 09, 2008 19:37

Есть оффициальная и последняя на данный момент версия OpenTTD.
Как устанавливать патчи?
Например Traffic Lights (http://www.tt-forums.net/viewtopic.php?f=33&t=36261&st=0&sk=t&sd=a).
AxelX
Пассажир
Пассажир
 
Сообщения: 3
Зарегистрирован: Вс ноя 09, 2008 19:32

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Вс ноя 09, 2008 21:32

В смысле рабочая, скомпилированная? На неё патчи (diff, patch) ставить нельзя.
http://vcs.openttd.org/svn/browser/trunk - отсюда брать и применять патч автоматом или вручную. Подробнее позже, сейчас как раз этим занимаюсь, пытаюсь вернее :D

Посмотри эти темы:
BuildOTTD
Howto apply a patch/diff file
http://wiki.openttd.org/wiki/index.php/Coding_Tools

Сразу скажу - насколько я понял, если надо более 1 патча, то только вручную изменения делать.
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Пн ноя 10, 2008 00:02

ЙЕСС! У меня получилось, не все мозги еще пропил! :D Заработала падло!

Только что удачно собрал на транке 14565 игру, применив три патча (airport-close-r14546.patch, fund_town_r14505.patch, r14293-daypatch.diff). Все изменения вносил вручную.
Значит, осталась только проблема с очень старыми патчами (слишком структура исходников поменялась, надо у знающих камрадов помощи просить).

Значится, рассказываю. Делал все через одно место наверное, ибо не программер ни разу.
Использовал TortoiseSVN, BuildOTTD и Visual Studio С++ 2008 (полную версию ищите сами :wink:)

1. По TortoiseSVN скачайте русифиратор и там подробно объясняется, да впрочем и не нужно - он в оболочку встраивается и остается только "правый клик - применить заплатку", путь надо указать к папке с исходниками или указать взять транк из интернета. Но это всё туфта, поскольку практически, автоматом через эту прогу у меня встал только 1 патч, и подозреваю, что вообще можно автоматом только один, т.к. меняются исходники и в последующих применяемых патчах могут быть ссылки на уже неправильные строки, т.е. ошибки. Я использовал TortoiseSVN только для просмотра патчей, да и компилировать тут всё равно нельзя.

2. С помощью Visual Studio вносятся изменения в исходники, (папка "src" транка). Т.е. открываешь TortoiseSVN файл патча, там примерно так:

начало фрагмента (это отсебятина :) )
Index: src/saveload.cpp
===================================================================
--- src/saveload.cpp (revision 14505)
+++ src/saveload.cpp (working copy)

@@ -37,7 +37,7 @@ - номера исправляемых строк, не всегда совпадают и не догоняю, что такое к примеру 7 через запятую. Строка тут 37.

#include "table/strings.h" - предыдущая строка

-extern const uint16 SAVEGAME_VERSION = 102; - это красным строка - ибо нах
+extern const uint16 SAVEGAME_VERSION = 103; - эта зеленым вместо неё

SavegameType _savegame_type; ///< type of savegame we are loading - последующая строка
конец фрагмента
Предыдущая и последующая строки тут для более точного указания места исправления, как я понимаю. Внимание! Пустые строки не забывайте (в данном примере так и должно быть). Т.е. в src/saveload.cpp транка надо внести эти поправки. В патчах обычно указания на несколько исходных файлов и построены они аналогично.
Собственно, в VS открываешь указанные исходники и правишь строки, только повнимательней. Искать места исправлений лучше не по номерам строк (если файл большой), а по предыдущей или последующей строке.
Естественно, при внесении исправлений последовательно из нескольких патчей в одни и те же исходные файлы, строки сдвинутся немного, не забывайте это учитывать.
VS я только правил, не компилировал, ибо был затык и мне проще оказалось использовать BuildOTTD.

3. Проинсталлив BuildOTTD не обольщайтесь, нихрена она вам автоматом собирать не будет, т.к. какой-то там глюк с поиском хранища (ошибка 404). Да и фиг с ним, "для бешенной собаки семь вёрст не крюк" :) Возьмите папку с исправленными исходниками (по умолчанию при раззиповании она обзывается "trunk", пусть так и будет, но это не принципиально, можете взять только внутренности или указать другой путь.. ой, не, понесло, пусть будет trunk. Эту папку вам надо поместить в BuildOTTD, мой путь выглядит так - D:\BuildOTTD\msys\home\ZLZ\trunk.
А далее надо воспользоваться msys.bat в папке BuildOTTD\msys и завершить дело старым почти забытым способом:

cd trunk - переходите в нужную папку
configure - ждете несколько минут
make - ждете еще и нервничаете

Если исправления внесены верно, то сообщений об ошибках в конце не будет, а будет о том, что всё собрано. Если ошибки и экзешник не приготовился, то читайте что пишут и исправляйте в указанных местах. При трех патчах я седня ошибся три раза, причем сам виноват.
Вот здесь при успешном завершении (D:\BuildOTTD\msys\home\ZLZ\trunk\bin - в моем случае) берете готовый openttd.exe, папки data и lang, и копируете их в папку с игрой (скачанной готовой ночнушкой к примеру) и добавляете файлы, которых не хватает (trg'шки, sample, russian2w). Последний пропишите в конфиг:
[newgrf-static]
russian2w.grf =
чтобы кракозябры убрать.
Аллес :D

Через msys.bat кстати, можете загрузить транк если хотите (svn checkout svn://svn.openttd.org/trunk) и даже попытаться применить патч автоматом (cd trunk => patch -p0 -i patchname), но скорее всего не получится, слишком быстро меняются исходники.

Ну и вот значит, что я седня сделал: http://rapidshare.com/files/162228659/o ... r14565.rar - линк прямой
Сборка основана на транке 14565, с патчами "длительности дня"(о зависимостях читайте здесь), "find town", и "закрытие аэропорта". Соответственно, в ней можно применять grf'ки, которые требуют последних сборок, в частности ECS vectors v1 beta 5 и другие. Работоспособность длительно как понятно не проверял, но конфликтовать там имхо нечему, всего 3 патча.

И напоследок..
Вот вам - http://rapidshare.com/files/162229643/t ... _3ptch.rar - транк с измененными исходниками в соответствии с приведенными выше патчами. Поскольку уважаемый Smoky пока не может уделить время для сборок, предлагаю самим на транке 14565 сделать сборку с интересующими патчами. Т.е. три уже есть, надо взять следующий какой охота и вручную внести изменения. Я попробую туды еще что нибудь добавить на неделе.

Да, кстати... Если кто заикнется, что не знает английский, пусть сразу идет лесом, поскольку я его сам не знаю, но разобраться смог :D

Уф. Помоему я дольше сообщение сочинял, чем исходники правил и игру собирал.

з.ы. Попробую сейчас Traffic Lights, раз в первом посте его спрашивали, но там много больно. Ну мож получится.
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25

Re: Как устанавливать патчи?

Сообщение AxelX » Пн ноя 10, 2008 21:49

Большое спасибо за подробную инструкцию.
Ещё вчера из первого твоего поста, понял что к чему, но из второго твоего поста нашол ответ на другой вопрос, это компиляция пропаченных исходников.
Спасибо!
AxelX
Пассажир
Пассажир
 
Сообщения: 3
Зарегистрирован: Вс ноя 09, 2008 19:32

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Вт ноя 11, 2008 01:24

Traffic Lights...
Мде, у меня получилось. Не спрашивайте меня как, есть основания утверждать, что я поимел свой мозх. Это блин уже явно не голые исходники транка 14565 и я не знаю что вообще, но ведь игра работает! Светофорчики пашуть! :)

Итак. Сборка на транке 14565 с патчами:

airport-close
fund_town
daypatch
trafficlights

http://rapidshare.com/files/162567524/o ... -test2.rar - линк прямой

Есть подозрения, что если я захочу поставить патчи для сетевой игры (расшаривание инфраструктуры), надо будет переделывать кое что в файлах светофоров. Но, впрочем, я тута эксперимент провожу исключительно для одиночной (не сетевой) игры пока.
Здесь правленные мной исходники, если кому надо.

Уф. Я доволен, получаицца :D
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Вт ноя 11, 2008 13:27

Может кто уточнить... Поддержка SDL включается патчем или как еще?
OpenGL Blitter for OpenTTD - это зачем?
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Вт ноя 11, 2008 22:10

Хм. Все молчат, не знает никто?

Мне тут фишка поперла :) , теперь уже 7 патчей включил, + к предыдущим "patchsetting_treegrowth" (запрет роста деревьев), "map-1M" (большие карты) и наконец-то разобрался и включил патч "no_aircrash", так что и старые патчи теперь не проблема. Осталось понять, как включить поддержку SDL и можно играть. Помогите нубику! :)
Кстати, какие еще патчи можно взять?
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25

Re: Как устанавливать патчи?

Сообщение bohdan4ik » Ср ноя 12, 2008 13:17

Можно взять книгу в руки (По С++) и учить (если не знаете). А уж потом вкладывать в ОТТД свою мозгу) (т.е. писать свои, уникальные заплатки)
bohdan4ik
Начальник станции
Начальник станции
 
Сообщения: 100
Зарегистрирован: Вс ноя 04, 2007 04:37

Re: Как устанавливать патчи?

Сообщение Zhelezaka » Чт ноя 13, 2008 01:36

bohdan4ik писал(а):Можно взять книгу в руки (По С++) и учить (если не знаете). А уж потом вкладывать в ОТТД свою мозгу) (т.е. писать свои, уникальные заплатки)


С++ как хобби? :) В принципе, почему бы и нет, попробовать по крайней мере почитать стоит, может и не так сложно всё.

По поводу SDL - я нашел недостающие в BuildOTTD библиотеки и запихнул их вроде куда надо, т.к при компиляции (-with-sdl) написало "checking SDL... found" (до этого писало, что не находит) и размер собранного экзешника немного увеличился. Все значит нормально, включена поддержка SDL в сборке? Как узнать то?
Или нафиг и OpenGL лучше?

з.ы. тему может в соседний форум?

p.s.s. SDL похоже я включил удачно, т.к. игра не запускается если удалить sdl.ddl из папки.

Кто играл с включенным OpenGL на больших картах - он реально заметно разгружает процессор? Стоит заморачиваться?
Zhelezaka
Начальник станции
Начальник станции
 
Сообщения: 80
Зарегистрирован: Пт мар 03, 2006 15:25


Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 66