← к содержанию

Урок 1. Подготовка проекта

В файле установка.html библиотеки DDD описана установка зависимостей, но раз уж тут у нас уроки, то не будет лишним и здесь её расписать.

  1. Создадим новый пустой каталог, в котором у нас будет всё располагаться.

  2. Скачиваем архив с библиотеками ddd и my_utils по адресу http://striver00.ru/DDD/files/ddd.zip. Распаковываем его в созданном каталоге.

  3. Создадим каталоги для исходных текстов программы. Пусть он называется src. Мне хотелось бы называть файлы и каталоги по-русски, но, к сожалению, система сборки dub с ними не справляется (в отличие от самого компилятора dmd).

  4. Создадим также каталог для того, что у нас получится в результате компиляции – запускаемого приложения. Пусть он называется bin.

  5. Теперь нужно создать файл dub.json, в соответствии с которым будет компилироваться и собираться проект. У dub два вида конфигурационных файлов: .sdl и .json. Я не увидел для себя каких либо преимуществ формата .sdl, а json мне привычнее. Если .sdl вам по каким-то причинам кажется более подходящим, значит вы без труда сможете переписать этот .json-файл в его формат.

dub.json
{
    "name": "ddd-urok",
    "description": "Урок по использованию DDD",
    "sourcePaths": ["./ddd", "./my_utils", "./src"],
    "targetPath": "bin",
    "targetType": "executable",
    "dependencies": {
        "derelict-util": "<=2.1.0",
        "derelict-gl3": ">=1.0.0 <=1.0.23",
        "derelict-sdl2": "<=2.1.4"
    }
}
  1. Теперь пришло время разобраться с внешними зависимостями. Если в вашей системе стоят видеодрайвера с поддержкой 3D-графики, значит, скорее всего, OpenGL у вас уже поддерживается.

  2. Совсем другое дело с библиотекой SDL. В большинстве случаев придется её установить. В системах Windows и Linux она добавляется по-разному (и я понятия не имею, как со всем этим в MacOS).

    1. В случае Windows: скачиваем Runtime Binaries для Windows со страниц проекта SDL, в зависимости от того, под какую разрядность вы собираетесь компилировать программы, выбирайте архивы с суффиксами x86 или x64. Ссылки на страницы, с которых скачиваем части библиотеки: https://www.libsdl.org/download-2.0.php, https://www.libsdl.org/projects/SDL_image/, https://www.libsdl.org/projects/SDL_ttf/. На момент написания этого урока архивы для 32-х разрядной системы называются так: SDL2-2.0.9-win32-x86.zip, SDL2_image-2.0.4-win32-x86.zip, SDL2_ttf-2.0.15-win32-x86.zip, но, скорее всего, в дальнейшем номера версий могут измениться. Разархивированные dll-библиотеки нужно будет положить в ранее созданный нами каталог bin.

    2. В случае Linux: устанавливаем пакеты для SDL в систему. Если у вас Ubuntu, выполняем в консоли следующее:

sudo apt-get install libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0

Если у вас Fedora, то нужно выполнить такую команду:

sudo dnf install SDL2 SDL2_image SDL2_ttf



Дополнение к уроку 1.

Известно, что работа с 3D-графикой требует вычислительных ресурсов, и всегда хочется, чтобы «работало быстрее». Все примеры из этой серии уроков будут работать достаточно быстро на любой системе с более-менее современной конфигурацией. Но это так, потому что 3D-сцены в уроках относительно «маленькие». Нет смысла запускать на DDD действительно большие сцены, аналогичные тем, что есть в современных больших играх, созданных за многие миллионы долларов, он их не «потянет».

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

Собственно рекомендаций всего две, и они достаточно простые:

  1. Вместо компилятора DMD использовать LDC. Для этого нужно, во первых, этот LDC поставить у себя в системе, а во-вторых, при компиляции к строке dub build добавить опцию --compiler=ldc2 (возможно, перед названием компилятора ldc2 понадобится полный путь к нему). Полная команда

dub build --compiler=ldc2

На момент, когда я начинал делать DDD, в системе Windows с компиляцией через LDC были сложности, требовалось ставить и настраивать страшную VisualStudio, но сейчас всё просто, в LDC появился собственный линковщик.

У меня компиляция через LDC в некоторых случаях давала прирост скорости визуализации в полтора раза.

  1. При компиляции включать оптимизацию и отключать режим debug. Для этого к команде dub build надо добавить опцию --build=release. Полная команда, включающая рекомендацию из п.1, будет выглядеть так:

dub build --compiler=ldc2 --build=release

У меня с этой опцией скорость в некоторых случаях возрастала до трёх раз.

Но всё это имеет смысл делать только для финальной сборки программы, во время написания и отладки эти опции будут только мешать.