Info Guide #12
31 декабря 2017

Игрушки - Nomad: интервью с автором скролл-шутера Nomad (Hippiman).

           Nomad
Alone Coder> 
   В прошлом  году  я показывал игру Nomad
на  DiHalt'е. К сожалению, нам выделили не
самое  лучшее  время, а я был  не в лучшей
форме - застрял  на 2-м  уровне и не смог
показать весь блокбастер.

Hippiman> 
   На  самом  деле для DiHalt'а нужно было
сделать облегчённую версию  с более мощным 
оружием  или  меньшим  количеством врагов. 
Игра  получилась  действительно сложной, и 
для  её  прохождения  нужна тренировка или 
хороший скилл в этом жанре. 

Alone Coder> 
   Расскажи,  как  родилась  идея  Номада?
Ведь  сделать приглядный скролл в цвете на
точку - это  очень  сложно... И почему  он
Номад? (Помню  игру  детства  с  названием 
N.O.M.A.D :)) 

Hippiman> 
   Я изначально планировал в игру вставить
сюжет в постапокалиптическом, фантастичес─ 
ком  мире, разрушенном войной. Где остатки 
человечества изо всех сил пытаются выжить, 
а остатки  боевых  машин-роботов методично 
это человечество истребляют, выполняя пос─ 
леднюю заложенную в них программу. 
   А главный герой - бродяга, как безумный
Макс в исполнении Мела Гибсона. Он колесит 
на  своем  байке  по миру в поисках пищи и 
топлива  и однажды по радио ловит сигнал о 
помощи. Он  узнаёт, что  далеко на востоке 
есть  долина, где  собираются выжившие, но 
её  атаковала  армия роботов. Герой решает 
идти на помощь. 
   Вот  как-то так. Писатель из меня ника─
кой, и я прикинул,что могу банально не по─ 
тянуть  всё это дело - красиво описывать и 
нарисовать  в  заставке. Да  и сюжет шмапу 
особо  не нужен в пяти-то уровнях, и я ре─ 
шил  предоставить  всё воображению игрока. 
Сделал  только вступление и концовку (я их 
из-за размеров даже в отдельные модули за─ 
пихнул). 

Alone Coder> 
   Всех  ли врагов можно избежать? Или по─
теря энергии неизбежна?

Hippiman> 
   Врагов можно избежать всех. Я специаль─
но делал так, чтобы игру можно было пройти 
без потерь. Но в некоторых местах это сло─ 
жно. В  конце  первого уровня, прямо перед 
боссом избежать вражеской пули очень слож─ 
но, нужно  сделать  очень  точный  прыжок. 
Иногда нужно просто знать, откуда появится 
враг.  Некоторые  уровни  предпочтительнее 
проходить с определённым оружием. 
   Однако,  когда  я  тестировал  игру, то
проходил  её наNormalбез потери жизней и 
без  особых проблем. Сейчас нужно потрени─ 
роваться, потерял навык. 
   Самое  сложное  место в игре - 2-й уро─
вень. Базовый  пистолет  слишком  слаб для 
большинства врагов, а магнумом сложно ору─ 
довать из-за низкой скорости стрельбы. 
   Лучше  всего  этот  уровень проходить с
УЗИ  или обрезом.Для этого нужно немного
потренировать  1-й  уровень  и постараться 
набрать на нём как можно больше очков. 
   Это  на  самом  деле несложно. Если это
сделать, тогда  2-й уровень покажется нам─ 
ного проще. 

Alone Coder> 
   Как  скриптуются враги? Как скриптуются
уровни?

Hippiman> 
   Это интересный вопрос :). В Nomad я по─
ступил хитро. 
   Каждый уровень - это не красиво расста─
вленные по сетке враги, а по сути скрипт - 
последовательность команд самой разной на─ 
правленности. 
   Все  команды выполняются строго по оче─
реди  и по времени. Т.е. очередная команда 
не  выполнится, покуда  глобальный счётчик 
времени  не дойдёт до определенного значе─ 
ния. 
   Команды есть самые разные:
 -создать монстра
 -изменить скорость скролла
 -сделать чекпоинт
 -выпустить босса
 -перейти  на  несколько  команд назад с
отмоткой времени (так делаются циклы)
   А с их помощью делаются паттерны.
   Использование паттернов - некого набора
команд, который повторяется несколько раз, 
сильно упростило мне жизнь во время разра─ 
ботки  уровней. Вместо  того, чтобы созда─ 
вать  каждого  врага по отдельности, я мог 
создать  одного, а затем  указать, сколько 
раз его нужно повторить. 

   Монстры не скриптуются никак. У них нет
ИИ как такового. Поведение каждого монстра 
задают  2  параметра: тип  движения  и тип 
стрельбы. 
   Все типы движения и стрельбы жёстко за─
даны в коде игры и тоже бывают на все слу─ 
чаи жизни: 
 -двигаться зигзагом, прямо в игрока, по
прямой, выскакивать  из  под  пола, лететь
прямо, а потом взрываться и пр.
 -стрелять в каком-то направлении, в иг─
