Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #64, МАРТ 2006 г.

графоманские улучшения

ФЛЕНОВ МИХАИЛ AKA HORRIFIC

Спецвыпуск: Хакер, номер #064, стр. 064-024-1


(WWW.VR-ONLINE.RU)

НЕСКОЛЬКО СЛОВ ОБ ОПТИМИЗАЦИИ ИГРОВОЙ ГРАФИКИ

ОБОЖАЮ ОПТИМИЗАЦИЮ ПО ТОЙ ПРОСТОЙ ПРИЧИНЕ, ЧТО ВО ВРЕМЯ ПРОФИЛИРОВАНИЯ КОДА ПРИХОДИТСЯ СЕРЬЕЗНО НАПРЯГАТЬ МОЗГИ И ИСКАТЬ ИНТЕРЕСНЫЕ РЕШЕНИЯ ЗНАКОМЫХ ЗАДАЧ. ПРИ ПРОГРАММИРОВАНИИ ИГР МНЕ ДОСТАВЛЯЕТ БОЛЬШЕЕ УДОВОЛЬСТВИЕ НЕ СОЗДАНИЕ ИГРЫ, А СОЗДАНИЕ ЭФФЕКТОВ И ПРОЦЕСС ОПТИМИЗАЦИИ. ИМЕННО ТУТ ДОСТИГАЕТСЯ ИСТИННЫЙ ОРГАЗМ :). МОЖЕТ БЫТЬ, ПОЭТОМУ Я ЕЩЕ НЕ СОЗДАЛ НИ ОДНОЙ ИГРЫ, ХОТЯ С ГРАФИКОЙ ДРУЖУ УЖЕ ДАВНО? ПОГОВОРИМ ОБ ОПТИМИЗАЦИИ ГРАФИЧЕСКИХ ПРОГРАММ, В ТОМ ЧИСЛЕ ИГр

Что будем рассматривать в этой статье? Нас интересует графика, а значит, будем говорить о тех вопросах, которые связаны с графикой и играми. Оптимизировать отображение стандартного окна с настройками игры мы не будем. Опускаться до такой пошлости :), как ассемблер, тоже не будем, потому что если опуститься туда, то можно будет писать целую книгу. Здесь лучше меня расскажет Касперски или другие уважаемые спецы по этому языку. Я знаю ассемблер, но не в такой степени, чтобы заниматься оптимизацией, хотя, даже если просто переписать какую-то функцию C++ на ассемблере, то код может работать быстрее. «Может», но не обязательно, поэтому не будем трогать эту тему.

компилятор

Не секрет, что львиная доля игр создается на С++, и чаще всего для компиляции используется компилятор от Microsoft. Этот стандарт признанный, и кто оптимизирует программу для работы в Windows лучше, чем сам производитель ОС? Однако нужна ли эта оптимизация в отношении Windows настолько сильно? С полной уверенностью говорю, что не нужна!!! Почему? Об этом читай буквально в следующем абзаце.

Всегда удивляюсь тем паразитам, которые разрабатывают программы (в том числе игры) с минимальными требованиями в Pentium IV, причем компилируют с помощью Visual C++ 6.0 без патчей и обновлений. Что тут удивительного? То, что Visual Studio 6.0 без патчей не знает о существовании Pentium IV, он даже MMX-команды по умолчанию не использует. Почему бы не использовать то, что есть в минимальных требованиях? Одни только команды MMX могут повысить производительность, а если включить и SIMD, то выиграешь в производительности до 20%, не внося ни капли изменений в код.

Так почему же не нужна оптимизация под ОС Windows? Игры используют возможности ОС минимально, то есть больше DirectX и процессора, а кто знает архитектуру процессоров лучше, чем сама Intel? По некоторым тестам, одна смена компилятора может повысить производительность программы на 10-15%, особенно в программах, интенсивно рассчитывающих графику. Действительно, такие показатели видишь не очень часто, а может приключиться и замедление работы, но 10% — вполне реальная цифра, причем абсолютно без каких-либо вмешательств в код. Главное — использовать процессор по максимуму и задействовать все возможности.

профилятор-турбулятор

Когда игра готова, запускаем ее и ищем самое слабое место. Я всегда искал его на глаз (в принципе, в игровом движке не так уж сложно определить слабое место), но недавно познакомился с программой Intel VTune Performance Analyzer. Эта утилита предназначена для анализа скорости выполнения программы. Настраиваем VTune, запускаем программу и через какое-то время смотрим, какие замеры сделал VTune. Главное, что нас интересует, — какая функция работает дольше всех. Оптимизацией именно такой функции нужно заниматься в дальнейшем.

Содержание  Вперед на стр. 064-024-2