"Ради удовольствия." - читать интересную книгу автора (Торвальдс Л., Даймонд Д.)

этом вместо отдельных точек -- пикселов -- в основу графики клали принцип
кинескопа, когда позади него помещают пушку, стреляющую электронами, которые
отклоняются магнитами. При этом разрешение графики значительно повышается,
но повторить ее очень трудно. Запрограммировать игру можно, но если делать
это на компьютере, у которого нет специальных графических возможностей, то
смотрится она убого.
Помню, как я программировал "Пакмана" на ассемблере. Прежде всего
пришлось вспомнить, как: именно выглядят персонажи. Потом постараться
нарисовать их в цвете на листке с сеткой 16 на 16. Если есть талант
художника, то может выйти неплохо. Но у такого маляра, как я, получились
лишь жалкие карикатуры на персонажей "Пакмана".
Так что мой клон был не фонтан. Но я им все равно гордился. Играть в
него было можно, и я послал клон в один из журналов, печатавших компьютерные
программы. Я уже продал некоторые свои программы другим журналам и думал,
что и эта пойдет.
Но ошибся.
Прежде всего программа была написана на ассемблере. А это значит, что,
если при набивке напечатанного в журнале текста сделать хоть малюсенькую
ошибку, она не заработает.
Писал я и собственные игры. Но тут нужен особый склад ума. Для игр
настолько важна производительность, что приходится залезать очень глубоко в
аппаратное нутро компьютера. Это я мог, но мозги у меня не игрового плана.
Сама по себе большая скорость или крутая графика еще не делают игру
классной. Тут важнее всего какая-то зацепка -- то, что заставляет в нее
играть. Это как с кино. Спецэффекты -- это вещь, но нужен еще и сюжет. А у
моих игр сюжет всегда хромал. В игре важно развитие событий, идея. Часто
развитие заключается в простом ускорении действия. Как, например, в
"Пакмане". Иногда сменяется лабиринт или чудовища начинают все искуснее тебя
ловить.
При программировании "Пакмана" меня увлекла такая задача: как сделать,
чтобы картинка не мерцала. В старых компьютерных играх это был типичный
дефект, потому что без специального оборудования персонажи непременно
мерцают. Для того чтобы переместить героя, нужно убрать его старое
изображение и нарисовать новое. При плохой синхронизации момент, когда
изображения нет, становится заметен и картинка мигает. От этого можно
избавляться разными путями. Например, вначале нарисовать нового персонажа, а
потом убрать старого. Тут нужна осторожность: важно не стереть ту часть
старой картинки, которая перекрывается новой. При этом вместо неприятного
мерцания иногда возникает эффект тени персонажа на экране. Это гораздо лучше
для восприятия: вместо мерцания появляется легкая размытость, которая
создает иллюзию движения. Однако такое решение требует множества ресурсов, и
пишутся такие программы
медленно.
Не случайно в играх всегда используются новейшие технологии и именно
игры обычно привлекают начинающих программистов. Одна из причин в том, что
среди самых головастых программистов немало пятнадцатилетних подростков,
одиноко сражающихся с чудовищами. (Так я думал шестнадцать лет назад и
по-прежнему подозреваю, что это так.) Но есть и другая причина: игры тянут
за собой аппаратную часть.
У нынешних компьютеров скорости для всего хватает. Единственное, что