рока, стрелять другим монстром,не стрелять
вообще и т.д.
   Комбинируя  разные типы движения, стре─
льбы и паттернов, я добился разных интере─ 
сных эффектов. 
   Например, судно на воздушной подушке из
2-го  уровня, которое плывет на фоне - это 
моб с очень толстой бронёй и очень малень─ 
ким  хитбоксом, который  стреляет  вверх с 
определенной периодичностью. Следом за ко─ 
мандой  спауна этого моба идёт цикл, кото─ 
рый спавнит энергетические шары вверху эк─ 
рана. Энерго-шары - тоже мобы. И этот цикл 
синхронизирован  с  движением  судна  так, 
чтобы  казалось, что  эти  шары - это  его 
снаряды. 
   Это  простой  пример. На самом деле при
помощи  паттернов, циклов  и  разных типов 
движения можно сделать много интересного. 

Alone Coder> 
   Сколько  примерно времени нужно на пол─
ное прохождение? Как ты его отлаживал?

Hippiman> 
   Первый уровень до босса, если не терять
жизней, проходится примерно за1.5минуты. 
2-й - примерно за 3 с копейками. Последую─ 
щие - точно не помню, но в среднем от4до 
5 с половиной минут на уровень.
   Получается, что с боссами и потерей жи─
зней  игра  проходится  в среднем минут за 
30-40.
   Больше 5минут на уровень - уже сложно
для  игрока. Банально устаёшь физически от 
постоянной  концентрации  и начинаешь оши─ 
баться. 
   А отлаживал я достаточно просто.
   Делал часть уровня: одну или две волны.
Обычно это был отрезок от одного чекпоинта 
до  другого. И  многократно  его проходил, 
покуда правильно не выстраивал все команды 
по  времени, не  расставлял  монстров так, 
чтобы было интересно, но и не слишком сло─ 
жно, чтобы можно было пройти без поврежде─ 
ний. Потом  переходил  к следующему и т.д. 
Когда  уровень был закончен, я многократно 
перепроходил  уровень целиком и дошлифовы─ 
вал  то, что  проглядел ранее. Подстраивал 
части друг к другу. 
   Старался также учесть разные стили про─
хождения. Кто-то  может  быстро всех пере─ 
бить,и ему придется ждать следующую волну, 
а кто-то наоборот - завязнуть, и следующая 
волна его подкосит окончательно. 
   Приходилось искать золотую середину.

   Каждый  уровень  был изначально задуман
для прохождения оружием определенного уро─ 
вня и с определенным набором способностей. 
То есть, например, на 3-м уровне с базовым 
пистолетом делать нечего, а на 4-м и 5-м - 
без двойного прыжка. Соответственно, у иг─ 
рока  должно быть  определённое количество 
денег, чтобы  его купить + должно остаться 
на новые жизни и раскачку энергии. 
   Примерное количество денег после прохо─
ждения уровня я определял по своим прохож─ 
дениям. Играл  несколько раз с разным ору─ 
жием, потом  считал среднее арифметическое 
заработанных на уровне очков и уменьшал на 
треть. 
   Хотя  набор  очков - это  понятие очень
растяжимое, и  виной тому система множити─ 
лей. Если  регулярно "лажать", то набёрешь 
совсем мало очков. 
   Если  же  играть  "чисто" и не попадать
под пули, то с каждым сбитым врагом будешь 
увеличивать  множитель очков и, соответст─ 
венно, сильно  увеличивать финальные очки. 
Если войти в ритм, то уже на первом уровне 
можно   вполне  набить  очков  на  покупку 
"калаша" (штурмовой винтовки,она же АКСУ),
да  ещё и  на дополнительную жизнь остане─ 
тся. А можно там же потратить все жизни, а 
выигранных очков не хватит даже намагнум.

Alone Coder> 
   Игра  сильно  отличается  от прочих игр
для ATM Turbo. В ней используются какие-то
ассемблерные  процедуры сверх обычного Evo
SDK? 

Hippiman> 
   Да  кроме работы с диском и твоих функ─
ций работы с расширенной памятью, по сути, 
и ничего. Всё делалось на C. 
   Я использовал несколько функций быстрой
математики,но они тоже были написаны на C. 
В глубоком использовании ассемблера просто 
не было нужды. 

Alone Coder> 
   А можно  ли  на подобном движке сделать
что-то типа Midnight Resistance? :)

Hippiman> 
   Midnight Resistance  -  нет, конечно :)
Этот движок для такого не расчитан. 
   В целом этот движок можно охарактеризо─
вать одним словом - экономия.Ради скорости 
мне приходилось экономить на всём. Так как 
аппаратного  скроллинга  нет, а программно 
горизонтально двигать экранную область из- 
за  странной  организации памяти и больших 
её объемов очень долго,даже14 MHzне хва─ 
тало  на  фреймовый скролинг, мне пришлось 
выкручиваться. 
   Даже простое копирование изображения на
