Программирование игр для Windows. Советы профессионала


ТЕХНИКА ОПТИМИЗАЦИИ - часть 10


Следующая программа создает справочную таблицу значений синусов и косинусов:

 

float sin_table[360],cos_table[360] ;

for(index=0;index<360;index++)

{

sin_table[index]=sin(index*3.14159/180);

cos_table[index]=cos (index*3.14159/180) ;                 

}

Этот программный фрагмент создает две таблицы, содержащих по 360 заранее вычисленных значений синусов и косинусов.

Теперь посмотрим, как использовать справочные таблицы, К примеру взглянем на это выражение:

x=cos(ang*3.14159/180)*radius;

y=sin(ang*3.14159/180)*radius;

Используя наши новые справочные таблицы, мы могли бы иметь:

x=cos_table[ang]*radius;

y=sin_table[ang]*radius;

 

Применение справочных таблиц может значительно увеличить быстродействие ваших игр. Единственная сложность заключается в том, что они отнимают много места. К примеру, игра Wing Commander использует справочные таблицы, которые содержат предварительно вычисленные виды кораблей для всех углов поворота. DOOM использует справочные таблицы, чтобы помочь в вычислении видимого расположения всех объектов игрового пространства.

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

Я сторонник идеи, что полноценная видеоигра может быть сделана только с огромным количеством справочных таблиц, и лишь небольшим программным кодом, отвечающим за осуществление игровой логики, а то и вовсе без такового. Как и в электротехнике, в видеоиграх используются конечные автоматы (с которыми мы столкнулись в тринадцатой главе, «Искусственный интеллект»). Однако вместо использования алгоритмов, моделирующих поведение объекта для следования из одного состояния в другое (как мы делали в тринадцатой главе), для управления существами можно привлечь справочные таблицы.




Начало  Назад  Вперед



Книжный магазин