Глава 3.3

Заставить каждого пришельца появиться в нужном месте и в нужное время, следуя правильному шаблону движения — это тяжелая работа, особенно на первом этапе, когда у меня не было предыдущих экземпляров чужих, от которых можно было оттолкнуться. Как я упоминал ранее, у меня было зачаточное представление о том, с какой стороны к этому подойти, спасибо моей прямоугольной раскадровке, но сейчас я должен снять это с бумаги и перенести на экран, что можно было сделать только одним способом: продолжать попытки, пока все не будет смотреться правильно. Возьмем для примера Кокон (чужой, в которого вы стреляете чтобы получить Улучшение) с типичной последовательностью спрайтов. Его можно увидеть, как входящего с правой стороны экрана, летящего вниз и приземляющегося на кусочке фона, делающего несколько шагов вперед, ожидающего, потом запускающего двигатели взлета и улетающего за пределы экрана влево. Определив правильное время, чтобы вызвать появление этого конкретного Кокона (сравнивая раскадровки прямоугольников) я разбил шаблон полета на маленькие последовательности: лети направо, иди налево, жди, улетай, лети направо, а затем собрал все вместе, так что:

а) это выглядело настолько гладко, насколько я мог сделать это с учетом ограниченного разрешения экрана Спектрума и

б) это выглядело настолько близко к оригиналу аркадного автомата, насколько я мог это приблизить.

Оригинальная графика Марка для ST: главный корабль и Круговое Оружие


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

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

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

Несмотря на медленное начало и то, что первый уровень потребовал нескольких недель разработки для правильной сборки, так как я решил, что хочу получить почти собранный, готовый к запуску первый уровень перед началом работы над другими. Это немного рискованно делать, поскольку в это время люди постоянно с вас спрашивают: "не закончили ли вы еще первый уровень" и "я надеюсь, что оставшаяся часть игры не займет так много времени" также, как и повод для многих людей нервничать по поводу ваших способностей, но все это означает, что у меня уже есть большинство составляющих ядро подпрограмм и работающая библиотека готовых к использованию чужих для применения в остальных уровнях: все это у меня уже в "кармане".

* * *

В конце первого уровня появляется Финальный Босс, по образу явно вдохновленному биомеханическим существом Х.Р. Гигера (H.R. Giger), с большим хлыстообразным хвостом, и если игра R-Type и ассоциируется с чем-то, так именно с этим. Появляющийся на обложке коробки, на рекламных буклетах, в страничном рекламном объявлении журнала и как снимок экрана для примера почти во всех обзорах игры, этот показательный чужой стал стандартной витриной игры. Добкератопс (Dobkeratops) (чтобы дать ему подходящее имя) обычно та самая вещь, которую большинство игроков ожидают увидеть, играя в любые виды или конверсии R-Type игр, так что появление его на Спектруме вызвало бы взрыв интереса. Что касается меня, пишущего эту игру, это был один из забавно выглядящих чудищ.

Лист прозрачной бумаги с аккуратными квадратами, напечатанными сверху был использован последний раз здесь: так мне удалось перенести кнутовой хвост в игру. Просматривая все это сейчас, я отмечу, что это довольно плохая копия, чем в аркадной версии, которая более плавная и синусоидальная по своему характеру, тогда как моя кажется более неестественной и дерганной, но так как мне приходилось все перемещать через восемь пикселей (с шагом знакоместа) то это было неизбежно. На этот раз прикрепляя лентой прозрачную бумагу к экрану ТВ через каждый шаг всего видео и отмечая какие квадраты содержали часть хвоста, а какие части хвоста действительно работали (перемещались), то с небольшой настройкой я довольно хорошо управился, получив движение целого хвоста используя всего лишь шестнадцать кадров анимации.

Финальный Босс 1. Аркадная версия.


Финальный Босс 1. Версия для Спектрума. Все выглядит немного больше, но разрешение в пикселях намного меньше по сравнению с аркадной версией.


