Subversion Repositories Kolibri OS

Rev

Rev 1863 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1863 yogev_ezra 1
Компьютерные игры без компьютеров
2
 
3
Xakep, номер #007, Калькуляторные игры  стр. 70-73
4
Владимир Веселов (veselov@xakep.ru)
5
иллюстрация - А.Еремин
6
 
7
 
8
Чтобы приготовить рагу из зайца, как минимум нужно иметь кошку.
9
 
10
Народная мудрость
11
 
12
Благодаря неустанной заботе Советского правительства, Политбюро ЦК КПСС и лично Леонида Ильича Брежнева появление персональных компьютеров в нашей стране сильно подзадержалось. В то время как на Западе трудящиеся уже вовсю поглощали опиум компьютерных игр, самый прогрессивный в мире советский народ по старинке забивал козла, дулся в подкидного дурака или морщил репу над шахматами. Однако в середине восьмидесятых годов новый вождь Советского Союза Михаил Сергеевич Горбачев призвал страну к повальной компьютерной грамотности, чем страна была сильно озадаченна. Широкие массы трудящихся готовы были осваивать эти самые ПК, вот только где их взять? На просторах Страны Советов некоторое (причем весьма малое) количество персональных компьютеров к тому времени осело только в весьма закрытых НИИ да наиболее привилегированных учебных заведениях. Но "партия сказала надо, комсомол ответил есть!" Наиболее пытливые граждане вскоре обнаружили, что ПК в стране имеются в достаточных количествах... правда, расшифровывалась эта аббревиатура не "Персональный Компьютер", а "Программируемый микроКалькулятор".
13
 
14
Поскольку сравнивать было практически не с чем, определить, что ПК и рядом не лежал с подлинным компьютером, было нельзя. Вот почему его возвели в этот ранг, и появился первый в России "Клуб Компьютерных Игр". Обосновался он на страницах журнала "Техника - Молодежи" и примерно до 1990-го года был посвящен исключительно калькуляторам.
15
 
16
Что же представляла эта первая в нашей стране игровая платформа? Да самый обычный калькулятор для научных расчетов, где, кроме возможности вычислять синусы, логарифмы и прочие тангенсы, была возможность составить программу в девяносто семь операторов. Программы могли быть довольно сложными, поскольку имелись операторы циклов, условных и безусловных переходов, ну и прочие необходимые вещи. Естественно, имелась и оперативная память, правда, она ограничивалась четырнадцатью ячейками. Так как в калькуляторе существовало жесткое разделение памяти, отводимой переменным и программе, да еще было множество зашитых в ПЗУ подпрограмм, назвать точный размер ОЗУ невозможно. Но, переводя на современный язык, можно сказать, что он не превышал 500 байт.
17
 
18
И вот на этой-то "платформе" были реализованы практически все существовавшие тогда жанры компьютерных игр! Наибольшее развитие получили симуляторы и стратегии, но не были забыты аркады, логические игры и даже ролевые. Пожалуй, только квест в чистом виде отсутствовал, хотя некоторые квестоподобные игры имелись.
19
 
20
Надо сказать, что для игр на калькуляторах нужно было обладать изрядной фантазией. Ну сам посуди, тебе не дается ничего, кроме голых цифр, а ты на их основе должен представить себе состояние управляемого объекта, свое положение в игровом мире и все остальное. Правда, в некоторых играх позволялось рисовать какие-то схемы и графики, заполнять какие-то таблицы, но можно было обойтись и без всего этого.
21
 
22
По ступенькам в небо
23
 
24
Все началось с маленькой программульки под названием "Лунолет", которая очень быстро выросла в полноценную игру "Рейс Кон-Тики". Вот ее сюжет: небольшой двухместный космический аппарат стартует с поверхности Луны и выходит на круговую орбиту. Совершает хитрые маневры по сближению с орбитальной станцией и в конце концов стыкуется с ней. Пополняет запасы топлива, отрывается от станции и совершает перелет к Земле. Входит в атмосферу, тормозится, планирует, а потом совершает почти мягкую посадку на поверхность океана.
25
 
26
Теперь попроси любого программиста написать по этому сюжету космический симулятор, размер которого не превышал бы 500 байт. Уж не знаю, что именно он ответит, но вот тебе наверняка придется повторить фразу Пятачка из старого анекдота: "Ой! А куда это я пошел?" Все правильно, вместить столько разных вещей в столь узкие рамки попросту невозможно. Тем не менее, такая игра была сделана.
27
 
28
Решение было гениально простым (как, впрочем, и все, что связано с играми на ПК): сделать симулятор походовым и состоящим из нескольких последовательно вводимых программ. Да, да, игровой процесс был разделен на ходы, где в начале вводились исходные данные, а в конце получались координаты и состояние летательного аппарата. Скажем, вводишь время в 10 секунд, вектор тяги 45 градусов, количество сжигаемого топлива 100 килограмм и нажимаешь кнопку "С/С" (Старт/Стоп). Калькулятор пару-тройку минут жужжит, а потом сообщает, что ты успешно врезался в Луну и твои останки покоятся на глубине 18-ти метров.
29
 
