О современных играх можно писать целые книги. Внимания заслуживает многое - и особенности сюжета, и процесс создания, и вообще всё, что как-то связано с продуктом (биография разработчиков, отсылки в массовой культуре, киберспортивная «жизнь» игры, даже политические и нравственные аспекты). Не то что древние игры, которые кажутся простыми, как амёбы. Какие у них могут быть секреты?
Однако среди них встречались игры, скажем так, со странностями. Одна из них - Wabbit, выпущенная американской компанией Apollo в 1982 году. Геймеров того времени она заставляла приятно удивляться: очень качественная, детализированная и красочная графика, главный персонаж назван по имени - девушка-фермерша Билли Сью. Персонаж наделён индивидуальными характеристиками, это не просто условный пиксельный человечек; в 1982 году это казалось поразительным.
Да и геймплей не самый тривиальный. Героиня должна бросать тухлыми яйцами в кроликов, которые пытаются украсть морковку с её огорода. Очки начисляются как играющему, так и кроликам - за успешно съеденную морковь. Игра заканчивается, как только герой или кролики набирают нужное количество очков. Такое вот соревнование с искусственным интеллектом. Если игрок слишком удачлив, то кролики постепенно начинают двигаться быстрее.
Естественно, у игры появилось множество фанатов. И они захотели познакомиться с авторами Wabbit. Однако найти какую-либо информацию о разработчике не могли до самого... 2022 года. Дело в том, что в том же 1982 году, вскоре после выпуска игры, компания Apollo внезапно обанкротилась и закрылась - как говорится, с концами.
И всё-таки дотошные искатели обнаружили разработчика. Вернее, разработчицу: ею оказалась Ван Тран - девушка родом из Вьетнама. Wabbit она создала в одиночку всего за несколько месяцев, при этом на тот момент она только делала первые шаги в программировании. После ухода «Аполлона» в небытие она создала ещё несколько игр для других компаний, но потом отошла от этой сферы. Известно, что в настоящее время она работает в банке. Девушка вела неприметный образ жизни, так что неудивительно, что о ней никто не знал.
Ван Тран в 1982 году (она справа)
Интересно, что Apollo целенаправленно создавала игру «для девочек» с женским персонажем и поэтому изначально привлекла к работе молодую девушку. У неё, в общем-то, получилось. А начиналось всё с многочисленных «просьб трудящихся», которые в своих письмах в компанию предлагали создать игру на фермерскую тему, причём сразу в нескольких письмах упоминались кролики и морковь.
Начну свой рассказ с одного интересного факта. В прошлом посте я говорил, что 1975 - 1980 годы это очень бурное время в плане развития игровых консолей. И вот вам пруфы -- на данный момент на Википедии описаны 962! различные консоли. Безусловно, многие производители выпускали целую серию консолей, которые почти не отличались друг от друга. Но тем не менее, число всё равно впечатляющее!
А теперь давайте вернемся к теме поста :)
На дворе у нас начало 1976 года. Допустим, вы уже наигрались в Magnavox Odyssey 100 (см. прошлый пост), и вам хочется чего-то новенького. И рынку есть что вам предложить! Итак, встречайте нового игрока на рынке -- Atari! Ну как нового, так-то они делали игры еще с 1972 года, однако это были аркадные автоматы. А теперь вот пришли и в сегмент домашних консолей.
Atari, как и все тогда, выпустила за короткий промежуток времени сразу несколько консолей. Сначала была Pong, которая поддерживала только одну игру (догадайтесь какую :) ), а спустя пару месяцев была выпущена Super Pong, в которой было аж 4 игры!) Именно о ней и будет сегодняшний рассказ.
Atari Super Pong (C-140), куплена на ebay за 114$ в 2020 году
Что же новенького принесла нам эта консоль (относительно той, что была в прошлом посте)? На самом деле достаточно много чего. А именно:
1. Цвет!
Наконец-то, кроме черного и белого завезли еще цветов
Фактически, поверх игрового поля был наложен градиент (зеленый-синий-красный). Мячик менял свой цвет в зависимости от своего местоположения.
2. Счет!
В прошлой консоли тоже был учет очков. Однако там нужно было вручную передвигать ползунок на приставке. Тут же она сама всё считает. Чудо, не иначе)) Для сброса счета используется аппаратная кнопка "Start Game"
Победителем считается тот, кто первый наберет 15 очков
3. Начальная анимированная заставка
GIF
Бесполезно, но красиво)
4. Небольшие, но приятные геймплейные улучшения
Такие как авторестарт мячика после забития голя (в прошлой консоли нужно было вручную подвести игрока к середине поля) + сверху и снизу явно видны ограничители игрового поля + автоускорение мячика со временем
5. Управление игроками только по вертикали
Спорное изменение, мне лично нравилось так, как было в прошлых консолях, когда можно было гасать по всему полю)
6. Звуки
Звуки всё так же издаются самой приставкой, а не телевизором. Но зато их теперь аж три -- при начальной подаче мячика, при отбивании мячика игроком и когда забивается гол
7. Один чип
Внутри консоль стала еще проще в плане компонентов. Теперь вся логика реализована в одном чипе.
Фото с интернета. Свою я не смогу так разобрать, он уж очень плохо поддается разборке
А теперь об играх)
Их в приставке аж 4 штуки. Переключаются с помощью аппаратного переключателя "Select Game". Я не нашел их официальных названий, так что буду давать свои)
1. Pong Тут всё максимально стандартно и скучно. Ничем особо не отличается от реализации в других приставках
GIF
2. Double Pong Почти то же самое, но с небольшой модификацией -- теперь у каждого игрока два "прямоугольника", которыми можно отбить мячик. Так играть немного сложнее, но не особо интересней.
GIF
3. Обратный Pong Эта игра мне нравится больше всего. Тут мячик нужно не отбивать, а ловить. Это и сложнее и интересней)
GIF
4. Singleplayer баскетбол
А это вообще что-то новенькое. Наконец-то игра для тех, у кого нет друзей!) Правая часть поля -- это типа корзина, в которую нужно закинуть мячик. Крутилкой вы выставляете ее размер. Если выставить маленький размер, то становится весьма сложно попасть
GIF
Итог: лично мне эта консоль очень понравилась. Пока что это лучшее, что было из первого поколения. Стоила она кстати так же, как и прошлая (от Magnavox) -- 100$ (примерно 650$ на сегодняшний день). Рекомендую к покупке)
P.S. А кто дочитал -- тот молодец. Вот вам фотка пёселя :)
Как написать статью о программировании так, чтобы она была интересна и понятна широкой публике? Сложный вопрос. Создать подобный материал для профильного ресурса было бы куда проще. Но не так интересно)
В общем, чтобы упростить материал, я решил не приводить примеры кода и по минимуму использовать специфические технические термины.
Вместо этого я хотел бы показать вам весь процесс пошагово, начиная от идеи и заканчивая итоговым продуктом :)
Пример отличной пошаговой инструкции :)
Идея
Итак, начнем с того, что вообще можно сделать. Технические ограничения у меня очень жесткие:
Процессор медленный, 8-битный, простенький. Он даже не умеет умножать\вычитать.
Оперативной памяти буквально пару десятков байт
Рисование на экране не просто медленное, а ОЧЕНЬ медленное
Рисовать можем в область 100x60 пикселей (даже у моего первого мобильного телефона экран был больше) и только тремя цветами
Размер игры не может превышать 2 килобайт
Да уж, GTA сделать не получится) Даже Марио это недостижимый уровень. Ну и ладно, тогда буду делать что-то попроще.
Так как это был мой первый опыт с этой системой, то мне хотелось просто сделать какой-то завершенный продукт. После определенных размышлений я решил сделать клон игры про динозаврика из Хрома
Игра, которая появляется в Хроме, если у вас пропал интернет
План
Теперь нужно определиться с тем, что именно нужно сделать. Я набросал такой вот список задач:
Фон (небо и земля)
Динозаврик (с анимацией бега\прыжка)
Кактусы (и столкновения с ними)
Очки (в текущей игре и максимальный результат)
Смена дня и ночи (+ солнце и луна)
Звуки
Птеродактили / приседания под ними
Создаем небо и землю.
Небо создать проще всего. Фактически мне нужно просто залить весь экран каким-то цветом. К счастью для этого есть уже готовый код, который вшит в память приставки.
Для отрисовки фона мне доступны три цвета: светло-синий, светло-зеленый и серый. Не сложно догадаться какой из них я выберу :D
GIF
Такой вот результат) На данный момент игра весит 11 байт
Ну, выглядит неплохо)) Кстати, скорость рисования здесь вполне себе реальная. Приставка настолько медленная, что перерисовка всего экрана занимает около секунды. По-этому в будущем придется очень сильно изворачиваться, чтобы добиться хоть какой-то плавности анимации
Такс, теперь земля. Ну вернее трава. Здесь уже не получится схалтурить, и придется писать код отрисовки вручную. Для этого нужно определиться с тем, где у меня будет уровень горизонта и залить всё, что ниже, зеленым цветом
Похоже на игру?) А между прочим она весит уже 66 байт
Динозаврик!
Пришло время заняться главным героем (я так и не придумал ему имя). На этом этапе я хотел просто вывести его на экран и подвигать в разные стороны.
Сначала я попробовал сделать его таким же, как в исходной игре. Но сразу обнаружилось две проблемы:
во-первых, он рисуется очень медленно. К сожалению, он слишком большой (кажется 16x16 пикселей), по этому придется его упростить в будущем
а во-вторых, честный способ рисования не подходит. Под честным я подразумеваю удаление его со старой позиции и рисование в новой. Из-за такого подхода очень сильно видно мерцание
GIF
Гифка немного искажает реальное изображение, но мерцание всё еще заметно. В жизни оно гораздо сильнее видно
Для начала я решил побороть вторую проблему. Для этого я использую одну хитрость. По факту, нет необходимости удалять его, а потом рисовать заново. Можно просто рисовать его сразу в новой позиции. Но, в таком случае, на экране остается шлейф.
GIF
Мерцание ушло, но возникла новая проблема :)
А чтобы при движении не оставалось шлейфа, то я просто увеличил ширину "спрайта" на 1 пиксель в каждую из сторон. Именно на такое расстояние может двигаться динозаврик за одно обновление кадра. Плюс сразу добавил анимацию. Она очень простая, это просто два разных "спрайта", в каждом из которых поднята вверх разная нога)
GIF
Топ топ топ...
"Спрайтами" я называю их лишь условно. Потому что, по факту это не спрайты) Показать как выглядит динозаврик на самом деле? Вот, смотрите:
Wake up, Neo
Ладно, может не совсем так, но достаточно похоже))
Если отдалиться и прищуриться, то даже можно его разглядеть
После ходьбы нужно добавить возможность прыгать. В момент прыжка анимация движения выключается.
GIF
Вииииии
На данном этапе я окончательно убедился в том, что с такой скоростью это неиграбельно. А это еще даже нет других обьектов, типа кактусов и птиц :( В ходе экспериментов пришлось понизить детализацию (хотя казалось бы, куда уж меньше) до размера в 8x9 пикселей. Также решил поменять ему цвет, чтобы оставить зеленый для кактусов. Плюс так он будет меньше сливаться с травой
GIF
Во, теперь я доволен скоростью :)
Кактусы
С ними всё не очень сложно. Они не имеют анимаций, никуда не прыгают и не требуют какой-то детализации. Для начала я создал три разных варианта. Рисуются они по очереди. На данных момент я не придумал как рисовать их случайным образом. Никаких генераторов случайных чисел в приставке нет( Но ничего, решу этот вопрос когда-то в будущем)
GIF
Гифка уже перестала передавать плавность движений. Но поверьте на слово, она там есть)
Выглядит уже почти как настоящая игра. Но в ней не хватает одной важной детали -- обработки столкновений. На данный момент динозаврик может просто пройти мимо кактуса)
Определение столкновений тут самое простое из всех возможных -- просто проверка на пересечение двух прямоугольников.
GIF
Теперь можно проиграть!
Во, теперь шикарно) Согласен, у меня странное представление о шикарности вещей) Но, как бы то ни было, теперь это похоже на полноценную игру. Кстати, весит она уже 826 байт. А это почти половина от максимального размера, который мне доступен.
На этом этапе я завершу первую часть. Надеюсь она была интересной для вас :) В следующей части я расскажу об оставшихся пунктах. А потом о том, как создать свой картридж и протестировать игру на реальной железке)
Чем в девяностые годы отличались отечественные любители видеоигр от своих зарубежных «единомышленников»? Не только тем, что им (то есть нам - я тоже рос в ту весёлую эпоху) приходилось играть преимущественно в пиратские копии игр и китайские клоны приставок, а не использовать оригинальную продукцию. Есть более существенное отличие.
Российские геймеры тех лет, в отличие от зарубежных, в одночасье получили сразу всю библиотеку игр, изданных за последние десять - пятнадцать лет. Скажем, на Денди это игры от самых простых, типа «Бомбермена», до самых продвинутых, вроде «Соника» и «Короля Льва». А в довесок - и контент более мощных приставок, как Сега, и даже древние динозавры вроде Атари. Из-за этого полноценно насладиться многими играми не получалось.
А вот геймеры в других странах, получавшие свежие игры в момент их выхода, каждый раз удивлялись чему-то новому. Так,Super Marioбыла одной из самых первых игр с плавным скроллингом, а не со сменой экранов. В более ранние годы сильно удивляла игроков сама смена экранов, впервые реализованная в 1978 году в игреSuperman; вPitfall!(1983) таких экранов было целых 255, что казалось технически невозможным (а секрет был в процедурной генерации, когда каждую новую комнату автоматически создавал код).
ИграPrince of Persiaв России, наверное, вообще не пользовалась массовой популярностью, поскольку в 90-е казалась уж слишком примитивной. Но в момент своего появления она казалась чем-то невероятным, а всё из-за реалистичных движений главного героя. Весь фокус был в ротоскопировании - инновационной технологии, позволяющей «перекладывать» в игру движения реальных людей. В 90-е эта техника применялась уже повсюду - например, вMortal Kombat.
В общем, мы получили "всё и сразу", и это тот случай, когда "всё и сразу" - это нехорошо.
А для тех, кто интересуется "тёплыми, ламповыми" старыми играми, могу порекомендовать свой канал (точнее - "подканал" в основном канале на Дзене), посвящённый им - "ГЕЙМЕРСКИЙ ПАЛЕОЗОЙ". И статьи там есть не только про всеми любимые шедевры вроде "Марио", но и про такие игры, которые до наших широт так и не дошли. В общем - добро пожаловать в доисторическое пиксельное царство! [если не отображается ссылка - нужно отключить AdBlock]
Древняя Assetto Corsa. Наложили правильные шейдеры, и вот уже квадратные текстуры не бросаются в глаза. Здесь, правда, следует иметь в виду, что те, кто просит фотореалистичный графондий, потом обычно об этом сожалеют, потому что эти солнечные блики на колесах красиво смотрятся только на повторе, а в катке выжигают глаза.
О существовании в природе такой игры на «Денди» я давным-давно забыл. И вот однажды, несколько месяцев назад, случайно увидев скриншот из неё, я вдруг вспомнил, как более тридцати лет назад «залипал» в неё. И как могло такое стереться из памяти? ;)
Хоп, мусорок...
И ещё вспомнил, что называл я её «Мэппи» - вроде так по правилам английского языка читается. Но оказалось, что это на самом деле «Маппи», что по-японски в буквальном смысле означает «мусорок». И в самом деле, главный герой - не просто мышь, а мышь полицейская. Получается, что в незатейливом раннем платформере уголовный жаргон (или, по меньшей мере, «уличное» просторечие) использовался на несколько десятков лет раньше, чем появилось GTA.
Сама игра и её герой, кстати, все эти тридцать лет были популярными (по крайней мере за рубежом). Платформер переиздавался на игровых автоматах, а про Маппи даже выпустили мультсериал.
Комментарии