31 декабря 2017 |
|
Mickey the Basic game Этой осенью прошёл конкурс на лучшую игру на Бейсике - "Best Basic Game". Hippiman связался сСергеем Незнаным, более известным как Sergio, автором игры "Mickey" - одной из наиболее интересных игр среди представленных. Hippiman> Привет, Сергей! Поздравляю со вторым местом! У меня для тебя есть несколько во─ просов, ответы на которые, я думаю,были бы очень интересны нашим читателям. Sergio> Привет, Валерий! Спасибо за поздравле─ ние. Первый раз в жизни даю интервью,наде─ юсь, вопросы будут простые)) Hippiman> Конечно,простые.Мы же не на экзамене ;) Расскажи,как твои впечатления от конкурса? Sergio> Я узнал о конкурсе перед самым заверше─ нием приема работ и думал выставить недо─ деланную в97-мигру.Вроде как играбельное демо, в котором ни выиграть, ни проиграть было невозможно. Подумал, что времени на доработку нет, да и Бейсик уже подзабыл за 20лет. Так что отправил просто, чтобы ко─ личество работ пополнить. Но организатор убедил меня доделать игру, сроки начала конкурса отодвигались,так что времени ока─ залось достаточно. И уже после того, как я на несколько дней и вечеров погрузился в такой забытый и приятный процесс програм─ мирования на Спектрум-Бейсике и выставил полноценную игру на конкурс, то отношение немного изменилось, и результатов я уже ждал с нетерпением. Hippiman> Что ты думаешь по поводу других работ? Какие понравились больше всего? Sergio> Все работы по-своему интересны. Меня больше всего впечатлила "Пещера"своими масштабами - в игре196уникальных игровых экранов! Меня это больше с технической стороны заинтересовало, автор довольно хи─ тро закодировал карту игрового, не побоюсь этого слова, мира, уместив её всего лишь в сотню строчек Бейсика! Еще понравилась иг─ ра dino,хоть она и максимально простая (повторяет мини-игру из браузера Chrome), но там очень забавный персонаж и милая концовка, в общем,прошёл с удовольствием). Сокобан и Змейка меня не очень зацепили, наверное,потому,что в своё время переиграл в вариации этих игр на разных платформах). К слову, ребята из HorrorSoftвыпустили еще в2000году Kool Eggz, аналог карман─ ной "Ну, Погоди!"с волком и зайцем, так что моя игрушка тоже не первая в своем ро─ де на Спекки. Hippiman> То есть ты для конкурса доделывал игру 97-го года. Расскажи, с чего всё началось? Ты тогда начинал делать серьёзную игру или это была просто разработка ради развлече─ ния? Почему именно перенос карманной "Ну, погоди!"? Sergio> Просто ради развлечения. В те времена я, думаю, как и многие спектрумисты, был увлечён желанием что-то создавать, а не только играть. У меня получалось что-то рисовать, нельзя сказать, что круто, но главное, что это занятие доставляло удово─ льствие, были эксперименты с музыкальными редакторами. Очень нравилось изучать бей─ сик, писать какие-нибудь полезные програм─ мки, например вечный календарь, разные ма─ тематические задачки решать. Ну,и конечно, кто не мечтал делать свои игры! К сожале─ нию, Бейсик хоть и позволял их создавать, но в очень уж скромных масштабах. В основ─ ном получались довольно примитивные игры, вроде игры в числа, самые простые настол─ ки,головоломки,был Сапёр, Змейка.Про игру с большими спрайтами и тем более динамич─ ную, не зная ассемблера, оставалось только мечтать. В какой-то момент, глядя на вышеупомя─ нутую карманную игрушку (у меня была вер─ сия с Микки Маусом,как на оригинале у Нинтендо), мне пришла мысль, что ведь её можно перенести на Спектрум, причем испо─ льзуя подобный же принцип вывода анимации. Идея была в том, чтобы нарисовать все спрайты заранее на экране (по сути они все статичны) и только менять атрибуты в нуж─ ный момент в нужных знакоместах. Я предпо─ ложил, что даже на голом бейские это смо─ жет работать довольно шустро. Идея мне так понравилась, что буквально за день я нарисовал игровой экран (впосле─ дствии он лишь немного дорабатывался) и приступил к экспериментам с оживлением его в Бейсике. Ну, и конечно, довольно быстро выясни─ лось, что идея была не такой уж блестящей, т.к. средствами Бейсика перекрашивать об─ ласть атрибутов, кроме как POKE'амиили PRINT'ами,в общем-то,и нечем,первый вари─ ант был слишком медленным для больших бло─ ков атрибутов, а второй вариант ничем не быстрее, чем если бы спрайты находились в символах шрифта, а не заранее на экране. Но по крайней мере, такая механика сильно упростила работу со спрайтами - не нужно было их разбивать на символы, а потом со─ бирать заново. Все спрайты в игре можно выводить при помощи одних лишь пробелов! Hippiman> Не перестаю удивляться человеческой смекалке - умудриться недостаток оригина─ льной игры использовать с выгодой для своей :) А ты использовал ещё какие-нибудь трюки? Или мог бы поделиться с читателями какими-нибудь интересными приёмами прог─ раммирования на Бейсике? Sergio> Ну, каких-то особых трюков там нет, просто старался оптимизировать программу, насколько мне позволяли знания о Бейсике. Например, помню, что в первых строчках код интерпретируется быстрее, чем в даль─ них, поэтому самые критичные подпрограммы размещал в начале, потом менее важные и т.д. В итоге инициализация переменных,мас─ сивов, загрузка шрифта и графики размести─ лись в конце, а в первых строчках - вывод самых больших спрайтов. Причём в зависимости от того, из какого положения игрок перемещает персонажа,выво─ дится либо спрайт целиком, либо его часть (только руки с корзинкой), т. е. движение сверху вниз и снизу вверх "экономнее", чем справа налево и слева направо. Чтобы сократить листинг программы, на последнем этапе даже поудалял все коммен─ тарии и где возможно объединил строчки. Также старался минимизировать количест─ во переменных и операций с ними, например, нужна переменная-флаг, чтобы определять, показалась Минни или спряталась, логично (и наглядно),вроде бы,задавать ей значения 1и0соответственно, но лучше сделать0.5 (есть) и 1(нету) и использовать её как инкремент для штрафных очков. Т. е. теперь не нужно проверять положениеМинни,когда яйцо уронили, штрафные очки можно сразу увеличивать на значение этого "флага". Для контроля скорости игры использовал системный таймер. К сожалению, никакие оптимизации не помогли снизить задержки до таких значений, какие я надеялся выжать, чтобы получить близкий к оригиналу игровой процесс.Собственно,из-за этого я и не стал доделывать тогда игру... Hippiman> В какой среде ты разрабатывал игру? Думаю, сейчас вряд ли кто-то ещё будет пи─ сать на встроенном Бейсике, где нет ни операций копирования, ни удобного удале─ ния, а в 48-й версии даже операторы нор─ мально не набираются. Sergio> Ты прав, на встроенном Бейсике я бы не смог сейчас быстро довести игру до ума. Тем более, что делал это на эмуляторе (ре─ альный Спектрум хоть и живой, но не к чему его подключить). За 20лет расположение команд Бейсика на клавиатуре стерлось из памяти, и было бы мучительно набирать про─ грамму "вслепую". Ситуацию спас ZX-Editor, спасибо его авторам. В нем можно кодить на Синклер-Бейсике со всеми удобствами совре─ менного редактора - быстрой навигацией по листингу, копипастой и прочим. И он на хо─ ду преобразовывает текст в токены Бейсика. Правда, не всегда идеально отрабатывает проверка синтаксиса, но это мелочь. Hippiman> Почти все портативки от"Электроники" имели очень схожий принцип работы. Ты не планировал развить свою игру до более универсального движка и сделать целую серию игр ("Ну погоди!", "Тайны океана", "Охота", "Весёлый повар", "Автослалом" и другие)?. Может быть, объединить их все на одном диске с красивым ланчером. Чтобы можно было мериться очками или даже посте─ пенно открывать заблокированные ранее иг─ ры? Sergio> Отличная идея, но так как Бейсик всё- таки слабоват для того, чтобы полноценно передать их игровой процесс, то я о таком не задумывался. Была мысль вынести часть процедур в машинный код, как минимум - перемещение героя. Это бы уже позволило больше развернуться, и реакция на нажатия клавиш была бы живее, особенно если и оп─ рос клавиатуры на прерывания повесить... Но увы, моего поверхностного знания ассем─ блера явно не хватало, чтобы быстро это опробовать. А вскоре я устроился на свою первую работу, так сказать,вошёл во взрос─ лую жизнь, и Спектрум отошел на второй план. Так что об этой игрушке постепенно забыл. До нынешнего времени. Hippiman> Я заметил, что уже после50очков игра сильно усложняется. Яиц становится больше, и скорость возрастает. Играть становится намного сложнее, но и интересней тоже. В оригинале игра должна была ускоряться пос─ ле 100 очков, и до100очков можно было дойти без затруднений. Что из оригинальной игры ты перенёс в свою, что посчитал не нужным, а может быть, что-то улучшил? Sergio> Оригинальную игрушку я проходил неод─ нократно до конца, и после примерно500 очков там начинается адский хардкор. Могу даже припомнить, какую эйфорию испытал, когда впервые набрал1000.Соответственно, неплохо знал особенности игрушки, которые в основном постарался повторить. Например, каждые 100 очков (до 500) скорость игры немного снижается, давая иг─ року перевести дух,на200и на500обнуля─ ются штрафные очки, размер штрафа зависит от того, выглядывает ли Минни из окна в данный момент или нет,соответственно отли─ чается и анимация разбивания яйца (в демо- версии эти моменты не были реализованы). Что не стал переносить - я немного за─ бил на точность набора скорости игры, т.к. повторить динамику на Бейсике оказалось нереально,я подумал,что бессмысленно слиш─ ком углубляться в алгоритм вбрасывания яиц и расчёта скорости.Так что здесь я немного упростил задачу и сделал плавное увеличе─ ние скорости, исходя из текущего счёта, с небольшими откатами на каждой из первых сотен. Насколько я помню, в оригинале ско─ рость также плавно нарастала, в т.ч. и до первой сотни очков, правда, может,и не так существенно... С количеством яиц поступил примерно так же (в оригинале до5очков на экране появ─ лялось только1яйцо, потом2и т.д., если заморочиться, то можно было вычислить точ─ но, когда наращивать количество). Второй момент, который я упростил - на─ личие двух режимов игры. В игре Аяйца несли в любой момент игры только три ран─ домные курицы из четырех, вигре Бнеслись все 4,и по скорости этот режим был еще более хардкорный. У меня получился один режим, нечто среднее между этими. Скорость подбирал на глаз, чтобы было примерно похоже, для этого пробовал запус─ кать игру с разными задержками перемещения яиц. Проблема была в том, что в какой-то момент уменьшение задержки уже ничего не давало,т.к. скорость упиралась в минималь─ ное время работы основного игрового цикла. Так что предел скорости наступает уже где-то на счёте300-400(при этом скорость гораздо ниже максимальной скорости ориги─ нала) и даже начинает падать ближе к концу из-за того, что яиц на экране становится больше. В турбо-режиме, конечно, с этим не было большой проблемы, и скорость можно контро─ лировать более точно,и отзывчивость игры в целом выходила намного лучше. Можно было оптимизировать игру под турбо и получить более сбалансированный геймплей,но я решил всё же настраивать процесс на стандартной частоте,с учётом всех лагов. Что,к сожале─ нию, привело к тому, что в турбо-режиме пройти игру, наверное, даже сложнее,чем на оригинальной игрушке. Из того, что добавил от себя - это, ко─ нечно же, читы:) (Ред.: читы, как обычно, в статьеHints & Tips) Hippiman> В детстве ходила легенда, что если наб─ рать в игре сколько-то там тысяч очков, то тебе покажут новую серию мультика, которую нигде больше нельзя посмотреть. И, естест─ венно, столько очков никто не набирал, а рассказывал про это мальчик,у которого был знакомый мальчик, который видел,но уехал в другой город.Сейчас-то мы прекрасно знаем, что никакого мультика там не было и не могло быть, но, может быть,ты в своей игре реализовал давнюю детскую мечту? Sergio> Да, конечно же, я тоже слышал такую легенду, только в ней не уточнялось, что это новая серия, а просто говорилось о "мультике":) Мне с самого начала это казалось непра─ вдой, т.к. было очевидно, что ничего,кроме заранее нарисованных на экране деталей изображения на нём показать нельзя. По аналогии с электронными часами, которые были популярны в 90-е. Все эти детали было видно невооруженным глазом под определён─ ным углом, а если нажать сброс,то они даже "включались" все сразу. Так что меня не удивило, что при наборе 1000очков игра просто закончилась.Сейчас, доделывая игру, вспоминалась эта легенда и была мысль как-то это обыграть в конце. Но увы, времени для придумывания и рисования мультика уже не оставалось. Я было попро─ бовал сделать автоплей вместо него, но по─ том понял, что это то же самое, что было в режиме ожидания - и логично его вынести в интро. Так что в конце остались только по─ здравительные титры. Причем текст поздрав─ ления отличается в зависимости от того, использовался ли чит-режим. Hippiman> Поделись,пожалуйста,с нашими читателями своими дальнейшими творческими планами. Будешь ли ты разрабатывать новые игры или доводить до ума свои старые наработки - и в какой среде? Sergio> Конкретных планов нет, как обычно :) Разве что ностальгия нахлынет или будут подобные конкурсы ещё проводиться, тогда, возможно ещё какую-нибудь давнюю задумку доработаю. Быть может,приму участие в про─ ектах других авторов,если кому понадобится помощь с графикой, такое тоже периодически случается. Hippiman> Большое спасибо за интервью! Было очень интересно с тобой пообщаться.И напоследок, пожелай что-нибудь нашим читателям. Sergio> Взаимно. Спасибо редакции журнала в твоём лице за то, что делаете такое нужное дело. Читателям желаю добра, любви и бла─ гополучия!
Other articles:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 23 November