Уверен, в предсталении не нуждается. Каждый, кто играет в любых потомков этого жанра, от серии X от Egosoft до Elite Dangerous, знают родоначальника этого жанра, а, кто постарше, провели в ней огромное количество часов, пытаясь получить заветный ранг ELITE.
К сожалению, старые игры плохоиграбельны по современным стандартам, но опять же современные технологии способны решить даже эту проблему.
Современный AI способен разобрать старую игру по байтикам и собрать заново, на современных языках, для современных платформ. Конечно, с помощью человека, который знает, что ему надо, как это получить и как проверить результат.
Прошу, Elite для ZX Spectrum 48K, в браузере, 60 fps, отзывчивое управление, полностью рабочая, с пофикшенными багами 40-летней давности.
В свои 12-13 лет я с друзьями с удовольствием гонял на Спектруме в игры по фильмам «Рэмбо», «Чужие», «Бэтмэн».
Тогда мы не представляли себе, что это (разработка игр вообще) целая индустрия и бизнес. Диссонанса от того, что на Синклере были доступны сотни игр, а на БК пара десятков, почему-то не возникало. Я думал, что делали игрушки фанаты и производители компьютеров, как для советских ПК.
При чем тут деньги, если все можно скопировать с кассеты на кассету?
Тем временем, один только «Робокоп» для Commodore 64, ZX Spectrum, Apple II, Amstrad CPC, MSX и других платформ разошелся тиражом более 1 000 000 экземпляров (источник). А в Британии его признали лучшим релизом 1989 года для Спектрума.
Поговорим об успехах и провалах, порассуждаем о причинах бума разработки игр по мотивам кино, и вспомним хиты того времени.
После роста 1970-х прибыль от проката фильмов в начале 1980-х начала падать, в то время как бюджеты на производство, гонорары актеров и маркетинг заметно выросли.
Около 60% работников отрасли остались без работы. Были и перекосы в большую сторону. Например, у электриков 90%, а у костюмеров 75%.
За первые четыре месяца 1982 года количество фильмов в производстве сократилось на 33% по сравнению с 1981 годом.
Убытки студий были огромными. По словам Роберта Корта (в начале 1980-х годов работал вице-президентом по рекламе, а затем старшим вице-президентом по производству на киностудии 20th Century Fox), если не считать кассовый успех «Полицейского из Беверли-Хиллз», за шесть месяцев 1984 года студии потеряли около 160 миллионов долларов.
Отмечу, что в 1990-м игра Beverly Hills Cop вышла на Commodore 64, ZX Spectrum, BBC Micro, Amstrad CPC, Amiga, Atari ST и PC.
В этой ситуации компании активно искали новые источники дохода. Пока я собирал информацию для статьи, мне случайно попалась любопытная книга Фрэнка Хоффмана и Вильяма Бейли (Frank W. Hoffmann, William G. Bailey) «BookFashion & Merchandising Fad» 1994 года.
Собственно, интересовала только одна глава - «Лицензирование известных медиаперсонажей». В ней есть такие данные:
Индустрия лицензирования к 1983 году превратилась в гигантский рынок объемом 20,6 миллиардов долларов в год (по сравнению с 6,6 миллиарда в 1978 году). И видеоигры стали его важнейшей частью.
Студии поняли, что могут не просто продавать билеты, а монетизировать интерес к фильму с помощью товаров. Например, Джордж Лукас изначально представлял себе «Звездные войны» с товарными производными. Т.е. уже тогда делал больше, чем просто фильм.
Для киностудий лицензирование было почти беспроигрышным вариантом. Они получали гарантированный крупный аванс и роялти (обычно 7-10% от оптовой цены продукта) , почти ничем не рискуя. Вся ответственность за создание игр и ее коммерческий успех ложилась на издателя.
Например, к моменту выхода сиквела «Империя наносит ответный удар» бренд Star Wars принес компании 75 миллионов долларов лицензионных отчислений при розничных продажах на сумму 1,5 миллиарда долларов (5%).
Это был стабильный приток средств, независимый от кассовых сборов.
❯ Зачем издателям понадобился Голливуд?
Здесь я снова вернусь к одному из главных хитов Ocean - RoboCop.
Компания приобрела лицензию на еще не вышедший фильм неизвестного режиссера всего за 10 000 долларов (версии разнятся, в источнике указана еще одна сумма - 2 000 долларов).
Кроме того, что игра разошлась по всему миру тиражом около миллиона копий, она стала одной из самых продаваемых игр для домашних компьютеров десятилетия (есть альтернативные данные, что Ghostbusters сделала два миллиона продаж).
В британских чартах RoboCop продержался рекордные 36 недель.
Да, издатели платили авансы и роялти. А взамен получали гарантированное внимание. Игра по мотивам нового блокбастера давала мгновенную узнаваемость и огромную аудиторию.
Здесь тоже есть нюанс: некоторые издатели для экономии выкупали только часть «фирмы»: логотип, название, образы героев. Поэтому в некоторых играх не было, например, оригинальной музыки из фильма.
За права на использование названий, героев и музыки хитов разворачивалась настоящая война. И как раз здесь кроется причина многих провалов.
Гонка за лицензиями на еще не вышедший фильм превращалась в бизнес-модель «успеть к премьере». Дата выхода известна. Сделки для покупки лицензий требовали времени. Сроки горели. Получив сценарий и фото, компании должны были немедленно приступать к делу, т.к. на разработку часто оставалось 2-3 месяца.
Программисты, как правило, узнавали обо всем последними, а студии зачастую не раскрывали деталей. Разработчики впахивали вслепую, придумывая свои адаптации сценариев к играм, сюжеты упрощались, а дедлайны были нереальными.
❯ Обратная сторона медали
Игра по фильму «Инопланетянин» (E.T. the Extra-Terrestrial, 1982). Переговоры о лицензии завершились к концу июля 1982 года, и у разработчика Говарда Скотта Уоршоу было всего шесть недель, чтобы создать игру для Atari 2600 к рождественским продажам.
В среднем на игру для Atari уходило как минимум 24 недели. Концепцию придумали за пару дней. Результат был плачевным: игра была полна багов, дизайн были убогим, и Atari, осознавая низкое качество продукта, даже приложила к картриджу специальное руководство с советами по игре.
В результате перепроизводство и возвраты привели к тому, что миллионы картриджей были захоронены на свалке под слоем бетона.
Перенасыщенный мусором рынок привел к краху индустрии видеоигр в США в 1983 году, после чего Голливуд на время сбавил обороты.
Другой пример. Оригинальная версия Total Recall для Spectrum так и не вышла к намеченному сроку (Рождество). Разработку игры с нуля поручили новой команде, которую они сделали всего за две недели. Оригинал, к сожалению, потерян.
Ghostbusters (1984). Columbia Pictures предложила Activision лицензию на игру с единственным условием: сделать как можно быстрее, пока ожидание премьеры находится на самом пике. Разработчики уложились в шесть недель. Интересно, что игра вышла до того, как фильм добрался до кинотеатров.
Порой и сами разработчики страдали от провальных фильмов. Например, Howard the Duck получила в основном, негативные отзывы, как и кино (номинировано на премию «Золотая малина» в семи категориях, выиграло в четырех).
Голливуд хотел независимого источника денег, разработчики и издатели - готовую аудиторию и узнаваемость. И те, и другие получили урок, который работает и сейчас: любовь зрителя к фильму и наличие лицензии не заменят качество и достаточное количество времени, необходимого на разработку.
Тем удивительнее, что в таких жестких условиях рождались настоящие шедевры той эпохи.
Часто игры покупали, только увидев обложку и знакомые образы. Кому не хочется попробовать себя в роли Бэтмэна или Рипли, и стать главным героем любимого фильма самому или на пару с другом?
Вспомним легендарные игры того времени?
Aliens (Software Studios, издатель Electric Dreams Software, 1987)
Рипли (игрок) управляет шестью персонажами с удаленного терминала, проводя их по комплексу из 255 комнат в поисках Королевы Чужих. У каждого персонажа есть камера на шлеме и оружие.
К сожалению, я так ее и не прошел. Она была страшноватой и сложной. Без инструкций нам оставалось только бродить по комнатам и расстреливать все, что уничтожается.
Здесь есть и датчики приближения, и растущая биомасса Чужих, откуда появляются «лицехваты», и смертельная кислота после расстрела вражин, которая не позволяет пройти через двери.
Сюжет приближен к фильму. Например, Чужой может захватить члена команды и будет охранять его, пока происходит процесс заражения «лицехватом». На это указывает изменение цвета индикатора биомонитора на желтый.
Можно отправить другого перса в ту же комнату. Если ему удастся убить стоящего на страже Чужого, пленник будет освобожден. Однако, если заражение завершено, вся связь этого члена экипажа с Рипли будет потеряна, а портрет изменится на морду Чужого.
Здесь даже есть Ньют. Насколько помню, когда вы ее видите, вы получаете дополнительные очки.
Игра стала динамичным игровым блокбастером, который позволял игроку «прожить» ключевые моменты фильма. Это была формула успеха, которая принесла Ocean миллионы и статус короля лицензионных игр той эпохи.
5 уровней. Лучше это увидеть в динамике.
Химический завод. Бэтмен охотится на Джокера. Можно использовать веревку для перемещения и бросать бэтаранги во врагов.
Марти Макфлай попадает в 1955 год и должен обеспечить встречу своих будущих родителей, чтобы не исчезнуть в будущем.
Персонаж перемещается между пятью локациями (главная улица города, школа, лаборатория Дока, танцзал, кафе). Нужно собрать пять вещей из фильма, чтобы влиять на поведение персонажей и в конце концов привести Джорджа и Лоррейн к танцу, где они должны поцеловаться.
Было бы неправильно не рассказать об этом:
Любовные стихи находятся в школе. Их нужно отдать Джорджу, чтобы он начал следовать за Лоррейн.
Чашка кофе находится в кафе. Ускоряет самого Марти и поможет временно оглушить хулигана Бифа.
Костюм пришельца находится в доме Дока Брауна. С его помощью Марти пугает Джорджа, чтобы он следовал за Лоррейн.
Гитара находится в танцевальном зале. Когда Джордж и Лоррейн оказываются рядом на танцполе, Марти играет на гитаре, они замирают, и уровень их любви начинает расти.
Скейтборд не влияет на персонажей, но позволяет Марти быстрее передвигаться и защищает его от ударов Бифа.
Количество оставшегося времени, за которое герои должны сблизиться, указывается при помощи исчезающей семейной фотографии в нижнем правом углу.
Первая часть показалась мне скучной. Видно, что делали ее в очень жесткие сроки. Но изучая описания и прохождения, я понимаю, что разработчики вложили в нее довольно много интересных фишек и механик.
У персонажей есть свои роли и линии поведения. Например, Лоррейн преследует Марти (в фильме она влюблена в него), Джордж избегает хулигана Бифа, а Биф нокаутирует Марти при столкновении.
Для Ocean Software разработка первой крупной лицензионной игрой и важнейшим шагом на пути к лидерству в этой нише. Эта игра прочно ассоциируется с Ocean и заложила основу для их будущих кино-адаптаций.
Я все еще помню музыку и шум вертолета…
Игрок управляет Рэмбо. Нужно найти пропавшее снаряжение, отыскать лагерь военнопленных, освободить их и добраться до точки эвакуации. Наверное, эта игра для меня даже лучше Commando, но не дотягивает до Ikari Warriors. Игра относительно короткая. Если хотите вспомнить молодость, запустите в эмуляторе. Не пожалеете.
Одна из самых неоднозначных киноадаптаций на Spectrum. Игра получила и восторженные рецензии от Sinclair User, и смешанные отзывы, и даже попала в немецкий список запрещенной для несовершеннолетних продукции. Но ее главная особенность даже не в этом. Ее сделали на основе другой игры.
Исходная игра изначально разрабатывалась компанией System 3 под названием Gung-Ho! еще до того, как кто-либо вообще услышал о «Хищнике».
Activision увидела раскадровку вскоре после приобретения лицензии на создание игры по фильму, и обратилась к System 3 с просьбой разработать ее.
Разработчик Тим Бест внес необходимые изменения в свой дизайн, а Хью Райли (Last Ninja) обеспечил превосходную графику.
В игре отряд уже уничтожен, т.к. разработчики решили упростить сценарий. Остальные ушли вперед, но их всех убил пришелец.
Штука весьма играбельная и атмосферная, в основном благодаря превосходным декорациям и убедительной прорисовке Арни (сходство поразительное).
Серия Renegade
Не могу не упомянуть про нее. До сих пор иногда запускаю в эмуляторе.
Есть даже мод, где врагов для режима одного игрока в два раза больше, а локации перерисованы (хуже, чем в оригинале, на мой взгляд).
Скриншот из мода игры (запускал в эмуляторе Unreal Speccy)
Ее не издавали специально к фильму, но сделана она по мотивам «The Warriors» (1979). Атмосфера очень похожа на то, что видишь в Renegade и Target: Renegade. Даже локации и враги, включая женскую банду, совпадают.
Оригинальная игра Ёсихисы Кисимото Nekketsu Kōha Kunio-kun (Technos Japan Corporation, 1986) появилась на автоматах Taito и круто отличалась от «коллег» по жанру. Она не была плоской. Передвигаться можно по вертикали и горизонтали, наносить удары ногой, кулаками, в прыжке, делать броски через спину и добивать врагов.
Конечно, были еще The Running Man (Grandslam Entertainments / Virgin Mastertronic, 1989) и Terminator 2: Judgment Day (Ocean Software, 1991) и многие другие.
Поделитесь в комментариях своими любимыми играми по мотивам кино. Я точно что-то забыл упомянуть.
Идея заняться этим возникла после участия в качестве члена жюри последнего Технотекста. Поначалу для меня было удивительно, зачем тратить столько времени на (казалось бы) странные вещи? Газоразрядная Хабралампа, радиотелескоп в сарае, разработка радиоуправляемой машинки с нуля.
А потом как понял…И сделал игру для дочки. Она несколько раз играла в Lode Runner в эмуляторе, и попросила меня сделать что‑нибудь для нее.
С 1987 года у меня перебывало много компьютеров: «Сура», «БК», «Спектрум», какие‑то древние приставки «Атари» и что‑то еще. ZX Spectrum мне нравился больше всего. Много игр, отличная графика, звук. Даже на бипере!
Его собрал для меня отец, когда мне было лет 11–12. Комплектация была суперской: TR‑DOS, ч/б монитор Корвет, корпус от «Суры» с прекрасной герконовой клавиатурой (это вам не «дубовая» «Дубна»!), два дисковода (тоже от «Суры», емкость дисков 640 КБ, насколько помню).
Естественно, я очень хотел делать игры, но литературу, кроме сборников «500 игр» и книжек по Бейсику, купить или достать было негде. Готовые движки и всякие Wham The Music Box и Laser Basic были уже тогда, но не было знаний, как с ними дружить.
Поэтому, кроме бейсиковских игроподелок с псевдо‑ или «проволочной» графикой, я ничего не успел сделать. Лет в 14 лет мой «Спектрум» сгорел, и мне пришлось пересаживаться на 286 с MS DOS. Я не хотел, честно.
Лет в 15 писал для PC игрушки на Microsoft Quick Basic (порт Defender of the Crown — я тогда не знал, что эта игра написана для персоналок еще в 80-е). У него были классные библиотеки для работы с графикой. Для спрайтов я использовал коды ассемблера. Позже на С++ создал что‑то типа Tapper и прочее очень простое.
Но все же игра появилась 30 лет спустя после того, как я что‑то делал на живом «Спектруме».
Пару недель я изучал движки, редакторы спрайтов и графики, музыкальные программы. О них есть на Хабре статья Михаила Судакова @mikhailsudakov (Яндекс.Музей).
Из всего, что попробовал, выбрал движок Dizzy SE Валерия Сурженко, графический редактор ZX‑Paintbrush и музыкальный редактор Vortex Tracker II Сергея Бульбы. На сайте автора последняя игра датируется 2020 годом.
Авторы DizzyAge (редактор карт в Dizzy SE): Alexandru Simion и Cristina Simion.
Авторы оригинальных игр и владельцы прав на вселенную Диззи: Oliver Twins и Codemasters.
Мне удалось связаться с автором. Прилагаю его историю целиком.
Обо мне. Сурженко Валерий Витальевич. В спектрумовских кругах известен как Hippiman. Живу в южном городе Ростове‑на‑Дону. Сейчас работаю Java‑программистом, занимаюсь разработкой высоконагруженных распределённых бэкенд‑приложений. Spectrum‑ом и программированием вообще заболел ещё в детстве, когда родители подарили мне на день рождения отечественный 48-килобайтный клон. Какой модели он был, к сожалению, не знаю, так как был он самостоятельно собран одним из знакомых отца.
Клон этот до наших дней не дожил, зато рабочей машинкой у меня сейчас выступает ZX Evolution rev.b. Зверь‑машина, для Baseconf которой мной было разработано несколько игр.
О Dizzy SE Что вообще такое Dizzy? Это неофициальный маскот ZX Spectrum в странах СНГ. Об огромной популярности этого персонажа можно судить по одному только количеству фанатских игр, выпущенных в 90-е — 2000-е. Было даже несколько попыток сделать редакторы для Dizzy‑игр.
Чтобы ответить на вопрос, зачем был сделан Dizzy SE, нужно копнуть немного в историю и в устройство игровых движков.
Разработка каждой новой игры про Dizzy под ZX Spectrum всегда таила в себе целый ряд сложностей. Исторически движки Dizzy оперировали в качестве игровых объектов таким понятием, как «спрайты». Это не то же самое, что спрайты в современном понимании этого слова. Это понятие ближе к современному термину «префаб». В смысле, это заранее описанный объект со всеми характеристиками и единожды заданной графикой. Этот подход хорош большой экономией памяти, ведь на карте располагаются просто координаты готовых объектов плюс пара параметров, вроде отзеркаливания. И плох тем, что нужно ещё до начала разработки игры чётко знать, какие объекты тебе понадобятся. Это всё‑таки старый 8-битный компьютер, а не современный движок.
Другая сложность — это логика. Всё взаимодействие с объектами, будь то диалог с Дензилом или набор воды в ведро, писалось на ассемблере точно так же, как и весь остальной код. Это позволяло вытворять с игрой что угодно — вплоть до переворачивания мира кверху ногами, как в Dizzy 3, но ассемблерный код есть ассемблерный код. Ну и третья сложность, самая главная: вся игра от и до писалась на ассемблере, а это влекло за собой обязательное глубокое понимание внутреннего устройства машины, умение работать с памятью, экраном и так далее. Там очень много нюансов. Соответственно, абы кто просто так не мог взять и написать свою игру про Dizzy. С другой стороны, есть открытый движок DizzyAge для создания игр под Windows. Он использует совершенно другой подход — современный. Вся игра разделяется на две части. Движок — единожды скомпилированный, который нельзя и не нужно изменять, и который берёт на себя всю низкоуровневую работу. И саму игру — графику, карты, скрипты и прочее. Для построения игрового мира DizzyAge использует систему «брашей». Это некая область тайловой карты с уникальными параметрами, то есть тут нет заранее подготовленных объектов. Если нам нужно использовать для какой‑то области карты половинку камня, а не целый, то мы создаём браш из половинки камня. Либо дублировать одно изображение множество раз.
Грубо говоря, каменистая земля в старом подходе — это множество отдельных камней, в новом — это один браш с изображением множества камней. Это даёт очень большую гибкость, позволяет переиспользовать одну и ту же графику разными способами, но увеличивает размер самой карты, так как каждый браш на ней — это уже не условные координаты и номер объекта, а объёмный набор параметров.
Dizzy SE — это перенос идеологии DizzyAge с IBM PC на ZX Spectrum со всеми вытекающими: подход к построению мира на основе брашей, логика на основе скриптов и полная изоляция от аппаратной начинки компьютера ценой потери некоторой гибкости и быстродействия.
Зато вся игра от и до создаётся на ПК в графических интерфейсах, без необходимости вручную что‑то программировать на ассемблере, собирать образы и прочее. Чтобы создать хорошую игру, конечно, всё равно придётся напрячь голову и разобраться, но уже не в архитектуре компьютера и тонкостях вывода графики, а в скриптовании логики и работе с редакторами, что, согласитесь, намного проще.
Отдельно отмечу, что движок обрастает новыми дополнениями, а Валерий подробно отвечает на вопросы пользователей. Все контакты есть на сайте проекта.
Кстати, на движке можно делать не только игры про Диззи, но и, например, гонки или все, на что способен скриптовый язык.
Источник: интервью с Валерием Сурженко на idpixel.ru
Продолжим? На сайте автора кроме движка есть дополнительные наборы тайлов и спрайтов, игры и многое другое. Советую заглянуть.
Почему движок и именно этот, а не с нуля:
Я вполне понимал на старте объем работы — музыка, загрузочные экраны, спрайты, программная часть. Начал изучать инструменты в январе с большими перерывами, а закончил игру только во второй половине июля.
Создать что‑то играбельное на Си или ассемблере с нуля — я бы и за год не справился. Я преклоняюсь перед ребятами, которые это делают. Можно посмотреть, например, работы с конкурса ретро‑игр YRGB
У «Спектрума», в отличие от того же Commodore, не было встроенных спрайтов, и уровень программирования для него должен быть действительно высоким. Даже с учетом того, что в Dizzy SE скриптовый язык, для меня это тоже программирование (последние лет 15 я ковыряю только чужие PHP‑коды и это не основная специальность).
Мне хотелось сделать несложную игру, которую можно пройти за несколько минут.
Dizzy — беспроигрышный вариант. Здесь и подумать, и попрыгать и в диалогах поучаствовать можно.
Я определил такие критерии:
Всего один экран.
Максимум характерных черт из игр про Диззи.
Красивая графика и анимация.
Понятный порядок действий без инструкций.
В итоге появилась Snow Trap Dizzy: нужно помочь дедушке Grand Dizzy расчистить огромный сугроб, который завалил входную дверь.
Героев проще представить картинкой (я намеренно взял изображения героев из первых игр):
Экран с меню
❯ Загрузочный экран
Шаблонный экран движка такой:
Скриншот из шаблонов игры
Собственно, до загрузочного экрана не было до конца продуманной идеи. А начинать всегда сложно. Я сделал наброски главного героя, который чистит снег. Несколько раз перерисовывал картинку полностью. В итоге вокруг Диззи начал формироваться загрузочный экран, второстепенные герои и сюжет.
Первые потуги
Скриншот программы графического редактора:
ZX‑Paintbrush
В итоге в игру вошли не только члены семьи Диззи, а еще летучая мышь и белка.
Так бы заставка выглядела на «настоящем Спектруме»
Я знаю, что белка зимой меняет цвет, но сделать хотя бы серую белку на белом фоне не получится. Думаю, многим читателям известна основная проблема графики в «Спектруме»: 2 цвета на знакоместо 8×8 пикселей при разрешении экрана 256×192 и атрибуты яркости и мигания.
❯ Экран меню
Шаблонный экран с меню такой:
Скриншот из шаблонов игры
Я решил переделать его и показать сочетания клавиш, так как непонятно, что такое «классика», и какой синклер — I или II. В итоговый экран меню добавил имя дочки, чтобы ей было приятно.
For Sonya
❯ Тайлы
Исходный файл с тайлами выглядит примерно так (на момент написания статьи я успел его испортить немножко):
Скриншот из шаблонов игры
А вот то, что получилось у меня:
Я оставил элементы для камина — камни (перекрасил в серый цвет), огонь, плюс дверь, стену, яйцо‑жизнь.
Перерисовал Дейзи (в исходном изображении у нее длинные ноги и каблуки, для зимы не подойдет), дерево для белки с дуплом, нарисовал портрет Дейзи (как в первых сериях Диззи), добавил к люстре анимацию — свечи.
Нарисовал анимацию ночного неба, два тайла для кучи снега и пару вариантов анимации белки с желудями.
Два варианта белки
Анимация роста и вращения желудей, которая в итоге не сработала
Позже выяснилось, что двигаться могут только спрайты. О них позже.
Самым непростым оказалась анимация дедушки Диззи, которого я решил посадить в кресло‑качалку.
Кстати, есть несколько особенностей работы с тайлами, кроме анимации. Файл с тайлами сделан в формате BMP. Если попробовать работать с ним в ZX‑Paintbrush, слетает таблица цветов, и вы получаете что‑то такое (желтая белка с синим носом):
Потихоньку разбираемся с движком
Поэтому я промучался день, а потом перерисовал исходные тайтлы в Photoshop. Пользоваться им для тайлов и спрайтов в разы удобнее, чем ZX‑Paintbrush.
❯ Спрайты
Здесь есть жесткое ограничение: размеры и последовательность спрайтов изменить нельзя. Цветной фон — прозрачный.
Скриншот из руководства движка
Для плавной анимации летучей мыши я использовал спрайты паука, а вместо капли нарисовал домового Доззи. Он ходит и вздыхает, так как в доме непорядок.
Мои спрайты
Для Диззи тоже есть свой набор спрайтов. При желании можно вместо Диззи нарисовать что угодно. В дополнительном наборе есть Диззи с маской для ныряния.
Скриншот из шаблонов игры
❯ Карта
Наверное, это один из самых сложных этапов, так как в процессе создания карты нужно учитывать физику игры и персонажа, последовательность действий и синхронизацию событий. Подбирать скорость и типы движения спрайтов, и снова перерисовывать тайлы, чтобы все сходилось до пикселя.
Скриншот из раздела руководства динамических объектов
Один из вариантов карты. Ключ находится под белкой, которая кидает желуди. Но при касании ключа желудь исчезает. Поэтому пришлось переместить его в другое место.
Последний вариант (цвет ключа другой, хочется использовать всю палитру):
Самое неприятное, что в случае любой ошибки игра виснет.
Так:
Или даже так:
Примерно такое я увидел, когда сгорел мой комп
Пару дней я потерял из‑за глюка со слоями в картах Dizzyage. Я спрятал в дупле монетку, но для того, чтобы ее скрыть, нужно поместить ее в нижний слой. В свойствах объекта он меняется, но не присваивается.
Пришлось делать массу экспериментов и в итоге дупло стало тоже предметом, который можно взять. После этого появится монетка.
На этом скриншоте показаны свойства объекта «дупло». Это динамический объект с id=200, материал «воздух» (прозрачный) и свойство — предмет.
В других вкладках находятся технические параметры (в том числе неработающий признак слоя):
Пользовательские данные (номер диалога или скрипт действия):
В данном случае при подборе «дупла» игроком показывается диалог 21:
❯ Скрипты и диалоги
Наверное, это самая долгая часть процесса. Описание движка несколько куцевато, несмотря на примеры. Поэтому до многих мелочей (например, я путал поначалу перерисовку спрайтов и перерисовку объектов) приходилось додумываться самому.
Скриншот интерфейса движка (журнал сборки проекта, редактор диалогов и редактор скриптов):
Всего у меня получилось 23 диалога и 9 скриптов.
Скрипт инициализации игры создается автоматически — в нем я дописал обработчики событий.
По ходу дела я столкнулся с еще одной проблемой: после смерти Диззи возникает ровно там, где умер. Поэтому желудь или летучая мышь убивают его несколько раз, и игра заканчивается.
Дописал скрипт перемещения в начальную точку:
На этом скриншоте показан скрипт проверки окончания игры:
Рассмотрим его подробнее. В нем мы проверяем первое ли это касание, и если да, выводим диалог и отключаем дедушку, чтобы диалог не повторялся.
showmessage(1, 8, 23, CL_YELLOW, CL_WHITE, 1) // "Победа, но монета не найдена"
after_coin:
redraw_screen()
redraw_sprites()
// Задержка 10 секунд
//wait(500)
// Возврат в меню
gameset(PL_GAME_OVER, true)
redraw_screen()
set(ret, NO_INVENTORY)
goto(exit)
// На всякий случай оставлю под ошибки.
door_not_open:
//showmessage(2, 8, 8, CL_YELLOW, CL_WHITE, 1)
goto(exit)
snow_not_cleared:
//showmessage(2, 8, 2, CL_YELLOW, CL_WHITE, 1)
goto(exit)
door_not_found:
showmessage(2, 8, 0, CL_YELLOW, CL_WHITE, 1)
goto(exit)
snow_not_found:
showmessage(2, 8, 1, CL_YELLOW, CL_WHITE, 1)
goto(exit)
coin_not_found:
goto(exit)
Тайлы для дедушки Диззи
❯ Музыка
Про работу с музыкой нужна отдельная статья с обзорами редакторов. Не буду раздувать этот пост и рекомендую почитать Александра Семенова @shiru8bit про ретро‑музыку.
Я сделал простенькую мелодию в размере 5/4 на своей блокфлейте, после чего добавил бас и стандартную «бренчалку» в Vortex Tracker II. Пришлось немного помучаться с орнаментами. В итоге получилось трехголосое фолк‑вступление для игры.
Фото моего блочка Kung
Задержусь только на одном моменте. Я потратил пару дней на изучение того, как работать с музыкой. У процессора AY-3-89XX есть возможность «скользящих» нот. Чем я и воспользовался в самом начале мелодии.
На скриншоте показа команда, которая реализует скольжение от ноты «ре» шестой октавы до «ля» пятой.
Скриншот программы Vortex Tracker II
❯ Результат
Несмотря на то, что все затянулось на полгода, это был очень крутой опыт. Не жалею ни капельки!
Игра немного тормозит из‑за большого количества анимации. Но уменьшать число движущихся объектов мне не хочется. Тем более, всего один экран.
Теперь я понимаю, почему над играми работало минимум 3 человека. Один отвечал за графику, другой за музыку, третий за код. А что творили мастера, которые делали музыку под бипер...Это космос.
Игру можно пройти за минуту. Хотя я и показал вам, где монетка, попробуйте догадаться, какая роль у домового?
Рекомендую эмулятор Unreal Speccy. А файл с игрой лежит здесь.
Разработчик Михаил Шероносов (известный под ником @ramfactory) опубликовал на «Хабре» подробный разбор своего нового хардкорного ретро-проекта. Он смог запустить полноценный эмулятор компьютера ZX Spectrum внутри 16-битной игровой приставки SEGA Mega Drive.
Для реализации идеи автор использовал кастомный флеш-картридж на базе современной программируемой логической интегральной схемы (ПЛИС/FPGA) Altera Cyclone IV. Несмотря на то, что внутри Mega Drive установлен процессор Z80, использовать его напрямую оказалось невозможно из-за специфической обвязки и жестких таймингов консоли. Единственным выходом стало развёртывание полноценного ядра Z80 с нуля прямо внутри кристалла FPGA.
Столкновение двух миров и аппаратные тупики
Проект, который изначально казался лёгкой трёхдневной прогулкой, едва не утонул в суровых аппаратных ограничениях видеоконтроллера SEGA VDP. Главная сложность заключалась в принципиальной разнице вывода графики: ZX Spectrum использует попиксельный метод (bitmap), тогда как Mega Drive умеет работать только с готовыми тайлами (сеткой 8x8 пикселей).Чтобы спроецировать экран «Спектрума» на Сегу, автору потребовалось заполнять рабочую область из 768 уникальных тайлов. Это привело к трём критическим проблемам:
Лимит шины данных: Массив тайлов весит 24 КБ, а DMA-контроллер консоли SEGA в режиме NTSC за время обратного хода луча (VBLANK) физически способен прокачать лишь около 7.3 КБ. При нехватке скорости картинка разрывалась на куски.
Эффект бордюра (HBLANK): Фирменные полосы загрузки требуют мгновенной подмены цветов палитры во время обратного хода строки, на что у консоли просто не хватало времени.
Экранная клавиатура: Для управления играми Spectrum необходим оверлей с клавиатурой, который создаёт дополнительную огромную нагрузку на видеопамять.
Как была обманута система
Разработчик решил проблему радикально — спроектировал кастомный сопроцессор ZX_SEGA_VIDEO прямо внутри FPGA. Вместо того чтобы гонять «сырые» тяжёлые данные через медленную шину консоли, это ядро «на лету» перехватывает обращения к памяти, вычисляет изменения атрибутов и подсовывает видеоконтроллеру Сежки нужные данные ровно в те микросекунды, когда это необходимо.
Дополнительно в кристалл ПЛИС внедрили звуковое ядро YM2149 с безопасной схемой стерео-микширования ABC, что исключило цифровой хрип и обеспечило чистый легендарный AY-звук.
Ламповая загрузка с кассет
Эмулятор отлично работает с ромами (.SNA и .Z80). Но для истинных ценителей ретро-атмосферы автор реализовал аппаратный «магнитофон» на FIFO-буфере.
Теперь на консоли можно запустить оригинальные файлы .TZX. На экране под легендарный цифровой скрежет EAR-звука начинают честно бежать сине-красные и желто-синие полосы загрузки по бордюру Сеги. Проект, подробнее о котором, технических деталях и разработке вы сможете подробнее прочитать в оригинальной статье автора на «Хабре», стал впечатляющим гибридным трибьютом двум культовым платформам прошлого.