. OpenTTD (Да, та самая игра TTD, о которой я говорю)
OpenTTD (Да, та самая игра TTD, о которой я говорю)

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 всегда для вас…

📎📎📎📎📎📎📎📎📎📎