30
А общий игровой процесс выглядел так: набираешь первую программу, с ее помощью отрываешься от поверхности Луны и выходишь на орбиту. Запоминаешь в ячейках памяти параметры орбиты, вводишь следующую программу (вручную с клавиатуры!) и совершаешь маневры сближения с орбитальной станцией. Потом следует третья программа, с помощью которой стыкуешься со станцией, ну и так далее. Полностью игра состояла, если мне не изменяет память, из шести программ, последняя из которых моделировала полет безмоторного аппарата в атмосфере.
31
 
32
Именно она послужила основой для следующей серии симуляторов - самолетных. Первой была программа на тему рассказа Олдриджа "Последний дюйм". Правда, сажать в ней нужно было не легкий самолетик, а громадный аэробус, все же остальные трагические коллизии остались в целостности. А вскоре подоспел и симулятор сверхлегкого самолета, на нем можно было не только совершать взлеты и посадки, но и выполнять мертвую петлю! Причем прежде чем броситься в эту авантюру, нужно было как следует подготовиться, иначе самолет сваливался в штопор и разбивался.
33
 
34
Вообще, симуляторов было создано великое множество - имитировались дирижабли с температурным управлением, парусные буера, глубоководные аппараты и даже такие экзотические средства передвижения как гравилеты. Не было только симуляторов наземных машин, по очень простой причине - играть в них в походовом режиме совсем уж не интересно. Однако вскоре эта трудность была преодолена. Правда, по современной классификации игры для калькулятора, шедшие в реальном времени, следует отнести к аркадам.
35
 
36
Синусоидальный руль
37
 
38
Попробуй решить такую задачу: перед тобой калькулятор, в процессе вычислений реагирующий только на нажатие кнопки "С/С" и непрерывно выводящий всю прогоняемую через него информацию на дисплей (выглядит это как жуткое мелькание цифр). Тебе нужно создать для этого калькулятора игру, идущую в режиме реального времени. Есть какие-нибудь соображения?
39
 
40
Ладно, даю подсказку. Калькулятор может вести вычисления угловых величин в градусах, радианах или градах (это когда прямой угол равен 100 градусам; говорят, придумано специально для армейских старшин, чтобы с точкой кипения воды не путали), причем переключать с одного режима на другой можно прямо в процессе вычислений. Усек идею? Молодец! А для тех, кто в танке, растолкую подробно.
41
 
42
Чтобы сообщить калькулятору, чего ты от него что-то хочешь, нужно ввести в программу вычисление хотя бы синуса 90. Если счет идет в градусах, получается одна величина, в радианах - другая, ну а в градах и вовсе третья. Проверив в нужном месте полученную величину, калькулятор узнает, что руль повернут вправо, или, там, педаль газа утоплена до отказа.
43
 
44
А как быть с выводом информации? Тоже просто. Нужно повторить вывод соответствующих цифр на дисплей не менее трех раз (то есть вставить в программу три пустых оператора), тогда человеческий глаз успевает рассмотреть их. В классических аркадах, скажем, в гонках с препятствиями, выводилась комбинация нулей, единиц и двоек. Нули обозначали свободную дорогу, единицы ямы и камни, а двойки - машины соперников, и нужно было описанным способом между ними лавировать.
45
 
46
В более сложных аркадах, типа управления парусной яхтой, выводилась ее скорость (два знака), курс (еще два знака), скорость ветра (два знака) и его направление (последние два знака). И вот за считанные секунды нужно было считать восьмизначное число, сообразить, какие его цифры что означают, и дать нужную команду. Пожалуй, эти калькуляторные аркады были посложнее современных.
47
 
48
Единство и борьба противоположностей
49
 
50
Вот уж что, казалось бы, невозможно втиснуть в рамки девяноста семи операторов и четырнадцати ячеек памяти, так это мир стратегии. Однако он прекрасно туда влез. Первая стратегическая игра называлась "Остров" и довольно точно, хотя и со значительными упрощениями, моделировала управление небольшим островным государством. Были там налоги, собираемые с жителей, доходы от туризма и от промышленности. Существовали методы повышения всех этих доходов. Причем промышленность загрязняла окружающую среду и мешала туризму, а жители были постоянно чем-то недовольны.
51
 
52
Надо сказать, администрация Клуба прекрасно ориентировалась в требованиях текущего момента, поэтому такую классово чуждую игру выпустить не могла, пришлось подвергнуть ее значительным доработкам. На дворе стоял уже 1986-й год, стране было велено повернуться лицом к сельскому хозяйству, поэтому игра называлась "Урожай". Моделировалось в ней управление колхозом, причем довольно точно, с засухами, нашествием грызунов, расхитителями социалистической собственности и всем прочим. А еще через год, когда наши правители озаботились кооперативной деятельностью, эта же игра была преобразована в "Кооперативное кафе" (вот она, предшественница мелкопрозовского "Пица Тайкуна"!).
53
 