Это была приблизительно середина мая 1989 года и первый уровень был практически готов вместе с кораблем игрока, оружием, обнаружением столкновений и несколькими эффектами взрывов, так что я решил начать работу над вторым уровнем. Я работал над игрой около двух с половиной месяцев и знал, что уже могу справиться со всем остальным, я еще не знал, как бы я это сделал, но это был психологический толчок для новой работы, говорящий: "Да ты разберешься с этим, когда коснешься этого, не волнуйся", и я не волновался. Если вы не будете старательны, то можете потратить больше времени, переживая о том, способны ли вы сделать что-то, чем пытаясь и пробуя что-то сделать для этого, то что, к несчастью, случалось с другими программистами, когда они забрасывали наполовину завершенные программы: неуверенность затмевала все остальное.

* * *

Я думал, что работа будет идти так же, как и раньше, но через несколько дней после того, как я начал уровень 2, мне позвонил Карл Джеффри (Karl Jeffrey) и все изменилось. Я уверен, что Карл сделал часть графики Rampage для меня, когда при завершении Марк не был доступен, но я мог ошибаться, потому что, если честно, я не помню, когда первый раз встретил его, боюсь, вы должны отнести это к моей забывчивости. Карл сделал мне предложение: он кодировал версию Atari ST в его офисе в Фархеме (Fareham) в Хэмпшире (Hampshire), у него уже был Дэйв Джоллифф (Dave Jolliff), который вместе с ним кодировал версию для C64. Он интересовался, не представится ли мне возможность посетить Фархем для работы бок о бок с ними двумя для создания своей версии? Карл подбросил несколько пряников, во-первых, у него стоял в офисе аркадный автомат с игрой R-Type, так что вместо того, чтобы прищуриваться на видеокопию, я смогу играть на оригинале, когда бы захотел, получая все из первых рук. Во-вторых, Марк Джонс (Mark Jones) жил неподалеку от Фархема, так что я бы мог лицом к лицу разговаривать с ним о графике и других проблемах, решаемых вместе с ним вместо ожидания приходы почты через несколько дней, и он также мог поехать с ними, когда они были готовы. Activision по прежнему базировалась в Саутгемптоне, что было около пятнадцати миль (9 км.) от Фархема. Это было дополнительным стимулом, что подразумевало о начале получения каких-то отзывов от них, о том, нравилось ли им, как идет ход разработки над игрой (или нет). Последней каплей было то, что Суонси, в котором базировалась Catalyst, был также неподалеку, что не было реальным плюсом, но это означало, что я могу покинуть Уэльс и иметь дело с Кайтли всякий раз, когда он захотел бы вмешаться.

В общем, это было немного необдуманное решение. Несколькими днями позже я упаковал немного чистой одежды, мой Спектрум и Амстрад (Amstrad) со всей документацией и сел на поезд до Фархема.

* * *

Сегодня Climax Group — это крупный независимый издатель, успешно производящий программное обеспечение для современных игровых консолей, для таких хорошо известных компаний как Microsoft и Konami, работающий под управлением CEO (главного исполнительного директора) Карла Джеффра, но тогда, в 1988 году, компания называлась Images Software (какая знакомая по играм для Спектрума) и все было совсем по-другому.

Отец Карла владел магазином по продаже кухонной гарнитуры в конце главной улицы Фархема, а Карл использовал верхнюю часть здания как офис для Images. Входя через тяжелую дверь, расположенную сбоку здания и поднимаясь выше по лестнице, вы попадали в приемную, перемещаясь далее, оказывались в небольшой комнате для конференций, оттуда — в большую открытую зону, где и обосновались программисты. Отсюда вы сможете спуститься по коридору в заднюю часть здания, проходя туалет, кухню, большую комнату, наполненную хламом и коробками, в которые никто не осмеливался заходить из страха там заблудиться, достигнув, наконец, задней части здания со спальными помещениями.

