Меню

Spacewar!»: як перші хакери створили першу популярну комп’ютерну гру. Частина 1

Spacewar!»: як перші хакери створили першу популярну комп’ютерну гру. Частина 1

На початку 1962 року група ентузіастів-програмістів з MIT, яка називала себе хакерами, створила першу працездатну версію комп'ютерної гри «Spacewar!». Дуель‑сімулятор бою космічних кораблів для двох гравців був написаний для найновішого на той час компʼютера DEC PDP‑1, оснащеного круглим дисплеєм. «Spacewar!» не була першою комп’ютерною грою, зокрема для самих її творців, але часто називається найважливішою та впливовою з ранніх експериментів у сфері ігрових програм. Вона завоювала величезну популярність спочатку серед працівників та студентів MIT, а потім і в багатьох інших установах, які використовували DEC PDP‑1 та пізніші ЕОМ із моніторами. «Spacewar!», прадід популярної в 90‑х «StarCon», — найпопулярніша комп'ютерна гра 1960‑х років, і саме досвід сесій у неї спонукав багатьох програмістів з початку 70‑х зайнятися створенням своїх ігор.

Пітер Сампсон і Ден Едвардс за грою в «Spacewar!»

Все почалося з Tech Model Railroad Club, TMRC, клубу технічного моделювання залізниць. Спочатку це буквально був клуб студентів, яким подобалося збирати моделі поїздів та залізниць у масштабі H0 (1:87) і керувати їх рухом за допомогою електронних схем. Він з’явився в інституті ще в кінці 1946 року, а через два роки отримав у своє розпорядження звільнилося приміщення радіолабораторії MIT військових років, досить просторе та обширне. Клуб ділився на дві основні групи за інтересами. Комусь були цікаві самі по собі моделі поїздів та залізниць: вони захоплено збирали для їх руху величезну розгалужену систему ліній і моделували мальовниче оточення, і називалися підкомітетом по ножу та пензлю, Knife and Paintbrush. Інші — «підкомітет по сигналізації та живленню», Signals and Power, яким було цікаво, як автоматизувати всі ці процеси за допомогою все більш складної електронної системи.

За роботою над розвитком моделі залізниці клубу TMRC

З цієї другої групи, як вважають, значною мірою виросли первинні ідеї хакерства та хакерського руху. Бо чим далі, тим більше їх цікавила не стільки автоматизація руху моделей поїздів, скільки автоматизація та алгоритмізація електронних систем як таких. У них була своя своєрідна ідеологія. Наприклад, вони вважали, що інтелектуальна діяльність має бути весела. Своїх колег, які просто навчалися й не були схильні до попутних розваг, вони без презирства називали Tools, «інструменти». Різні ідеї, проєкти та інші штучки, які поєднували в собі розумні, красиві рішення і водночас були не настільки корисними — в їхньому слензі стали називати hack. Це слово, що походить через прото‑германське hakkōną зі значенням «рубати, колоти, расколювати» до прото‑індоєвропейського *keg, «крюк, зуб, щось гостре». Загалом, у первинному й дослівному значенні хакерами були суворі чоловіки з кам’яними, бронзовими чи сталевими топорами, які робили «ХХХАК!» то з деревами та дровами, то з чужими черепами. У складеному у 1959 році словнику TMRC поняття хака не без самоіронії розшифровувалося наступним чином:

ХАК: 1) щось зроблене без конструктивної мети; 2) проєкт, здійснюваний з поганої власної ініціативи; 3) підсилювач ентропії; 4) зробити або спробувати зробити — хак.

Найжорсткіші члени підгрупи використовували слово хакер як само­назва. Один з них, Пітер Самсон, навіть складав вірш‑верлібр у стилі поезії бітників, іронічну пародію на широко обговорюваний тоді скандальний «Крик» Аллена Гінзберга:

Switch Thrower for the World,
Fuze Tester, Maker of Routes,
Player with the Railroads and the System's Advance Chopper;
Grungy, hairy, sprawling,
Machine of the Point-Function Line-o-lite:
They tell me you are wicked and I believe them;
for I have seen your painted light bulbs
under the lucite
luring the system coolies...
Under the tower, dust all over the place, hacking with bifurcated springs...
Hacking even as an ignorant freshman acts who has never lost occupancy and has dropped out
Hacking the M-Boards, for under its locks are the switches, and under its control the advance around the layout,
Hacking!
(перевести не возьмусь, але загальний зміст у описі того, як товстий та небритий чувак із TMRC возиться з моделлю залізної дороги і яро все хакає)