54
Позднее появились варианты игры, позволявшие управлять большим магазином, заводом, авторемонтной мастерской и даже преступной шайкой. Правда, все это были продукты народного творчества и на страницы клуба они не попали.
55
 
56
Ничего в этом перечне игр не улавливаешь? Ну как же, один и тот же основной алгоритм игры позволяет моделировать деятельность руководителя государства, крупного (и мелкого) хозяйственника, кооператора и мафиози. Можно сказать, что на этом простом примере было показано, что принципиальных различий между всеми ними нет. Очень скоро стране пришлось убедиться в этом на собственном опыте.
57
 
58
Впрочем, это не имеет отношения к предмету нашего рассмотрения, поэтому скажу лучше пару слов о воргеймах. Тут, собственно говоря, все обстоит просто. Дело в том, что на Западе воргеймы появились задолго до появления компьютеров. Были это такие настольные игры, разыгрываемые на картонном поле пластмассовыми фишками. Чтобы внести в них элемент объективности и случайности, применялись игральные кости. Как ты понимаешь, перевести все это на язык калькулятора несложно. То есть в первых воргеймах сохранялось и поле, и фишки, а калькулятор только более-менее объективно рассчитывал результаты столкновения двух отрядов. Позднее появились более продвинутые игры, где взаимное положение войск, уровень их снабжения и подготовки, мораль и все прочее хранилось в памяти калькулятора, а игроку оставалось только отдавать команды, атаковать такой-то отряд неприятеля таким-то своим отрядом.
59
 
60
Жестокие игры
61
 
62
В области логических игр калькулятор вступил на тропу, которую ему, по идее, никак не возможно было одолеть. Дело в том, что наши умельцы не стали моделировать всякие паззлы, крестики-нолики или "Морской бой", они сразу же взялись за шахматы и шашки!
63
 
64
Вот ведь что интересно, всего за несколько месяцев до появления первой шахматной программы один из отцов-основателей клуба на вопрос, когда такие игры появятся, ответил фразами: "Не вполне обоснованная вера во всемогущество ПК", "Какие там шахматы! Пиши что попало, ходи как попало!" По счастью, поклонников ПК это не обескуражило. Конечно, до полноценных шахматных программ дело так и не дошло, но я уверен, что не из-за слабости ПК или недостатка в нашей стране самородков, а только из-за пришествия в нее ZX Spectrum и прочей иностранной заразы.
65
 
66
Первая шахматная программа предлагала поставить мат слоном и конем черному королю, управляемому ПК. Надо сказать, черные оборонялись весьма искусно, так что повозиться приходилось немало. Потом были программы, в которых ПК ставил ладьей или ладьей и слоном мат королю, управляемому человеком. Должен отметить, это были очень обидные программы, один мой приятель, большой любитель шахмат, забросил их навсегда после того как "проклятая железяка" поставила ему мат на девятом ходу.
67
 
68
Потом пошли шахматоподобные игры, "Волки и овцы", "Укрощение мустанга" и другие. Наконец, появились и шашечные программы, в которых можно было сыграть полноценную партию. О них нужно сказать особо.
69
 
70
Для начала очередная задачка на сообразительность. Шашечная доска состоит из 64-х клеток (если считать только используемые черные - 32-х), в игре участвует по 12 шашек с каждой стороны. Теперь попробуй запихнуть все это в 14 регистров, да еще пару-тройку нужно оставить для всяких вспомогательных вычислений. Ну что, крыша поехала? Ладно, не буду томить.
71
 
72
Простейший и наиболее экономный способ заключается в том, чтобы хранить не состояние каждой клеточки, а состояние рядов. То есть записываем в первый регистр, скажем, 1020, это значит, что в первой клетке первого ряда стоит белая шашка, вторая и четвертая пусты, а в третьей стоит черная. Для описания всей доски понадобится всего восемь регистров. Но можно и это количество сократить вдвое, если в одном регистре хранить сразу два ряда, нечетный как целую часть числа, а четный как дробную. Вообще-то есть возможность запихнуть всю доску в два регистра, попробуй сам сообразить, как.
73
 
74
Несбывшиеся надежды
75
 
76
Шашечные программы были, можно сказать, лебединой песней ПК. Правда, под занавес, появилась почти настоящая RPG "Страна Фантазия", RTS "Полет шмеля", аркада "Охота на скалоеда" и пошаговая стратегия "Пещера сокровищ". Однако с запада (и востока) на страну уже надвинулись всякие там "Коммодоры" и "Амиги", а за нами маячил и сам IBM PC. Как ты знаешь, Страна Советов этого натиска не выдержала и развалилась, под ее обломками был погребен и скромный микрокалькулятор. А жаль, кто знает, до каких бы высот дошло народное творчество, какие немыслимые идеи воплотились бы в девяноста семи шагах программы и четырнадцати ячейках памяти?