Карл предусмотрел проживание в офисе для всех троих, пока мы не закончим игру. Заполнив комнату на заднем дворе койками и несколькими шкафами, мы оборудовали наше собственное школьное общежитие. Эта комната на заднем дворе оказалась самым спокойным местом во всем здании, вдали от движения машин и солнечной стороны — это была классная зона отдыха, которую я часто использовал, когда испытывал небольшой стресс или мне нужно было оторваться от клавиатуры, чтобы подумать. Когда время подходило ко сну, то в большинстве случаев я был единственным, кто это делал, не имея другого выбора (ну хоть здесь не пришлось автору книги ночевать в уютных спальных мешках на полу). Карл обычно вечерами уходил, чтобы провести время дома с родителями, а Дейв мог применять свой странный метод сна в офисе на стуле: стоя на коленях и положив голову на сиденье стула, что выглядело ужасно некомфортно, но кажется, хорошо для него работало.

* * *

Так мы и поживали вместе: Карл, Дейв и я, развернув наши системы разработки в комнате над магазином кухонной утвари в Фархеме и работая над игрой, о которой слышали очень немногие люди. С Дейвом работал его друг\подмастерье Джим Смарт (Jim Smart), они вдвоем сделали одну из ранних версий Time Scanner для C64, которая так и не вышла в свет, а также оригинальную фантастическую игру наподобие Ikari Warriors, которую они отшлифовывали, надеясь, что дело дойдет до продаж. Карл занимался кодированием версии для Atari ST с небольшой помощью одного из самых приятных парней в мире Роба Хайлендса (Rob Hylands) (к которому я вернусь позднее, с более детальным описанием) и вопросами ведения бизнеса Images одновременно.

Конечно, первым наиболее значимым делом, которым я занялся по прибытии — это узнал, насколько хороши мои дела относительно двух других версий и с удовольствием узнал, что я был далеко впереди. ST была в то время относительно новой машиной, поэтому я думаю, что Карл еще немного не достиг своего пика обучения, но, несмотря на всю эту шестнадцатибитную мощь, он все еще не нашел способы, чтобы обойти аппаратные ограничения, будучи, как и мы, "восьмибитником", он прекрасно знал, что то, что хотел сделать, может быть сделано, он просто должен был сесть и написать это.

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

Дейв и C64, казалось, занимались взломом, вся фоновая графика для 1 уровня была на месте и у него уже был корабль, летающий по экрану, несколько чужих, но при всем сделанном он споткнулся о серьезное препятствие: подпрограмма спрайтового вывода, которую он использовал, была неспособна справится с таким большим количеством спрайтов, необходимых для игры. C64 может отображать только восемь аппаратных спрайтов в кадре, если только вы не реализуете спрайтовый переключатель для "переиспользования" этих спрайтов снова в этом же кадре, но это очень замысловатый и критический ко времени способ для кодирования, тем более, когда вы хотите намного больше спрайтов на экране в любом одном кадре дисплея. Если что-то пойдет не так, то спрайты не просто будут мерцать, они просто исчезнут совсем. В итоге перед тем, как он смог сделать хоть что-нибудь, Дейв должен был полностью переписать свой переключатель, и, что еще более важно, показать Activision этот новый спрайтовый движок, способный справится со всем, что встретится в игре.

Мы знали, что Activision были готовы согласиться на некоторые различия между версиями аркадного автомата и домашнего компьютера (было уточнено, что они примут ЛЮБУЮ несущую хотя бы половину возможностей версии R-Type, лишь бы она появилась на Спектруме), но большие надежды возлагались на версию для C64. Вопрос стоял лишь в том, сколько спрайтов в одном кадре Дейв может реализовать, получив игру, которая могла бы удовлетворить Activision?

* * *

Вскоре жизнь в Фархеме вошла в свое обычное русло. С понедельника по пятницу распорядок дня обычно подразумевал подъем около 9 утра, легкий завтрак с чашкой чая и несколькими тостами, и началом кодирования. Это продолжалось где-то до 11 или 12 вечера со случайным перерывом на час, на рабочем месте или где-то прогуливаясь по городу, чтобы подумать или немного поесть, или просто подышать свежим воздухом перед сном, подготавливаясь к следующему дню. Суббота обычно проходила так же, но мне удавалось добираться до Лондона на поезде, возвращаясь, как и в этот день, так и на следующий. Так как я не водил машину, то прочно застрял в Фархеме на все это время, поэтому любой способ покинуть это место на несколько часов был за счастье.

