Электронная библиотека

Хакер


Хакер

Кризис жанра

Xakep, номер #009, стр. 009-068-3


Начинаешь просекать? Если игра требует себе 64 Мб, то на самом деле ей вовсе столько и не нужно, просто программисты поленились как следует поработать над кодом, разобраться, что нужно всегда, что иногда, а что и вовсе никогда, и запихали в память все, что только можно было в нее запихнуть.

Ладно, может быть, у тебя этих Мб 128, так тебе их и не жалко. Но дело-то в том, что, сокращая объем программы, неизбежно проводишь ее оптимизацию. То есть исключаешь лишнее и повторяющееся, переделываешь неудачное, упрощаешь упрощаемое... Ну а все это неизбежно улучшает быстродействие.

Вот тебе простой пример. Сколько времени тратил компьютер на один ход в первой Цивилизации? Да нисколько. Стоило нажать кнопку "Конец хода", как можно было начинать следующий. А во второй Цивилизации лично у меня на той же самой машине уходило до минуты и более! Почему? AI резко поумнел, много качественно нового появилось? Да нет, ничуть. С точки зрения программного кода игры отличались друг от друга только графикой, просчет ходов противника-то остался тот же самый... А вот и нет, на самом деле, не остался. Когда игру переделывали под DirectX, пришлось переписывать все. Объем программы вырос с 500 Кб до 2 Мб, но уменьшать его было незачем, какой получился, такой и ладно. И никто не заметил, что блок обсчета ходов противника намертво связан с перемещением его юнитов. То есть компьютеру не только приходится определять и запоминать положение всех присутствующих юнитов, но и перемещать их на виртуальной карте. Наверняка ведь авторы обратили внимание на увеличение времени ходов, но посчитали это свойством Windows. Если б хоть кто-то занимался вылизыванием кода, он бы непременно выявил истинную причину. Но никому это не было нужно. В итоге имеем, что имеем.

Тише едешь...

Ну ладно, перейдем теперь непосредственно к быстродействию. Вспомним незабвенной памяти Doom. Не-не! О том, как ты там бродил по лабиринтам, сколько и каких монстров завалил, какие и где тайники нашел, вспоминать не нужно. Вспомни только, на каких машинах он работал с приемлемой скоростью? Не помнишь? Хорошо, напоминаю. Если уменьшать площадь экрана, вполне достаточно было 386-го, ну а на 486DX2-66 он прекрасно бегал и с максимальным размером экрана.

А теперь займемся старой забавой под названием "Найдите десять отличий". Попробуем установить, чем же старичок Doom отличается, скажем, от Кингпина. Графикой, скажешь ты. Понятное дело, но вот в чем конкретно их графика разнится? Ладно, не напрягайся, скажу сам - главным образом, текстурами. Нет, я понимаю, спрайты - полигоны, пиксели - воксели, ну и прочие там ексели - моксели. Но если не по науке, а по-нашенски, по-простецки, то видна только та разница, как стены и монстры сделаны и что на них натянуто.

В Doom'е все параллельное и перпендикулярное, а текстур всего несколько (камень там, вода, дерево). А в Кингпине появились косые линии да несколько десятков текстур. Но вот что интересно, по идее всем этим (то есть обсчетом и прорисовкой линий и текстур) должен заниматься графический акселератор, вроде бы, он затем и придуман. Получается, что, поставив на 486DX4-100 эту самую железяку и сведя к минимуму детализацию, получишь хоть какую-то скорость. На деле же, как говорили в моем детстве, ундулоид и унифиляр, игра у тебя будет стоять на месте, как памятник.

Назад на стр. 009-068-2  Содержание  Вперед на стр. 009-068-4