Однажды я проходил собеседование на должность программиста. HR-менеджер в числе прочего спросила: «Как вы начали программировать?» Никогда об этом не задумывался, но всё-таки вспомнил.
В самом начале девяностых я учился классе в пятом и захотел себе компьютер для игрушек. Жили мы в то время небогато, родители такую покупку бы не потянули — на компьютер копил я сам, долго и упорно подрабатывая по мелочи.
Наконец красавец-компьютер был куплен. 48 Кбайт ОЗУ и процессор Z80 — это был всем известный ZX Spectrum. Подразумевалось, что дисплеем должен служить телевизор, а в качестве внешнего накопителя использоваться кассетный магнитофон. Вооружившись паяльником, к телевизору я «спектрум» подключил , а вот с магнитофоном повезло меньше — его не было. Свовсем.
Все игры были записаны на кассеты — загрузить их было нельзя, а играть-то хотелось. Пришлось писать игрушки самому — совсем простенькие, зато свои!
Каникулы теперь у меня выглядели следующим образом: полдня пишу игру, полдня играю, а вечером мама, вернувшись с работы, вырубает машину и тем самым уничтожает все труды. Следующим утром цикл повторялся.
Если же я не успевал дописать игру или результат выходил уж очень интересным, листинг «сохранялся» на бумагу при помощи ручки и с утра набирался заново. Частенько я замечал, что процесс написания стал интереснее самих игр!
Сейчас уже некоторые и не вспомнят, что первые компьютерные клубы появились в конце восьмидесятых — представьте зал с рядами «спектрумов», подключенных к телевизорам «Рубин». На каждом стоял механический будильник, отмерявший время «диггеров» и «арканоидов».
Затем в частном владении появились «двушки» и «трёшки», и примерно одинаковый набор игр для них носили друг другу на дискетах друзья и знакомые. К моменту появления 486-х игрушки уже продавались в специализированных магазинах, и самые крутые из них занимали аж по десятку дискет.
Кроме того, можно было зайти в такой магазин со своей пачкой флоппиков и за сходную сумму записать себе всё, что понравится и поместится. Когда только появились компакт-диски и народ ещё не воспринимал технологической пропасти между старыми и новыми носителями, случались вот такие истории:
Середина девяностых, ВВЦ, бокс по продаже компьютеров. Продавец играет в новейший 3D-шутер Creature Shock, который смотрелся по тем временам ультрасовременной диковинкой. Подходит солидно выглядящий мужчина, пару минут наблюдает за игрой, решает приобрести. Продавец предупреждает: «Эта игра на двух CD». Посетитель возмущается и требует записать игру на дискеты. Продавец повторно объясняет, что на дискетах этой игры нет и не будет. Покупатель угрожает скандалом, мотивируя отсутствием оптического привода и постулатом «клиент всегда прав».
«Хорошо, — сдаётся продавец, — несите 740 дискет и будет вам игра».
Когда я был молод и горяч, довелось мне поработать админом-эникейщиком.
Рабочий день в разгаре, я беру очередной уровень в «линейке». По законам жанра в кабинет заходит начальник — подполковник в отставке — и застаёт меня за этим недостойным занятием.
— Ты не опух ли на работе в игрушки играть? — Вроде всё работает, проблем нет, чем ещё заниматься? — Работать!
Вроде и не поспоришь, но меня вдруг пробирает:
— Знаете ли вы, за что платили врачам в древнем Китае?
Босс безмолвствует.
— За здоровых пациентов. В конце месяца каждый больной уменьшал жалованье доктора.
Я думал, что увольнение неизбежно, но в итоге получил солидную прибавку к окладу и внеплановый апгрейд рабочей машины.
Несколько лет назад я сильно болел известной MMORPG Lineage 2 и узнал, что существует и активно развивается open source-проект по эмуляции серверной части этой игры. Поскольку сервер был написан на Яве, которая в то время была моим любимым хобби, я не мог пройти мимо.
Скачал исходники, собрал, помучался с подключением клиента — ура, запустилось! Настало время почувствовать себя админом и гейм-мастером в одном лице. Было чертовски интересно, как в эмуляторе реализован процесс осады замка, и я решил на правах главного захватить его самостоятельно.
Прошу сервер сделать моего персонажа бессмертным и включаю режим осады. На стенах замка и перед главными воротами появляются охранники замка, с нетерпением ждущие врага.
Подбегаю и сразу же попадаю под перекрестный огонь лучников и магов. Мне-то всё равно, я бессмертный — убиваю охрану, ломаю ворота и врываюсь во внутренний двор замка. Набегает толпа мечников, по мере необходимости я их раскидываю, но на большую часть просто не обращаю внимания.
Через полминуты замечаю, что охрана явно делает что-то не так. Меня уже не пытаются убить, хотя сражение вокруг кипит. Стражников столько, что компьютер уже сильно тормозит. Внезано большая часть участников битвы умирает от особо мощного массового заклинания, благодаря чему я наконец-то получаю шанс оглядеться.
Оказалось, что ИИ охраны замка не запрещал атаковать своих союзников. Маги, пытались выдворить меня из замка, задели своей «ковровой бомбардировкой» толпу мечников. Умный ИИ знал твёрдо: кто бьёт моего друга — тот мой враг, и ему надо дать в глаз! Соблюдая этот закон, кто-то из охраны надавал по шапке атакующим меня магам, за тех вступились друзья — и понеслось.
Года два назад старшая сестра (на тот момент в компьютерах полный ноль) сидела за моей машиной, играя в какую-то казуально-офисную игрушку.
Надо сказать, у игрушки этой кнопка «выход» в меню называлась как-то крайне неочевидно. Сестра через полчаса задалась закономерным вопросом — как же выключить игру?
Ответить я ей не успел, так как на помощь подоспел трёхлетний племянник. С криком «Мама! Ты что такая тугая?» он большим и указательным пальцами одной руки дотянулся до клавиш Alt и F4.
Играю вечером в Counter-Strike. Внезапно вырубается свет; я на ощупь отыскиваю в недрах стола фонарик и выхожу на лестничную клетку.
Оказывается, у соседа заискрила люстра. Он позвал приятеля-«электрика», который без лишних раздумий вырубил свет на на этаже. Пока остальные соседи приходили в себя и искали свечки, фонари и мобильники, он успел заметить пучок оранжевых проводов, каких он раньше нигде не видел, и тотчас же сообщил другу, что его прослушивают. Сосед, конечно, дал добро на перекусывание проводов. Пока я, чертыхаясь, выходил из квартиры, горе-мастер успел помимо электричества лишить интернета меня и друга, живущего на этаж ниже.
Никогда ещё не встречал таких самоуверенных людей — только после прямых угроз сосед наконец понял, что никто его не прослушивает. Нам он предложил денег, для решения проблем с люстрой вызвал мастера из ЖЭКа, а «электрика» отправил домой.
Витуху мы с другом зачистили и скрутили. Как ни странно, акт вандализма и наши ремонтные работы не повлияли на качество связи — пинги в Counter-Strike этим вечером были отменные!
Работаю менеджером по продаже компьютерной техники. Покупатели попадались мне разные, но одного я запомнил на всю жизнь.
В ноябре прошлого года приезжает семья покупать компьютер для учебы и игрушек сыну лет 17–19. Железо тогда было дешёвое, так что собираем парнишке настоящую зверь-машину. Сын задаёт естественный вопрос: «А что можете из игрушек посоветовать?» Добавляю в заказ свежую «бродилку-стрелялку», семья рассчитывается и уезжает довольная.
Наступил декабрь, а значит, резко повысился поток покупателей. С одной стороны набегают частные лица, берущие железо в подарок себе и друзьям, с другой — представители организаций, стремящиеся купить нужную оргтехнику в уходящем календарном году. К 20 числу наступает полный аврал — на вопросы о характеристиках товара отвечаешь молниеносно, в одной руке факс с заявкой, в другой телефон. В кресле перед тобой покупатель, который терпеливо ждёт, а за ним ещё минимум трое в очереди.
Среди этой жути я вижу того самого парнишку. Скорее всего, в давке и суматохе он простоял не меньше трёх часов, и наконец добрался до моего кресла. И вот она, заветная минута, — выдыхаю, обращаю взор на него и слышу:
— Мне очень понравилась игра, которую вы мне продали. Посоветуете ещё что-нибудь?
Не поверите, я секунд десять просидел с открытым ртом в поисках нужных слов. В итоге не нашёл ничего лучше, чем распечатать список лучших игр 2008 года по версии одного из сайтов и вручить этот лист парню.
Родной, если ты это читаешь, знай, как я тебе завидовал — новенький комп, список лучших игр и огромная куча свободного времени. Приходи еще!
В университете в качестве курсовой работы по программированию мы небольшой группой писали игрушку — двумерную платформер-стрелялку.
Все было здорово, пока мы не стали учить героя пользоваться ружьём. Планировался хитрый расчёт траектории пули, но привязать её начало к кончику дула никак не получалось. На время мы убрали объект героя и сделали так, что пуля начинает свой полет с земли, а ее прорисовка начинается лишь от положения дула. Реализовали — всё замечательно, «невидимка» перемещается по экрану, а вылетающие из пустоты пули исправно поражают врагов.
Принялись за объект героя, написали ему систему поражений и прикрутили обратно. Тут началось странное — при попытке атаковать первого же врага главный герой погибал.
В чём дело? Условия смерти героя мы описали верно, разве что кровь ещё не нарисовали. В игре используется всего один объект «пуля». Бились над проблемой долго и безрезультатно.
Наконец меня осенило. Герой оказался самоубийцей! При выстреле пуля начинала полет с земли, догоняла героя и смертельно поражала его в пятую точку.
Проблему решили, написав новый объект «пуля_героя», для которой сам герой был неуязвим. Товарищи, никогда не забывайте про кровь — по крайней мере на время разработки!