Полезные советы

Поддержка видеокарт

HGE запустится даже на low-end видеокартах, включая встроенные видеокарты, такие как Intel Solano (i815 chipset).

Последовательности

В целях повышения производительности функции Gfx_RenderLine, Gfx_RenderTriple и Gfx_RenderQuad накапливают смежные примитивы с одинаковой текстурой и режимом смешивания и затем отображают из одним вызовом DirectX. В большинстве случаев вы не заметите разницы или вообще не будете пользоваться последовательностями вообще. Но на всякий случай рекомендуется группировать вызовы рисования примитивов сначала по типу примитивов, затем по текстуре и наконец по режиму смешивания. Так же можно пользоваться функциями Gfx_StartBatch и Gfx_FinishBatch для самого быстрого вывода больших массивов примитивов.

Размеры текстур

Величина размеров любой текстуры должны должна быть степерью 2. Не рекомендуется использовать текстуры размером больше 1024x1024, потому что они могут работать очень медленно в некоторых видеокартах, которые не поддерживают их напрямую. Постарайтесь также помещать свою графику на несколько больших текстур, чтобы уменьшить количество их смен, что влияет на производительность.

Использование Z-буфера

Используйте Z-буфер только если он необходим, так как это влияет на производительность. По умолчанию Z-буфер отключен. Чтобы его включить, установите параметр системы HGE_ZBUFFER в значение true с помошью вызова функции System_SetState. Когда Z-буфер включен, лучше не производить сортировку объектов по убыванию, что повысит производительность.

Очистка экрана

Очищайте экран только в случае, когда это необходимо, потому что это влияет на производительность. Если вы покрываете объектами весь экран в каждом кадре - нет необходимости его очищать. В случае, если вы пользуетесь Z-буфером, возможно вым все равно придется очищать экран, чтобы сбросить его.

Масштабирование и вращение

Если вы собираетесь масштабировать или вращать свои спрайты - убедителсь, что графика постирается хотябы на 1 пиксел ниже альфа маски и/или границы ограничиывющего прямоугольника, чтобы избежать искажений.

Библиотеки спрайты и тайлов

Вы можете использовать вспомогательный класс hgeAnimation в качестве библиотеки спрайтов или тайлов. Просто не вызывайте метод Update и выбирайте нужный спрайт вручную используя метод SetFrame.

Клонирование

Можете использовать оператор присваивания (=) или конструктор копий, чтобы клонировать экземпляры большинства вспомогательных классов. Например, в случае с указателями на спрайты, синтаксис будет выглядеть так: *sprite2=*sprite1; или так hgeSprite *sprite2=new hgeSprite(*sprite1); Исключением являются классы hgeGUI, hgeResourceManager и hgeParticleManager.

Меш искажения и спрайты без текстуры

Вы можете использовать экземпляры классов hgeDistortionMesh и hgeSprite без присоединенной к ним текстур, чтобы получить цветовые эффекты на всю сцену, или ее часть. Попробуйте режим смешивания BLEND_ALPHAADD.

Отображение курсора мыши

Чтобы отобразить курсор мыши, выводите все что захочется по координатам, полученным функцией Input_GetMousePos в функции кадра.

Использование внешних функций работы со звуком

Если вы не желаете использовать звуковую библиотеку BASS для работы со звуком и хотите применить свою собственную реализацию звуковой системы, установите параметр системы HGE_USESOUND в значение false вызовом функции System_SetState перед вызовом System_Initiate. Так же позаботьтесь о BASS.DLL.

Управление указателем на интерфейс HGE

В любой момент, когда вам нужен доступ к HGE, вы можете вызвать функцию hgeCreate и затем использовать полученный указатель, а затем освобождать его с помощью Release. Или вы можете получить указатель на интерфейс в начале программы и сохранить его в глобальную переменную и освобождать в момент закрытия приложения. Хотя последний способ является 'плохим стилем', он работает в небольших проектах и все вспомогательные классы HGE используют этот подход.

Преобразоваение float к int

Если в вашем коде присутствует большое количество преобразований от float к int можете попробовать использовать ключ /QIfist компилятора Visual C++. Если включена эта функция можно получить улучшение производительности, хотя нельзя быть уверенным, какой способ округления будет использован. Чтобы активировать эту опцию, напишите ее в текстовом окне Project Options в закладке Project->Settings...->C/C++ диалога настроек debug и release конфигураций. Если вы используете другой компилятор, необходимо найти похожую опцию быстрого преобразования от float к int в сети, взамен стандартного преобразования.

Синхронизация скорости

Чтобы сделать игру независимой от скорости выполнения, масштабируйте все внутренние значения скоростей по значению, полученному функцией Timer_GetDelta. Если вы используете ускорение или другие нелинейные функции, могут возникнуть проблемы: аппроксимация линейными сегментами может дать разные результаты, в зависимости от числа сегментов. Чтобы этого избежать, накапливайте значения, полученные функцией Timer_GetDelta и обновляйте свои функции в фиксированные интервалы, или просто установите параметр системы HGE_FPS.

Ресурсы

Во время разработки, вы можете хранить свои данные в виде простых файлов на диске. Затем просто соберите архив с ресурсами при помощи pkzip и присоедините его вызовом функции Resource_AttachPack. Никаких дополнительных изменений в коде не понадобится для использования архива ресурсов. Смотрите также секцию Compiling resource pack, для более подробной информации.