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

Урок 3. Конфигурация окна DDD

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

  1. В каталоге bin создайте текстовый файл настройки_ddd.cfg

  2. Пока что добавим в этот файл всего одну строку

имя_окна = Урок по DDD

Этого было достаточно, чтобы больше не появлялось сообщение о недостающем файле (мы его создали), и для замены названия окна.



  1. Теперь немного поэкспериментируем с размерами окна. В предыдущем варианте использовались размеры 800x600, используемые по-умолчанию. Добавьте в файл конфигурации строки:

    размеры_окна = [1280, 768]
    

    Сейчас, если запустить наше приложение, размер окна станет больше.

    1. Касательно размеров окна есть одно замечание о системе Windows. В Панели управления Windows есть раздел «Изменение размеров текста и других элементов». В нём можно задать размеры этих самых «элементов» в процентах: 100%, 125%, 150% (по крайней мере, так у меня в Windows 7). Так вот, если эта настройка стоит не на 100%, то реальный размер окна DDD будет больше, чем заданный в файле конфигурации. Если был задан размер по-умолчанию 800x600, а Windows настроена на 125%, то реальные размеры окна будут 1000x750. Этот факт не является чем-то «ужасным» именно для оконного режима, но всё-таки нужно иметь его ввиду при настройке приложения. См. аналогичное замечание в следующем пункте о полноэкранном режиме.А вот в полноэкранном режиме при размере текста не равном 100% происходят какием

  2. Теперь попробуем перевести наше приложение в полноэкранный режим. Добавьте эту строку в файл конфигурации:

    полный_экран = 1

    Наградой нам будет страшный чёрный экран, как будто компьютер внезапно отключился. Не пугайтесь, клавиша Esc всё ещё действует.

    1. В полноэкранном режиме, если в системе Windows задано «Изменение размеров текста и других элементов» не равным 100%, то программа будет откровенно сбоить. Это не является недостатком исключительно библиотеки DDD, я наблюдал аналогичные проблемы у многих коммерческих игр, использующих SDL. Лучше в таком случае полноэкранный режим вообще не включать или воспользоваться режимом из следующего (5-го) пункта.

  3. SDL позволяет включать режим ещё одного вида, наряду с оконным и полноэкранным. В этом режиме размеры окна становятся равными размеру всего экрана в обычном (не переключенном) режиме системы, у окна отсутствуют рамки и заголовок, и внешне он кажется обычным полноэкранным. Но здесь, во-первых, не действуют заданные размеры, размеры окна всегда равны размерам экрана системы, а во-вторых, понажимав несколько раз Alt-Tab, вы можете убедиться, что приложение во многом ведёт себя, как обычное окно среди других окон системы. Для включения этого режима требуются две настройки в файле конфигурации: полный_экран и режим_desktop. Одна из них у нас уже была включена на предыдущем шаге, так что требуется добавить только это:

режим_desktop = 1
  1. Последней настройкой, которой можно управлять работой приложения на уровне всей системы, является синхронизация_экрана. Как следует из её названия, она управляет работой всего Игрового цикла. Если её значение равно 0, то Игровой цикл будет крутиться со всей возможной скоростью, которую позволяет одно ядро вашего процессора. И если в сцене нет каких-то очень ресурсоёмких элементов, то частота смены кадров в этом режиме будет выше частоты кадров экрана. В некоторых играх (например, в сетевых шутерах) это действительно требуется, но обычно это просто лишний нагрев процессора. Если значение равно 1, то частота смены кадров будет не выше частоты кадров экрана. Т. е. обычно эти частоты равны, но в случае каких-то высоких нагрузок (сложная сцена, ресурсоёмкие вычисления) частота смены кадров может стать ниже кадровой частоты экрана. Значение по-умолчанию равно 1. Отключение синхронизации, работающей по-умолчанию, делается так:

синхронизация_экрана = 0;

Понятно, что с пустым чёрным экраном мы сейчас не увидим изменений, связанных с этой настройкой.

  1. В общем-то это всё, что можно было рассказать об окне приложения, его размерах и режимах, задаваемых в файле конфигурации. В дальнейших уроках для иллюстраций я буду использовать оконный режим с размерами 1280x768 (тестировать какие-то свои наработки мне всё-таки удобнее в окне, а не в полноэкранном режиме), целиком мой файл конфигурации DDD выглядит так:

настройки_ddd.cfg
имя_окна = Урок по DDD
размеры_окна = [1280, 768]
полный_экран = 0
режим_desktop = 0