О программировании игр

Nov 11, 2008 11:53

Рылся в недрах жесткого диска и нашел кучу своих старых игр. Даже удалось их запустить, правда, некоторые только под эмулятором доса. Поностальгировал.

А началось все в седьмом классе, когда родители купили компьютер "Микроша".

Вообще, в качестве домашних компьютеров тогда были в моде "ZX Спектрумы". На Спектрумах была красивая цветная графика с мелкими пикселями. В качестве учебных компьютеров использовались БК0010 и БК0011. Там графика была не цветная, но тоже ничего. Микроша вообще графику не поддерживал, в нем была только черно-белая псевдографика. Однако все друзья, у которых были Спектрумы, мне жутко завидовали. Потому что Микроша был только у меня. Ко мне домой приходили толпами поиграть в замечательные игры, где буква в форме человечка (да, на Микроше была специальная буква в форме человечка, сделанная специально для игр) бегала по лабиринту, или какой-нибудь -=0#0=- летел, расстреливая астероиды.

Было жутко интересно, как же все эти игры делаются. Ведь кто-то же их делает. Воображение рисовало большой просторный зал, уставленный хитрыми устройствами, по которому ходят люди в белых халатах, паяют что-то паяльниками, смотрят на мигающие лампочки, рисуют на листочках какие-то непонятные значки, а их лысины дымятся от умственного напряжения. А потом вставляют магнитофонную кассету в самое главное устройство, и на нее намагничиваются получившиеся игры.




А надо сказать, у Микроши была приставка под названием ПЗУ. Это была такая пластмассовая хрень, которую можно было в Микрошу воткнуть. Внутри ПЗУ был текстовый редактор "Микрон", ассемблер и бейсик. В текстовом редакторе я даже как-то сделал домашнее задание по русскому языку. Но поскольку принтер в те времена - это было нечто абстрактное, а на кассетах задания не принимали, пришлось потом переписывать его с экрана в тетрадку. "Какая бесполезная вещь - текстовый редактор, - подумал тогда я. - Набиваешь текст, а потом ручкой его с экрана переписываешь. Проще сразу ручкой писать".

В общем, текстовый редактор во мне энтузиазма не вызвал. Ассемблер был вообще чем-то непонятным. И я начал изучать бейсик.

Изучать я начал с того, что папа показал мне, как написать калькулятор. Вот так подошел и спросил: "Хочешь покажу, как на компьютере калькулятор запрограммировать?". Разумеется, я хотел. Программа выглядела так:

10 INPUT X
20 PRINT X
30 GOTO 10

Это была замечательная программа. Если ввести ей 2+2, то она в ответ писала 4. А если ввести (5+3)*11, то 88. Потому что в микрошином бейсике в операторе INPUT был встроенный парсер арифметических выражений.

И я начал программировать калькуляторы. Я включал компьютер, садился за него и набирал выученные наизусть три строчки. Потом запускал программу, вводил ей "2+2", получал в ответ "4", и был от этого абсолютно счастлив. Я чувствовал, что постепенно становлюсь крутым программистом. Я хвастался своими умениями пришедшим в гости друзьям. Вначале они не верили, что я умею программировать. Тогда я, придав лицу снисходительное выражение, говорил: "Что, не веришь? Ну, смотри, сейчас покажу. Что бы мне запрограммировать? А запрограммирую-ка я сегодня... калькулятор! Да, пожалуй, сегодня я в настроении запрограммировать именно калькулятор!" При виде работающего калькулятора у друзей отвисала челюсть. "Круто! - шептали они в восхищении. - Где это ты научился?"

Однако калькуляторы постепенно надоели, хотелось запрограммировать что-нибудь более креативное. Папа рассказал мне про оператор IF, и мною с папиной помощью был рожден чат-бот с искуственным интеллектом. Программа выглядела как-то так:

10 PRINT "ТЫ ДУРАК?"
20 INPUT $X
30 IF $X = "ДА" PRINT "ДА ТЫ ДУРАК!" ELSE PRINT "НЕТ, ТЫ НЕ ДУРАК!"
40 GOTO 10

Выясняя, дурак ли я, я прочатился с программой несколько часов, после чего приступил к более серьезному программированию. В отличие от калькулятора, тут был большой простор для креатива. Ведь вместо вопроса "Ты дурак?" можно было спросить что-нибудь другое. А можно было задать несколько вопросов. Например, вначале спросить: "Ты толстый?". Потом спросить: "Ты лысый?". Напоследок спросить: "Ты урод?". После чего радостно соощить: "Ты толстый лысый урод!"