экран происходит долго,т.е. я вообще никак 
не  мог сделать скроллинг всей игровой об─ 
ласти. 
   Я поступил  хитрее. Всю графику уровней
я рисовал таким образом, чтобы не было за─ 
метно, что  вся игрвая область поделена на 
небольшие полосы. 
   Дорога, по которой движется игрок, сис─
тоит из двух полос по8pxв высоту каждая. 
Эти две полосы перерисовываются почти каж─ 
дый  кадр. А  фон  я сделал из трёх полос: 
две по8pxи одна в16px.И тут меня выру─ 
чил эффект параллакса. 
   Я расчитал  интервалы движения этих по─
лос  так, чтобы никогда не нужно было дви─ 
гать их все сразу. За раз перерисовывается 
только одна полоса. 
   Таким  образом получилось, что в макси─
мальной  нагрузке  мне  нужно  было  пере─ 
рисовать 16pxдороги  и16pxнижнего слоя 
параллакса. Что уже совсем немного,и оста─ 
валось ещё много процессорного времени для 
движения большого количества спрайтов.Хотя 
в особо напряжённых  моментах мне приходи─ 
лось  останавливать движение вообще, чтобы 
сэкономить ещё и на нём. 
   (Позже  при  помощи  асма я сделал пару
функций  вертикального  скролинга, об этом 
читайте в отдельной статье.Это уже заметно 
быстрее  и плавнее. Но для нормальной ско─ 
рости  всё равно нужно было бы делать ани─ 
мацию полосками. Flash_zx очень умело при─ 
менил  эти  функции  в своей демке Battle─ 
toads ZX_Evo .) 
   Но  при  желании  переделать движок под
стандартные шмапы типа R-Type,Zybex и т.д. 
вполне можно! 



Другие статьи номера:

Помощь - об оболочке: произошли некоторые изменения в кнопках.

Предисловие - от авторов: Прошедшие два года были очень насыщенными.

Комьюнити - ZX Spectrum: Как это было в Рязани (1980-е).

Комьюнити - ZX Spectrum: Как это было в Рязани (1991-1993).

Комьюнити - ZX Spectrum: Как это было в Рязани (1993-1995).

Комьюнити - ZX Spectrum: Как это было в Рязани (1995-1997).

Комьюнити - сценеры шутят.

Код - этюды: вызов процедур по списку адресов.

Код - 3D демы на ZX Spectrum: история развития 3д движков.

Код - 3D движок: оптимизация на прообразе 3D Construction Kit.

Код - 3D движок: фрагменты.

Код - Посекторный движок для 3D-шутера от Destr.

Код - 3D скролл на ZX Spectrum (часть 1).

Код - 3D скролл на ZX Spectrum: реализация (часть 2).

Графика - графические редакторы: Старый софт от Alone Coder'а.

Графика - палитра: Палитровые эффекты в играх.

Музыка - биперные движки: Двоичная модуляция (часть 1).

Музыка - биперные движки: Двоичная модуляция (часть 1).

Системки - история операционной системы CP/M для Спектрума (часть 1).

Системки - история операционной системы CP/M для Спектрума: ограничения (часть 2).

Системки - NedoLang: Начало - самый простой процедурный язык (часть 1).

Системки - NedoLang: Путь к самокомпиляции (часть 2).

Системки - NedoLang: Проклятие языка Си (часть 3).

Системки - NedoLang: Памяти под самокомпиляцию не хватало (часть 4).

Системки - NedoLang: ускорение (часть 5).

Системки - NedoLang: Куда плыть дальше (часть 6).

Металлолом - Знакомьтесь, ATM-turbo 3! ATM-turbo 3 (v8.0) - что это такое и с чем его едят.

Металлолом - Из истории Betadisk'а: Дисковый интерфейс от Technology Research был.

Дикий ум - Компрессия: Первые компрессоры графики на Speccy (часть 1).

Дикий ум - Компрессия: Фичи с эвристикой, Потоковая декомпрессия, Сжатие музыки (часть 2).

Игрушки - От редакции: 2017-й год вышел очень богатым на события.

Игрушки - интервью с автором игры Mickey the Basic game (Sergio).

Игрушки - квест "Неожиданное Путешествие" - взгляд изнутри.

Игрушки - Nomad: интервью с автором скролл-шутера Nomad (Hippiman).

Игрушки - Скроллинг в Evo SDK.

Игрушки - Hints & Tips: Mickey, Nomad.

Мыльница - Errata: ошибки в Info Guide #11, ACNews #65.

Письма - отзывы о журнале от: raver, destr, sirx, survivor, Ellvis, Utz и Николая Амосова.

Об авторах - Авторы журнала.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Parties?! - FunTop'99 vs Chaos Construction'99: Точка зрения.
От авторов - Свеpшилось чудо! Пpоспавшись после буpной ночи, пpоведенной за писюком, я, хоpоший/умный/добpый/пушистый и вообще самый pулез, подпаял к спектpуму ц-дос м0дем!
Всякая всячина - Реклама.

В этот день...   23 февраля