В воскресенье вы могли бы меня застать одного в офисе, когда Карл дома, а Дейв проводит время в Суонси. В целом я относится к этому легко: с воскресными газетами, поездкой в один из немногих открытых магазинов, Мак Дональд с воскресным ужином из курицы и чипсов.

Что офису не хватало, так это хороших «моющих» удобств, поэтому раз в неделю ранним утром я посещал Центр Досуга по картам якобы для купания в бассейне, но в реальности для приятного длительного обмывания в горячем душе с мылом и бутылочкой шампуня. Чистая одежда поставлялась благодаря удобной прачечной через дорогу от офиса.

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

Мы совершали случайные поездки в Суонси в офисы Catalyst или в Саутгемптон посмотреть Activision, когда нам было что показать им, но большую часть времени оставались в одиночку для решения своих собственных дел. В наши дни игра будет отслеживаться проектным менеджером до последней минуты и может быть Уэйнрайт и снял бы с нас семь шкур, но за нашими спинами никого не было, здесь не было километровых указателей или крайних сроков, которых нужно было придерживаться, изначально игра должна была выйти в ноябре для Рождественского рынка, а все должно быть готово к октябрю.

* * *

По сравнению с первым уровнем, второй уровень был очень простой для кодирования, но получение больших змей, которые появляются в конце уровня, движущихся по плавной кривой, потребовал немного работы, особенно с низким разрешением движения. Всего на этом уровне пять различных шаблонов движения, но поскольку большинство людей знают трюк, чтобы пройти уровень быстро, я проделал большую работу позднее, но ее так никто и не увидел (к сожалению, непонятно почему). Ну ладно. Уровень 2 был, я думаю, лучшей работой Марка в целой игре: от большой стеклянной куполообразной фоновой графики, до моих самых любимых спрайтов чужих "Мозги в футляре", завершая гигантским босом в конце уровня, которого фанаты R-Type будут называть Гомандер (Gomander), но мы его называли просто гигантский моллюск.

Графика Марка для ST: гигантский моллюск, финальный босс второго уровня


Как ни странно, но у нас была вся необходимая документация от IREM, доступная в виде большого укомплектованного руководства с именами, графикой и информацией об игре, но нам так и не довелось его увидеть. Activision решила "помочь" нам, отправив его на перевод, так как оно, конечно, было написано на японском и, хотя мы и просили копию, но она так и не появилась. Верхом идиотизма стало сообщение, которое мы получили, когда версии были практически готовы к выпуску, в котором спрашивалось, не хотим ли мы еще увидеть это руководство!?

Я должен отметить, что IREM всегда очень хорошо снабжала вспомогательными материалами и документацией разработчиков: в более поздних игровых проектах я видел распечатанный на бумаге полный код для аркадного автомата, включая постраничные служебные цифровые данные, где находилась графика. Для одного проекта мы получили цветные распечатки всех спрайтов, используемых в игре со всеми для них кадрами анимации. Но во время кодирования R-Type нашим основным источником информации был аркадный автомат, который стоял в углу и к которому, к счастью, имелось руководство, благодаря чему мы узнали какие позиционные микропереключатели на панели управления включают бесплатную игру, неуязвимость, сложность и т. д.

Если кто-то из нас хотел проверить следующие за первым уровни, то мы должны были начать игру в режиме неуязвимости, а затем подождать, пока все не дойдет до нужной точки, но все это происходило со скоростью улитки. Поскольку нам часто нужно было менять значения микропереключателей во время запущенной игры, что предполагало пытаться, склонившись над платой под напряжением, двигать крошечные переключатели высокотехнологичным изолирующим устройством — обратной стороной пластиковой ручки! Мы должны были делать это, чтобы достигнуть босса первого уровня, и так как в режиме неуязвимости он будет просто сидеть и извергать чужих, приходилось ждать пока через некоторое время экран не начал прокручиваться, оставив корабль в черной пустоте и, наконец, после того, как какой-то внутренний счетчик был прокручен полностью, начинался второй уровень. Один из микропереключателей отвечал за режим паузы, поэтому кто-то из нас, работая над каким-то специальным уровнем, мог простоять там при желании целый день, добиваясь полного сходства с оригиналом, не только для графических и спрайтовых подпрограмм, которые мы пытались скопировать, но и как можно близкого сходства с игровым процессом, а единственный способ добиться этого — это играть снова и снова.

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

