Читаем Жизнь в мире компьютерных игр полностью

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

Обычно этот прием использовали при работе с небольшими картинками. Например, в моей первой символьной игре я использовал «звездочку» для изображения астероида, потому что ничего, кроме стандартных текстовых символов, у меня в распоряжении не было. Но шрифт вовсе не обязательно должен был состоять из букв и цифр. Если бы произошел этакий чудесный анахронизм и мой мини-компьютер Nova загрузился с игривым шрифтом Wingdings от Microsoft, то «звездочка» отобразилась бы как маленький конверт. При нажатии большой литеры M на экране высветилась бы классическая мультяшная бомба, вместо цифры 8 – миленький телефон с циферблатом. Конечно, остальные функции компьютера при таком раскладе стали бы недоступны, но идея здесь в том, что можно составить из маленьких картинок пользовательский шрифт, и он будет грузиться быстрее, чем если бы компьютер подгружал те же изображения через видеокарту.

Следующим шагом была загрузка в шрифтовом формате простых анимированных картинок – этот прием я использовал во Floyd of the Jungle. Каждое существо там изображалась одной буквой, а последние буквы алфавита были отведены под их слегка видоизмененные версии. Например, вместо символа «c» был крокодил с закрытой пастью, а вместо большой «C» – он же, только пасть была уже открыта. Если прописать команду быстрого переключения между двумя этими символами, на экране крокодил будет открывать и закрывать пасть. А если добавить в этот цикл еще пару крокодильих букв, то крокодил на экране научится ходить и щелкать челюстями одновременно. После загрузки шрифта в память на экран можно было вывести хоть одного крокодила, хоть сотню – это не требовало дополнительных ресурсов. Пока ваш алфавит не превышал максимально допустимого количества символов в шрифте – 256, – процессор компьютера мог переключаться между ними с той же легкостью, с какой он пролистывал текстовый файл.

Инструмент Рэндала позволял анализировать большую картинку и находить наиболее эффективный способ преобразования каждого блока размером 8 на 8 пикселей в шрифтовой символ. Эта техника представляла собой нечто вроде живописи цифрами: например, если верхний левый угол экрана был полностью занят небом, значит, символ «1» соответствовал сплошному блоку синего цвета, и все остальные большие куски синего также обозначались символом «1». Когда мы добирались до облака, цифрой «2» приходилось обозначать изогнутый кусок синего и белого, но потом наша задача опять упрощалась: подряд шел целый ряд белых кусков, и всем им соответствовал символ «3». Чем проще была картинка, тем больший размер изображения мы могли описать с помощью отведенных нам 256 символов. Когда игрок выбирал на экране пункт меню, мы стирали шрифт вместе со всем остальным, что было на экране, и загружали новое изображение.

Единственная проблема состояла в том, что нам при всем при том нужно было выводить на экран еще и настоящий текст. В игре могли быть сотни разных шрифтов (а с разными картинками для каждого экрана именно так у нас и получалось), но одновременно в память можно было загрузить только один шрифт, поэтому первые 70 позиций в каждом шрифте использовались для одинаковых наборов прописных и строчных букв, цифр и некоторых специальных символов вроде запятых и вопросительных знаков. Остальные 186 позиций, то есть скобки, амперсанты и прочее, заменялись на сборную солянку из цветных пикселей, которые слагались в целостную картинку, только если расположить их в нужном порядке – в таком случае они вдруг превращались в прекрасный приморский городок или в миловидную дочь губернатора.

Перейти на страницу:

Все книги серии МИФ. Креатив

Похожие книги