До другої половини 50‑х років автоматизована модель залізниць клубу TMRC у колишній лабораторії досягла монструозних розмірів та складності. Єдиним місцем, яке залишалося вільним, був кут біля дверей з панеллю керування з безлічі кнопок, лампок, тумблерів і телефонних реле, від якої тягнулися нескінченні проводи у всі кінці моделі, включаючи місто, завод та різноманітну природу околиць. Новачків це вражало, але самим членам підкомітету вже хотілося більшого. Як тільки у 1957 році в обчислювальному центрі MIT з’явився перший мейнфрейм IBM 704, теплий і ламповий, члени підкомітету доклали чимало зусиль, щоб дістатися до нього, як слід вивчити та попрактикуватися. Однак до ЕОМ тут же виростав величезний черга, що бажала дефіцитного машинного часу для вирішення більш серйозних задач, а швидкість введення даних через перфокарти та очікування результатів уражали. Спочатку навіть підійти до агрегату, що займав обширне приміщення, члени TMRC вважали удачею. А до спеціально навчених інженерів-операторів, які спочатку були єдиними, хто мав право вводити дані й загалом безпосередньо працювати з IBM 704, доводилося звертатися майже як до техножерців із Warhammer.

IBM 704 у природному середовищі існування

Усе змінилося весною 1959 року, коли в MIT вперше з’явився курс програмування для студентів — куди, природно, записалися й ентузіасти TMRC. Його вів Джон Маккарті: класичний «легко божевільний» учений‑математик, не від світу цього. Він не без зусиль спілкувався з людьми, але був справжнім фанатиком комп’ютерів та програмування, а також мріяв створити або хоча б застати появу штучного інтелекту: цей термін придумав і ввів у використання сам Джон Маккарті. Звісно, IBM 704, як і з’явившийся незабаром в MIT IBM 709, до ШІ було як до Плутона повзком, але треба було з чого починати.

Джон Маккарті в MIT, кінець 50‑х

Незабаром після початку навчання на курсах команда ентузіастів програмування з клубу TMRC у складі Алена Котока, Елвіна Беркемпа, Майкла Лібермана, Чарльза Ніссена та Роберта Вагнера розпочала під керівництвом Маккарті роботу над тим, щоб навчити ЕОМ грати в шахи. Програму писали на основі вже наявних наработок з шахових алгоритмів Алекса Бернштайна, математика і програміста IBM, розвивши їх і доповнивши альфа‑бета відсіченням для покращення генерації ходів. Забігаючи вперед, скажемо, що до 1962 року програма, яка увійде в історію як Kotok‑McCarthy, стане першою повністю працездатною шаховою програмою, здатною грати на рівні любителя. На IBM 7090 обчислення одного ходу займало від 5 до 20 хвилин. А після поїздки Маккарті до Союзу та знайомства з програмістами московського ИТЭФ, у 1966–1967 роках була проведена серія з чотирьох партій по телеграфній переписці між Kotok–McCarthy на IBM та шаховою програмою Олександра Кронрода на ЕОМ М‑2. Радянська машина перемогла з рахунком 3:1.

Повернемося до 1959 року. Взгоджено офіційно робили над шаховою програмою під керівництвом Маккарті члени клубу TMRC добилися для себе значної кількості машинного часу, але процес роботи з IBM 704 / 709 був надзвичайно повільним, через посередництво перфокарт та спеціально навчиних операторів, з якими періодично виникали конфлікти. Попутно вони побачили жартівливу програму‑пінпонг, написану кимось із студентів старших курсів, хак у найкращому сенсі тодішнього значення слова. Це був своєрідний електронний пінг‑понг, яку грала на... лампочках‑індикаторах панелі управління ЕОМ. При запуску програми лампочки починали швидко займатися одна за одною та гаснути, імітуючи рух м’яча, а гравець повинен був вчасно натиснути одну з кнопок, щоб його «відбити». Якщо все було зроблено правильно, «м’яч» так само летів у зворотному напрямку. Хлопцям з TMRC захотілося спробувати зробити якісь не менш динамічні ігри, але, на жаль, такий «пінг‑пінг» був майже єдиним, що IBM 704 / 709 могла швидко робити.

«Це були суворі 50‑ті, ми грали, як могли»

Однак випадок представився набагато раніше, ніж вони розраховували. Він постав у вигляді доставленого в MIT найновішого комп'ютера TX‑0, Transistorized Experimental computer 0 (у сенсі нульової версії, прототипу), у використанні користувачів «тиксо». Його створили у лабораторії імені Лінкольна як зменшений, повністю транзисторний варіант комп’ютера Whirlwind — і, як і прообраз, також використовували у роботах з створення мережевої автоматизованої системи ПВО Північної Америки, про яких ми писали раніше. На відміну від займаючого поверх великого приміщення Whirlwind, TX‑0 помістився у не надто великій кімнаті — і водночас працював краще. Більше того, він мав монітор діаметром 12 дюймів з можливістю використання світлового пера — пряме спадкоємство зв’язку всього проекту з завданнями ППО, з необхідністю ставити мітки для управління системою перехоплення повітряних цілей. Потім у лабораторії Лінкольна виготовили й запустили в дію більш досконалі TX‑1 та TX‑2, ну а TX‑0 передали в лабораторію електроніки та/ MIT. Де його встановили на другому поверсі обчислювального центру над приміщенням з IBM 704 / 709.

TX‑0 у обчислювальному центрі MIT