С тех пор я только тем и занимался, что программировал игры на Микроше.

Но потом мне на день рождения был подарен компьютер ЕС1841. Микроша был заброшен, а я кинулся осваивать новую технику. Этот компьютер был реально крут. Графика, кажется, 320 на 200 точек, четыре цвета - черный, белый серый и... еще серый. Офигенская тактовая частота 4.77 мегагерца, 640 килобайт оперативки, два пятидюймовых дисковода. Представляете, настоящие дискеты. С них программы грузились не по пятнадцать минут, как с кассеты, а всего полминуты-минуту.

Впоследствии на этот компьютер был поставлен 20-мегабайтный винчестер. И папа сказал: "Ну все, теперь тебе места практически навсегда хватит! Это же двадцать мегабайт! Если даже будешь программировать килобайта по три в день, то за год только один мегабайт заполнишь". Но это было потом. А пока...



...весь день я не отходил от нового компьютера. На следующее утро вскочил часов в шесть - не терпелось продолжить. Щелкнул кнопкой включения. В ответ - молчание. Компьютер не подавал признаков жизни.

Компьютер забрали в ремонт. Ремонтировали его примерно месяц. Через месяц томительного ожидания я наконец-то получил его назад. Впервые в жизни сыграл в "Принца Персии". Кто знает - тот поймет. Я добежал до первого врага, разбежался и прыгнул на него, пытаясь ударить в прыжке ногой. Враг скептически поднял бровь (таких деталей, конечно, было не разглядеть, но я в этом не сомневался) и рубанул меня саблей. Игра окончилась. После чего меня согнали с компьютера - то ли я должен был убраться в комнате, то ли еще чего.

А на следующий день меня увезли на дачу. На три месяца. Три черных месяца, полных боли и тоски. Это была самая большая трагедь в моей жизни. Каждый день я вставал с мыслью, как вернусь домой, сяду за компьютер, разбегусь получше и таки шмякну врага ногой раньше, чем он стукнет меня саблей. После чего рисовал углем на стене своей камеры очередную палочку и шел копать огород или строгать доски. Но лето все-таки наконец-то кончилось, я вернулся и зарубил того дядечку. А ногой его оказалось не убить в принципе. И вообще, принц приемами карате не владел, а только на саблях рубился. Что, впрочем, не делало его менее гениальным.

Примерно тогда я как раз поступил в институт. Или на следующий год. Не помню уже. И там, в компьютерном классе увидел игру Doom и был ею шокирован. Думал, что такая трехмерная игра будет возможна в отдаленном будущем, лет через 20. И вдруг - вот она передо мной.

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

Внезапно мне пришла в голову одна мысль. Я придумал, как можно нарисовать трехмерный лабиринт. Очень примитивный, но все-таки. И я решил: "Ладно, пусть Doom я никогда не смогу написать, но кое-что я напишу". Тогда я написал игру под названием "Алкаш". Я как раз изучал в институте паскаль, а паскаль работал быстрее бейсика. Поэтому я написал ее на паскале.

При загрузке игра выводила строки текста, пародируя загрузку игры Doom. Эти строчки содержали краткое введение в сюжет игры. Вот они, эти строчки. Только, чур, сильно не ржать. Потому что я для понту написал их на английском, а английский мой тогда оставлял желать лучшего.

ALKASH: SOBERING STATION on Earth.

A many centures ago the Grand Duk of China Waw-Lu-Kaka
faithful Leninist , the GRAIT ECONOMIST and FIGHTER against alcoholism
has built the SOBERING STATION (on Earth).It has not any doors and windows
so , all alkashes , who arrived there , became sober and died.Now, you will
come to this station . You must kill all people you meet , besause the fast
deth is better , than slow becaming sober. You can take the berdanka ,but if
you want some another weapon , you can find it in the station.
To come to the station you must have the very high alcohol concentration
in blood (100%).Now the many different hard drinks will arrived in it:
Press any key if you are ready.Press Ctrl-Alt-Del, if you are not ready.

IN_IT the bottle of scotch arrived
IN_IT the one liter of spirt ...
IN_IT the glass of brendi.
Well ...
Very well !!!
IN_IT the can of pervach .
Wait for me , I'll come back in a moment ...
OK !
IN_IT THE case of kahetinskoye [................................] 100%
IN_IT the 150 gramm of eorsh.
I AM READY.
I AM TOO YOUNG TO GRAW SOBER !!!!!!!!!!!



