Home

Page 43
Page 43
background image

 Глава 1

и видеокарты занимались только отображением информации и не выполня-

ли никаких дополнительных расчетов.

Как же тогда программистам игры Doom удалось создать трехмерный мир?

Секрет прост, как и все в этом мире. Игра не просчитывала сцены, все
сложные математические расчеты были рассчитаны заранее и занесены

в отдельную базу, которая запускалась при старте программы. Конечно же

занести все возможные результаты невозможно, поэтому база хранила ос-

новные результаты. Когда нужно было получить расчет значения, которого
не было в заранее рассчитанной таблице, то бралось наиболее приближен-
ное число. Таким образом, Doom получил отличную производительность
и достаточное качество

С выходом программы Quake игровой мир опять поразился качеству осве-

щения и теней в сценах виртуального мира Quake. Расчет света очень слож-
ная задача, не говоря уже о тенях. Как же тогда программисты игры смогли

добиться такого качества сцен и в то же время высокой скорости работы

игры? Ответ опять будет таким же — за счет таблиц с заранее

ми значениями.
Через некоторое время игровая индустрия поразилась еще больше. Когда
вышел Quake 3, в котором освещение рассчитывалось в реальном времени,

то его мир оказался немного неестественным и даже Half-Life, который вы-

шел позже и на движке старого Quake, выглядел намного естественнее и
привычнее. Это получилось в результате того, что мощности компьютера не

хватило для полных расчетов в реальном времени, а округления и погреш-

ности пошли не на пользу игровому окружению.

ЗАКОН № 7

Лишних проверок не бывает.

Чаще всего оптимизация может привести к нестабильности исполняемого
кода, потому что для увеличения производительности некоторые убирают

ненужные на первый взгляд проверки. Запомните, что ненужных проверок

не бывает! Если вы думаете, что какая-то нестандартная ситуация может и
не возникнуть, то она не возникнет только у вас. У пользователя, который
будет использовать вашу программу, может возникнуть все, что угодно. Он

обязательно нажмет на то, на что не нужно, или введет неправильные данные.
Обязательно делайте проверки всего того, что вводит пользователь. Делайте

это сразу же и не ждите, когда введенные данные понадобятся.
Не делайте проверки в цикле, а выносите за его пределы. Любые лишние
операторы if внутри цикла очень сильно влияют на производительность,

поэтому по возможности проверки нужно делать до или после цикла.
Циклы

 это слабое место любой программы, поэтому оптимизацию надо

начинать именно с них и стараться не вставлять в них лишние проверки.


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.