* * *

Мы все были недалеко от Фархэма, когда Карл получил сообщение из Activision: "Могли бы вы все прийти в офис, Род хочет сказать вам привет", что всех нас очень заинтересовало. "Дядя" Род Казенс (Rod Cousens) был тогда главой Activision UK (Великобритании) и не вовлекался в разговоры с кодерами лицом к лицу, этим занимались продюсеры (исполнительный директор по производству), так что мы все пытались определить, что этот "привет" реально означал. Поскольку наша ежемесячная зарплата от Catalyst немного задержалась, поступив недавно, я придерживался мнения, что речь идет о какой-то Золотой Поощрительной премии, какой-то денежный подсластитель для поддержки нас в бодром духе. Так в один жаркий солнечный день мы упаковались в красный с открытым верхом спортивный автомобиль "притягательную малышку" Карла и с большими надеждами поехали в Activision, оглушая все громким звуком автомобильных динамиков под музыку Yello.

Как я упоминал ранее, Activision UK в то время базировалась на верхнем этаже офисного блока в довольно спокойном районе Саутгемптона и пока вы еще не знали это место, вы бы никогда не нашли его: небольшая табличка над домофоном была единственным опознавательным знаком. Сами офисы были расположены довольно хаотично, в основном одно большое прямоугольное пространство с максимально удручающим видом из окон: несколько дверей и перекошенная черепичная крыша. Двери лифта открывались в небольшую приемную с офисом Рода, расположенным за столом и небольшой запертой комнатой в углу, хранящей сокровища: фирменные футболки, жакеты, рекламные буклеты, раздаточные материалы и бесплатные игры (ни одному из нас не было позволено даже прикоснуться к этому). Помимо всего, была главная область для офисов, которая была длинной прямоугольной комнатой с приёмной, расположенной посередине слева. Выше и ниже, проходя вдоль стен, было небольшое количество стекла. Спереди актовый зал/офисы, по правой стороне окна без вида. По направлению к верхушке прямоугольника был ряд серых кабинетов, почти полностью, как стальная стена, отрезая часть офиса, которая имела свою необычную цель.

Тогда все искали программистов. Возможно, если бы я пошел работать напрямую в Activision, дела бы пошли намного лучше, чем были.


Большая часть офисного пространства состояла из кабинок: отгороженные индивидуальные рабочие места, в которых поселился персонал Activision и различные кодеры, иногда пребывающие вместе. Было очень распространенной практикой, что Activision позволяла себе полный контроль как над материалом, так и над производством игры при приближении ее к стадии выпуска (что можно сравнить с удержанием кодеров в качестве заложников, пока они не выпустят игры). Любой при необходимости или после ночной смены мог воспользоваться "спальной зоной", которой служил пол за этими серыми кабинетами. Знающие приносили с собой спальные мешки, чтобы уменьшить болевые ощущения от сна на твердом полу, все быстро научились следить за своими головами помещая их под один из столов для усиления эффекта шумоподавления. Было самым обычным делом видеть валяющееся тело или два, пытающихся уснуть днем среди шума переполненного издательского дома!

Когда мы в один прекрасный день прибыли в офис, он жил в обычном для себя хаосе, и мы были сейчас реально встревожены назначением этого "привета" и после нескольких минут ожидания Род вышел к нам из офиса и поговорил с нами. Он сказал "привет" и что же из этого следовало? После нескольких минут отвлеченного разговора он ушел по другому вопросу, а мы втроем думали, почему он не мог взять телефон и просто позвонить нам. Сказать, что оставшаяся часть дня была сильным разочарованием, пожалуй, было бы преуменьшением.

