OpenTTD (Да, та самая игра TTD, о которой я говорю)
Сегодня мы поговорим об игре, которой я уделил годы. Вы помните старую игру Transport Tycoon Deluxe, созданную Крисом Сойером (Chris Sawyer) и компанией MicroProse? Не знаю, как вы, а я провел много часов (много-много часов), играя в нее. Там надо было строить сети автомобильных и железных дорог, что у меня никак не получалось.
Теперь давайте перенесемся в настоящее. Ведь было бы неплохо, если бы мы смогли не только сыграть в улучшенную версию игры, но и совершить путешествие по ее коду?
Хорошо, я дам вам…
- увеличенные карты (в 64 раза по размеру)
- стабильный многопользовательский режим вплоть до 255 игроков в 15 компаниях или наблюдателей
- режим выделенного сервера и внутриигровая консоль администратора
- поддержка протоколов IPv6 и IPv4 для всех соединений клиентов и сервера
- внутриигровая загрузка искусственного интеллекта, файлов NewGRF, сценариев и карт высот
- новый алгоритм поиска пути, обеспечивающей следование транспотртных средств туда, куда вы пожелаете
- инструмент автопостройки железных и автомобильных дорог, улучшенно конструирование окружающей среды
- каналы, шлюзы, акведуки
- большие, неоднородные станции и возможность объединять их
- гигантские многоголовые поезда
- различные настраиваемые модели ускорения транспортных средств
- клонирование, автозамена и автообновление транспортных средств
- возможность строительства на склонах и побережье
- улучшенные/условные команды, разделение и копирование команд
- более длинные и высокие мосты, в том числе с новых конструкций, плюс совершенно гибкие тропинки/дороги под мостами
- переработанная система аэропортов со множеством аэро- и веролетопортов (т. е. международных и столичных)
- предварительные сигналы, семафоры, путевые сигналы
- поддержка TTDPatch NewGRF, предлагающая множество возможностей для графики настройку/модификацию поведения
- дорожные остановки для сочлененных автопоездов и трамваев, не требующие выхода из машины
- множество деревьев на каждом фрагменте
- подкуп городских властей
- множество настроек для придания игре того вида, который требуется
- сохранение игры без ее прерывания с помощью файлов, сжатых по алгоритму zlib
- поддержка интернализации. OpenTTD переведена более чем на 50 языков
- динамически создаваемые имена городов на 18 языках, плюс поддержа NewGRF для дополнительных языков
- свободно распространяемая графика, звуки и музыка
- платформа для написанных пользователем программ искусственного интеллекта
- изменение масштаба представления картинки
- инструмент преобразования железных дорого (в электрофицированные ж/д, монорельсы, и дороги с магнитной левитацией)
- поддержка механизма drag&drop почти для всех инструментов (снос, построение и удаление дорог, станций, редактор сценариев, и т. д.)
- сортировка списков по разным критериям (транспортные средства, станции, города, отрасли промышленности, и т. д.)
- поддержка колесика мыши (меню прокрутки, увеличение/уменьшение)
- автопрокрутка, когда указатель мыши попадает в область у края окна/экрана
- избавление от целого поезда при перетаскивании его в динамитную корзину
- оценка стоимости с помощью клавиши «shift»
- окно настройки сложных параметров, изменение настроек, не выходя из игры
- создание снимков экрана в форматах BMP, PNG или PCX (выбирается в меню настоек игры)
- большее количество валют (включая введение евро в 2002)
- дополнительные точки наблюдения, чтобы видеть несколько частей игрового мира в одно время
- выбор разрешения и частоты обновления экрана для полноэкранного режима
- цветная газета после определенной даты
- обозначаемая цветом прибыль от транспортного средства
- увеличение скорости игры (нажимая кнопку ускорения или клавишу Tab)
- постоянно возникающие окна, которые всегда располагаются поверх других окон и точно выравниваются относительно них
- больше горячих клавиш и меньше щелканья мышкой
- поддержка 32-разрядной графики
- поддержка языков с порядком письма справа-налево
- поддержка шрифтов других размеров, когда интерфейс пользователя масштабируется, исходя из шрифта и перевода
- *BSD, особенно FreeBSD, NetBSD и OpenBSD
- Linux
- Solaris
- Windows 95/98/ME/2000/XP/Vista/7
Так это блог Coding4Fun (и, следовательно, я подразумеваю легкий спуск в глубины исходного кода, который прекрасно документирован), вы получите исходники, которые можно скомпилировать, запустить и отладить в Visual Studio 2008/2010 (даже в свободных редакциях Express, хотя надо отметить, что нельзя создать 64-разрядную версию).
Страница wiki.openttd.org Microsoft Visual C++ 2008 Express Editions проведет вас через весь процесс, начиная с загрузки VS Express editions и других SDK Microsoft, библиотек, получение исходного кода, настройку путей Include/Library и компиляции проекта. Прямо сегодня я проследовал по этому маршруту и скомпилировал и запустил проект на моей системе. На это у меня ушло менее 30 минут (большую часть этого времени заняла первая компиляция и компоновка).
Посмотрим на решение:
Как видно, это полный и сложный проект игры.
Так выглядит игра, запущенная на моем ноутбуке:
Как отмечено в документации (и как вы могли бы ожидать) есть большая разница в производительности режимов отладки и выпуска (Debug и Release). Если можно, используйте режим релиза.
Замечательной чертой OpenTTD является ее расширяемость. Игру легко расширить, добавляя любые модули – от искусственного интеллекта, до грузовиков и фрагментов поверхности. При этом не нужно лезть в исходники.
-
– высокоуровневый язык и компилятор для написания файлов NewGRF. Подробнее см. спецификацию и руководство. – компилирует исходники NewGRF на низкоуровневом языке программирования NFO в GRF-файл. Использует вложенную программу nforenum для проверки кода на разумность. Подробнее см. спецификацию и руководство. – компилирует PNG-файлы с 32 битной глубиной цвета и их выравнивающие файлы в замещающий файл с 32 разрядами на пиксел. Замечание. Это также можно сделать с помощью NML. – компилирует файл описания звукового набора (sfo) и сами звуки в звуковой набор.
-
API для модулей искусственного интеллекта OpenTTD. – сайт DevZone является домашней страницей для ряда модулей и библиотек искусственного интеллекта с открытым исходным кодом. – секция Wiki, посвященная разработке искусственного интеллекта. посвящен разработке ИИ для OpenTTD.
Если вы хотите увидеть очень сложную, полную, занимательную и просто клёвую игру, покопаться в ее исходниках, написать расширения для нее, помочь проекту с переводом на другие языки или просто получить удовольствие, OpenTTD всегда для вас…