Поскольку программировал я на домашнем компьютере, эта игра запускалась даже на ЕС1841. Ну и на институтских 486. Только на 486 враги и стенки лабиринта были раскрашены в разные цвета, а на ЕС1841 рисовались только их контуры - на большее не хватало быстродействия.

Кстати, игра поддерживала многопользовательский режим. У нас стояла какая-то досовская сетка (кажется, Novell), с помощью которой можно было с одного компьютера получать доступ к файлам другого компьютера. Каждый игрок создавал файл, в который несколько раз в секунду писал свои координаты и статус, а другие этот файл несколько раз в секунду читали, и наоборот. Правда, при одновременном доступе к файлу часто все вылетало. Но можно было успеть кого-нибудь разок пристрелить.

Чтобы отлаживать многопользовательскую игру, я поставил какую-то досовскую штуковину, позволяющую запускать несколько программ параллельно и переключаться между ними. А то как еще две программы сразу запустить? Ну, правда, была какая-то фигня под названием "Майкрософт Виндоуз 3.11". Там были окошки всякие и виртуальная память. Но ведь каждому ясно, что дос лучше. А Виндоус - это изврат какой-то. Он тормозит и мерзко выглядит. В отличие от симпатичненького синенького Нортона Коммандера.

Когда я показывал игру однокурснику, к нам подошли какие-то студенты и поинтересовались, что это такое. Мы пошутили, что это новая игра от Майкрософт. Студенты поусмехались и ушли. Мы подумали, они поняли шутку. Но они, как выяснилось, поверили.

После этого несколько раз, играя в свою игру в компьютерном классе, я слышал за спиной диалоги от совершенно незнакомых мне студентов типа:
- А что это там?
- Да ты что, ни разу не видел? Это же новая игра от Майкрософт!

Кстати, человечки, которых я нарисовал для игры, потом пригодились в курсовой работе. У нас на первом курсе вел физику Чивилихин - очень оригинальный преподаватель. Был он застенчивый и гуманный. Когда на его пару вваливались опоздавшие студенты, бросался им навстречу, приветливо кивал, помогал найти свободное место и давал книжку со словами "Я тут до вас уже успел нового нарассказывать, поэтому, пока я на доске сейчас буду рисовать, вы прочитайте быстренько вот эту страничку, а то вам дальше будет непонятно."

Читал он нам Лагранжеву механику. Это такая альтернатива ньютоновской механики, основанная на вариационном счислении. Мы еще на первом курсе, после школы сразу - а нам сходу пишут на доске вариацию укороченного действия, попутно замечая, что ее можно внести под знак интеграла. Я сейчас-то не понимаю, что такое укороченное действие. Однако Чивилихин даже последней блондинке мог объяснить, почему эту вариацию можно внести под знак интеграла. Все становилось абсолютно понятно, и даже обидно, почему это я сам раньше Лагранжеву механику не изобрел. Примерно на сутки. Через сутки можно было открыть конспект, в котором вроде все было понятно, и увидеть в нем лишь набор непонятных закорючек. Этот феномен трудно объяснить. Я подозреваю, что Чивилихин телепат, и, когда объяснял, коннектился по вай-фаю своим мозгом непосредственно к мозгу студента. После чего предоставлял свой мозг в качестве сомозга, и студент начинал, сам того не осознавая, думать мозгом Чивилихина и все понимать. А потом дисконнектнется - и опять непонятно.

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

Программу я назвал "Oghltiqu", предположив, что это французское написание слова "Алтай".



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

После этого я решил написать много-много мелких игр. Потому что Алкаша я уже написал, а Doom еще не умею. Стандартный джентельменский набор игрописателя - арканоид, бомбер, ксоникс и удав.



А также игра "Рыбокоп". Игра посвящена песчаным рыбам. Рыбы ползают внутри песка, прогрызая там ходы. Если обгрызть со всех сторон область с песком, то она осыпается. Если она при этом осыпается на другую рыбу, то наносит ей повреждение. Грызть песок надо аккуратно, чтобы не засыпать им себя. В песке попадаются камни - камнем придавливать врагов еще эффективнее. Можно и просто банально кусаться, но противников больше и они сильнее, так что зубы - это оружие последнего шанса. Играть можно вдвоем двумя рыбами-союзниками, деля клавиатуру пополам.



продолжение следует...

креатив, игры

Previous post Next post
Up