* * *

Примерно в это время нам троим доставили настоящую систему разработки на базе PC из Catalyst. Каждый из нас получил графическую станцию Opus 80286 PC с монохромным монитором под управлением DOS и профессиональный кросс-пакет разработки.

Практической стороной разработки на PC было управление по PDS (Programmer's Development System) (Система разработки программиста) плате, которая в реальности была просто I/O (ввод/вывод) картой, подключаемой к целевой машине (на то время Spectrum, Amstrad или C64) через простой интерфейс. На целевой машине вы должны были загрузить небольшой кусок кода, который будет находиться там, опрашивая линии связи и ожидая сигнала, поставляемым специальным ассемблером, работающим на PC. При ассемблировании на PC используется команда ОТПРАВИТЬ, передающая объектный код на целевую машину и через секунду это будет сделано и запущено на выполнение. Код для загрузки в целевую машину поставлялся в трех версиях: "тупой", "умный" и "управляемый прерываниями", причем последний позволяет при прерывании на PC использовать программу Монитор, управлять дальнейшими действиями и даже менять код на целевой машине во время работы игры, что на практике не так часто использовалось, если вы используете код, критичный ко времени, но была хорошая линейка функций трассировки (отслеживание состояния ячеек памяти и регистров микропроцессора).


(Небольшое отступление)


Никто не покупал расширение Multiface 1 от Romantic Robot ради интерфейса джойстика, и я догадываюсь, что лишь немногие — ради внутренних 8K, с которым он поставлялся. Нет, он обычно покупался ради одной уникальной возможности: "100 % надежность при сохранении всего что угодно, в любое время и в любой тип периферии", как обещала реклама, которая конечно переводила, как сохранение любой игры для кого-то еще. Подключаем Multiface 1 к вашему Спектруму, загружаем игру, нажимаем красную кнопку, вставляем пустую кассету в магнитофон и через минуту у вас есть копия, готовая к распространению для школьных приятелей на следующий день. Он сохраняла "оттиск" всего: значения регистров Z80, системные переменные, главный экран дисплея, и все остальное и он даже поставлялся с выключателем, что делало его аппаратную часть полностью невидимым для всего. Никто даже не пытался сделать, но если бы вы попробовали использовать какую-то проверку на наличие этого устройства в системе типа: ЕСЛИ Multiface 1 найден ТО сбросить машину, то вы должны были бы запускать это в каждой отдельной части своего кода и проверять, чтобы он не был вырезан определенным хакером. В итоге вы получали программу на кассете, которая после загрузки возвращала компьютер назад в ТОЧНО то же состояние, когда нажимали красную кнопку и вы не могли с этим ничего поделать. Но один человек смог. Единственная игра, которую я видел, смогла "побить" Multiface 1 и была написана одним из самых удивительных программистов, с которыми я встречался, а также наиприятнейшим человеком в округе: Робом Хайлендсом (Rob Hylands).

Как я уже упоминал ранее, Роб помогал Карлу с ST версией во время перерывов в его ежедневной работе, проходившей в музее подводных лодок в Госпорте (Gosport). Роб впервые встретился с Карлом, когда он набирал кодеров по объявлению и этот высокий улыбающийся человек помесь Шегги (Shaggy) из Скуби-Ду (Scooby Doo) и Тедди Боя (Teddy Boy) с сильным южно-английским акцентом зашел в дверь. Роб был примером того, как внешность была обманчива: по лицу он был похож на парня, который продает лимонный щербет в старомодном кондитерском магазине, ну он просто такой… любезный. Но я не думаю, что когда-либо встречал кого-то, столь же естественного и одаренного, как Роб. Когда дело касалась написания кода, то в нем сочетались способность думать, обходя острые углы и способность находить методы решения задач, о которых еще никто не знал.

У Роба было острое чувство юмора, временами отражающее меня самого, поэтому мы очень хорошо ладили друг с другом и нам не мешало, что мы были тезками примерно одного возраста. В то время, когда большинство разработчиков игр были подростками или чуть старше, я приближался к 30-летию. И было приятно поговорить с кем-то, кто знал названия групп из 60-х и 70-х. Роб умел видеть проблемы насквозь, придумывая решения, казалось, без всяких усилий. Мы разговаривали о написанной им демоверсии, в которой несколько больших шаров двигались по экрану. Шары взаимодействовали идеально, отскакивая друг от друга с точностью до пикселя. Я предположил, что он использует сложную алгебраическую математику для обнаружения столкновений, помните, это было в эпоху, когда все проходило по ровным линиям и прямоугольникам, но решение было намного проще и интуитивно понятным, он объяснил, что все, что вам нужно сделать — это провести воображаемую линию между серединами двух шаров, и если длина линии равна диаметру шара, то это означает, что они столкнулись. Очевидно, по крайней мере, для него.

Он мне рассказывал аналогичную историю об его способе победить Multiface 1. Это было настолько очевидно, но настолько же непрактично, что вы бы даже не удосужились об этом подумать на секунду при появлении этой мысли, но Роб смог, у него были способности и оголенный нерв. Роб включил свою систему защиты только для одной игры, написанной им — Super Wonder Boy (in Monsterland), мультизагрузочной версии игры, являющейся продолжением от SEGA 1986 года Wonder Boy выпущенной Activision в 1989 году.

Чтобы узнать, работает ли метод до сих пор, я недавно одолжил копию игры для запуска на PC эмуляторе, установил на присутствие Multiface 1, загрузил игру и нажал кнопку, чтобы вызвать Multiface. Больше ничего не делая, я вышел из Multiface и вернулся обратно в игру, тогда так же, как и в случае с кассетным оригиналом 1989 года, игра распалась сама на части за несколько секунд, а затем зависла. Гениальность метода Роба заключалась в том, что даже если бы я сохранил игру на кассету, она уже была бы испорчена и загрузка привела бы к начальному состоянию, совершенно непригодному, чтобы поиграть. Я не думаю, что многие люди даже знают об этой защите в игре, поскольку ее мультизагрузочный характер означал, что это не совсем та игра, которую вы могли бы легко скопировать с помощью Multiface 1. Мне нравится думать, что Роб вставил это туда только потому, что мог, и я знаю, что если бы он использовал ее в игре с однократной загрузкой, то это вызвало бы много головной боли у случайных пиратов того времени. Нет, я не собираюсь рассказывать вам о сущности метода, так как вы ничего не знаете о программировании на Z80 для Спектрума и для вас это будет пустой звук, а если знаете, то подумайте об этой головоломке, чтобы попытаться решить ее самим.

Роб справедливо занялся более крупными и лучшими проектами в индустрии программного обеспечения, но, на мое счастье, он был там, продолжая играть важную роль в разработке версии R-Type для Спектрума и привнеся неоценимый вклад в игру, что было за пределами моих возможностей в то время.

-

Большинство кодеров создавали свои собственные реализации загрузчика, основанного на "окаменевшей" версии (из ПЗУ). Плюсом было то, что вы могли отправить код куда угодно на целевой машине, что в случае со Спектрумом означало использование области памяти Basic'а без боязни повредить загрузчик. Я думал, что должен был поместить код загрузчика в экранную область ОЗУ, таким образом я мог использовать память для игры до последнего байта.

Система PDS изначально была разработана Эндрю Глейстером (Andrew Glaister), Джезом Саном (Argonaut's Jez San) и Фуадом Катаном (Fouad (Foo) Katan) из Bits, чтобы помочь создать игру Skyline Attack, но в итоге стала самостоятельным продуктом компании P.D. Systems Ltd. Обычная стоимость PDS системы была £500, а стоимость PC была £1200, поэтому Уэйнрайт определенно потратил серьезные деньги на нас, что, вероятно, было еще одним фактором, почему выплата нам зарплаты затягивалась в каждом проходящем месяце.

Загрузка...