Зрозуміло, команда з клубу TMRC швидко добралася до нього по пораді професора Джека Денніса — і прийшла в захват від зручності, швидкодії та можливості роботи в режимі реального часу з виведенням інформації на монітор у найвищий захват. Більше того: завдяки більш інтуїтивному інтерфейсу та високій надійності транзисторів порівняно з проблемними лампами, з ним можна було працювати самостійно! Не менш природно, що до нової машини утворилася значна черга бажаючих машинного часу — і тому хлопцям довелося перейти на нічний графік життя: у все інше час прорватися було важко, зате вночі працювати з TX‑0 навіть в MIT були готові тільки такі фанатики програмування, як вони. Більше того, вони організували чергування у кімнаті з комп’ютером, а також мережу інформаторів — і якщо хтось не приходив у потрібний час, тут же мчали за TX‑0 експериментувати з різноманітними програмами.

Професор Джек Деннис, який привів для NIT TX‑0 та познайомив хакерів із TMRC

Програми були різноманітні, і писалися з міркувань цікавості та краси рішень, а не якоїсь користі. Наприклад, Пітер Самсон писав програми, які змушували простий біпер комп’ютера програвати різні мелодії, а також зробив конвертер арабських цифр у латинські та навпаки. Девід Гросс та Алан Коток зробили крок далі — і за допомогою саморобного обладнання навчили TX‑0 приймати звук з FM‑передавача, перетворювати його у програмний код і потім відтворювати біпером. Це рішення стало відомим як Expensive Tape Recorder, «Дорогий магнітофон» у сенсі відтворення мелодій на пристрої вартістю у 3 мільйони доларів США, і по суті стало першим кроком на шляху до оцифрування музики. Попутно група все більше віддалялася від власне клубу моделювання залізних доріг — усвідомлюючи себе все менше членами TMRC та все більше хакерами. Зате вони все більше зближувалися з захопленими комп’ютеристами, викладачами та співробітниками MIT, більшістю з яких були її нещодавні випускники та колишні члени того самого техніко‑інженерного крила клубу TMRC. Хакерська тусовка членів TMRC із студентів та молодих співробітників MIT рісла та клубилася вночі й вдень навколо TX‑0, змагуючись в кмітливості програмних рішень.

За пультом та монітором TX‑0, фото з музею MIT

Як розповідав учасник подій Мартин Грец, до появи ідеї майбутньої «Spacewar!» привели чотири «хака», програми, які так чи інакше використовували можливості TX‑0 та його монітора. По‑перше, створена ще на Whirlwind демонстраційна програма «Pong». Це була не гра, а симуляція руху умовного кульки, що падав зверху екрана та випадково відскакував від умовних стінок кілька разів. По‑друге — «Tic‑Tac‑Toe»: хрестики‑нулики між людиною та TX‑0, які гралися світловим пером на дисплеї. Вони, однак, були не власною ідеєю хакерів із TMRC, а перенесення на TX‑0 такої самої за принципом гри OXO, написаної ще в 1952 (!) році британським програмістом Алексом Дугласом з Кембріджа для ЕОМ EDSAC.

Хрестики‑нолики OXO 1952 року на емуляторі ЕОМ EDSAC

Третьою програмою був HAX: він малював на екрані різноманітні візерунки, що змінювалися при зміні регістра перемикача консолі. І, нарешті, «Mouse in the Maze», написана Дугласом Россом та Джоном Уордом: людина малювала на поділеному на сітку екрані нескладний лабіринт і поміщала одну або кілька точок із сиром. Управлявана комп’ютером миша повинна була знайти та з’їсти весь сир. Як це виглядало, можна подивитися тут. Доволі скоро гра була покращена до варіанту 18+: тепер миша шукала не сир, а келихи з вином, і з кожним новим келихом починала все більше хитатися під час руху. Усі ці розваги дуже подобалися членам хакерської тусовки MIT — але почати хотілося зробити щось краще та цікавіше. На жаль, але спроби не особливо увінчувалися успіхом, оскільки можливості TX‑0 та його дисплея були все ж досить обмеженими.

Mouse in the Maze (до слова, траплялася у скрінсейвері‑лабіринті Win95 миша — пряма відсилання та оммаж цієї давньої гри)

Осінню 1961 року в обчислювальний центр MIT доставили ще більш досконалий комп’ютер: DEC PDP‑1. Він за суттю був комерційним розвитком наработок TX‑0/2 і вироблявся колишніми співробітниками лабораторії Лінкольна, пішовшими у вільні хліба й створившими компанію Digital Equipment Corporation, DEC. PDP‑1 поставили у те саме приміщення, де працював TX‑0. Для хакерської тусовки це був довгоочікуваний святковий день: вони кілька місяців вивчали матеріали про PDP‑1 та передчували момент, коли зможуть дістатися до нього. PDP‑1 був краще TX‑0 практично за всіма параметрами — і водночас був інтуїтивно зрозумілий як його прямий «нащадок». Проте радість поміркувала тим, що круговий дисплей Тип 30 приїхав парою місяців пізніше — але ще до цього моменту троє членів хакерського товариства MIT, ветеранів клубу TMRC, зголосилися написати під нього комп’ютерну гру.

Саме вона і стане тією самою «Spacewar!».

Коментарі