Блок в битэмапах
Копался в своем блоге, нашел старый пост (2008-й год), который, возможно, будет кому-то интересен.
Прежде всего, битэмап это не файтинг, тактического боя здесь нет как такового. Удары распознаются компьютером просто как удары, а не как «удар по ногам», «удар в голову» или «в туловище». То есть никакого деления на уровни нет. «Просто удар», против которого может существовать только один вид блока — «просто блок».
Если в любом известном вам файтинге приходилось как минимум приседать, чтобы отбить удар по ногам, в битэмапах можно просто отбить атаку. В файтинге нельзя просто «стоять в блоке», потому что удары идут по уровням и их приходится «блокировать». Конечно, в битэмапе второй противник может зайти за спину, и тогда блок не поможет.
При вводе «блока» в игру нужно четко понимать всю специфику битэмапа.
Что-то такое файтинг? Файтинг это «Брюс Ли против Чак Норриса в Пути Дракона», «Кровавый спорт»
или «Кикбоксер». Что такое битэмап? Это Джеки Чан, Само Хунг и иногда Марк Дакаскос.
Возможно лучший файтинг
Битэмап
Что я имею в виду. Сама энергетика боя отличается существенно. Битэмап это ураган, это Тасманский Дьявол, запущенный в загон с курами. Это постоянная атака. Постоянная. Здесь нет места на размышления, стратегию и тактику. По большому счету, блоку места в битэмапе тоже нет. Если только хаотичному блоку, блоку, получившемуся словно случайно.
Большинство игр придерживаются этого подхода, и блок в них отсутствует как класс. Это Streets of Rage, Final Fight, Mighty Final Fight, TMNT, Golden Axe — игры, давно уже ставшие классикой жанра.
В общем-то, попытаться хоть как-то внедрить блок решились только техносовцы (Technos Japan Corp). Наверняка не только они, но других известных попыток я так сразу и не припомню.
В конце 80-х в супер-хите Technos Japan Downtown Nekketsu Monogatari (DNM) блок был. И реализован он был очень интересно, так, как никто ни до ни после не делал. Вообще говоря, Technos Japan основоположник битэмапа как жанра, и учиться секретам мастерства стоит прежде всего у них.
Вернемся к DNM.
Downtown Nekketsu Monogatari
Блок делался той же кнопкой, что и наносились удары. У персонажа была характеристика, отвечающая за блок. Во время удара противника игрок нажимал на одну из двух ударных кнопок (одна на руки, вторая на ноги), рэндом совещался с вышеозначенной характеристикой, и персонаж либо пропускал, либо отбивал удар.
Во многом это инновационный и очень правильный подход, как нельзя лучше передающий дух битэмапа.
Игрок не должен отвлекаться на блок. Его задача — атаковать. Я чуть ниже вернусь к этом подходу, так как думаю, что лучше вначале разобрать оставшийся третий вариант, после которого станет ясно, чем же так хорош этот.
Третий вариант это блок по кнопке.
Нынешние трехмерные игры поголовно используют этот подход, предложенный Техносом еще на SNes (Super Double Dragon). Описывать его бессмысленно, давайте поговорим о минусах.
Super Double Dragon
Отдельная кнопка на блок это потеря темпа. Вы знаете, как ведет себя АИ в подобных играх. Он безбожно тупит, причем делает это намеренно, чтобы игрок почувствовал свое превосходство. Главное, в чем это выражается — крайне редкие атаки.
Чтобы блок вообще имел смысл, атаки должны быть частыми. Именно поэтому блокировать в файтингах становится интересно на высоких уровнях сложности. На easy предугадать, когда рэндом подскажет противнику ударить — невозможно. Большую часть времени противник стоит, ожидая наказания. По большому счету, можно положить джойстик на пол, пойти поставить чай, посмотреть серию Симпсонов, вернуться и застать практически неизмененную полоску энергии. У обоих противников.
Чтобы блокировать, враг должен бить. А в битэмапах предполагается, что бить будет игрок.
Поэтому блок на кнопку абсолютно бессмысленен. Неожиданный удар противника отбить вряд ли удастся, а ждать от него хоть какой-то серийности глупо. В битэмапах компьютер действует одиночными ударами. И для этих одиночных ударов как нельзя лучше подходит блок на ударную кнопку.
Он не отвлекает. Он получается почти случайно. Он вписывается в динамику боя. Если добавить разные анимации блоков, на разные виды ударов (справа, слева, в живот), получится «Полицейская История». Ну или очень близко к ней.
В итоге мы имеем три подхода, и каждый из них имеет право на жизнь. Великолепные игры получались при применении каждого из этих подходов. На мой вкус, правда, блок на кнопку проигрывает остальным. Возможно только из-за АИ противника. Возможно вообще как концепция.
- 21 марта 2012, 09:38
Второй способ мне нравится. Если он еще и анимирован не как простой удар, то вообще отлично)
В смысле? Он анимирован как блок. Ты нажимаешь на ударную кнопку, а он делает блок. В ДНМ нельзя бить одновременно с компом, там почти рпгшная система. Либо ты бьешь, либо комп.
Я не играл, потому и написал "если")
Сложилось впечатление, что при срабатывании блока персонаж просто бьет и прерывает удар непися. Рад, что не так)
Почему ты так упорно используешь японское название River City Ransom? Даже если у кого-то и был японский картридж, вряд ли они могли знать, как называется игра на латинице :)
И да, когда уже напишешь про псевдотрехмерное пространство и физику в нем? Как сделать "простой" битэмап с прыжками на ровном полу и правильной обработкой столкновений у меня есть идея, не знаю, насколько правильная, но вот интересно, как сделать более сложное пространство, как в том же RCR\DNM (с запрыгиванием на выступы).
Потому что у нас в детстве был именно японский картридж, а RCR я не признаю. Ну и я фанат техноса, если так можно выразиться. А истина именно в японских похождениях Кунио-куна.
У меня был японский картридж Bare Knuckle 3 и я тоже не признаю Streets of Rage (хотя бы из-за цензуры :)), но все таки, ради лучшего взаимопонимания, использую западное название.
Как фанат техноса я не могу себе это позволить.
К слову о битэмапах, цензуре и шизанутых японцах
Веселуха начинается с 0:30 http://www.youtube.com/watch?v=vKDIXDDRMqw&feature=related
Японцы жгут, как всегда! :D
Чего-то когда я начинал цикл про создание битэмапа, никаких просьб не поступало. Только от товарищей, которые в принципе поддержали само начинание, и не были сильно заинтересованы в разработке именно битэмапа.
Теперь уж и не знаю когда расскажу.
Я об этом начал думать как раз после твоего цикла :)
Хоть в чем-то от него была польза, значит )
Хэй, я хочу делать битэмап.
Просто сейчас у меня не самое лучшее время - выпускной курс, полторы недели до сессии и выхода на практику, так что курсовая, аттестации, диплом и прочее. Когда получу допуск до сессии, защищу курсовую и предзащищу диплом (примерно две недели на все), выйду на сессию и буду делать из своего прототипа трубного шмапа полноценную игру.
А битэмапы мне нравятся и у меня есть идеи как их делать.
Если просчитывать именно столкновения спрайтов, то это сожрет немало ресурсов и не так просто реализовать такой просчет, учитывая что пространство-то у нас изометрическое.
Поэтому я для себя нашел очень удобный выход когда точность столкновения краев несущественна - просчитывать разность координат. Это я кстати в прототипе шмапа и реализовать (работает отлично). То есть нам нужно всегда брать разность координат центра основания спрайта (благо координаты у нас всего две) и просчитывать разницу с координатами центра основания спрайта игрока (это ведь главная точка измерения) отдельно по обоим осям. Ставить условие если разница по Х (горизонтальная, например) меньше определенного числа (размер игрока у нас фиксированный, но противники разные, так что каждому классу противника нужно индивидуальное значение) и при этом разница по Y (вертикальная) меньше, допустим, 5-ти (тут для всех противников все одинаково), то удары игрока будут засчитываться, в противном случае они уйдут в воздух (хоть и с анимацией).
Такой метод гораздо дешевле столкновения, проще для реализации и интуитивно понятен.
Простые AABB-коллизии особо никаких ресурсов не жрут и довольно легко реализуются, но дело не в этом.
В битемапах обычно можно прыгать, т.е. получается псевдотрехмерное пространство. Очевидно, что если для передвижения "вверх" и для прыжка просто использовать перемещение по Y, то это приведет к таким нарушениям перспективы, как столкновение в прыжке с объектом, который в перспективе просто стоит дальше ("выше").
В принципе, у меня есть решение, только не знаю, насколько оно топорное или приемлемое.
Просто учитывать третью координату и считать пересечения только для объектов близких по смещению в глубину.
Вот именно.
Добавить переменную z, в которую записывать значение координаты y, если персонаж двигается пешком, и не записывать, если он в воздухе...
Я думаю о другом. Как я понимаю, для более точных просчетов столкновений используются по два хитбокса на персонажа
Так вот, я думаю, чтобы в пешем режиме привязывать спрайт к нижнему боксу, а не наоборот, и управлять для движения боксом. А спрайту сделать поведение, как в платформере, но только для прыжка, причем в качестве земли будет выступать нижний хитбокс. А столкновения с противниками теперь обрабатывать, только если оба бокса пересекаются (вообще-то, я думаю скорее о пиксельных масках, вместо хитбоксов, для еще более точных столкновений).
Это более тяжеловесный вариант, конечно, но, мне кажется, более точный, и так я хотя бы могу более ясно предсказать поведение объектов в любой ситуации.
Еще я подумываю о рельефной местности с помощью карты высот (в виде невидимого градиента). Но это будет как в думе, только выступы, без платформ, под которые можно зайти, а не только запрыгнуть.
Пиксельная маска это ж жуть для битэмапа. Разве что это лично желание автора, но я за экономию)
Хотя в целом идея с хитбоксами неплохая. Мне проще с координатами работать (все равно получается квадрат), но хитбоксы удобны, если есть хорошие инструменты для них.
Я не думаю, что на современном железе будут проблемы с масками, если только не заполонять экран сотней спрайтов 256х256, конечно.
Я не о том, просто зачем?
Зачем так сложно?
Прорисовывать игрока в координатах (x, y-h), где h - высота, а проверять столкновения по обычным x и y (оно же - глубина). Менять h от прыжка и падения, а x и y от управления стрелками/крестовиной.
А статейка хорошая.
Хорошо написано.
Отличная идея проиллюстрировать различия файтинга и битэмапа примерами из кино. Оказывается, я давний и большой поклонник битэмапа в фильмах (преимущественно в исполнении Джеки Чана).
Проиллюстрировать файтинг лучше было бы все-таки Брюсом Ли, или Ван Даммом. Но у Джеки Чана с Уркидесом получился близкий к идеалу файтинг, поэтому не смог удержаться )
Вот, пожалуй, лучшая битэмап киносцена всех времен и народов :)
http://www.youtube.com/watch?v=VwIIDzrVVdc
Хорошая, да.
От-тличная сцена. Действительно круто. Может, из-за музыки или гаммы? Да и герой харизматичен. Пошел качать целиком.
Фильм тоже крутой. Несколько тяжеловатый в психологическом плане, не боевичок.
Сцена крута из-за всего. Кстати, снята одним дублем, без монтажа. После первого просмотра почти 9 лет назад, до сих пор не укладывается это в голове. Впрочем, как и весь прекрасный фильм.
Википедия говорит, что ножик-таки был нарисован на компьютере.
Много корейцев дубасят палками другого корейца. Всё это под задумчивую музыку.
Отличная сцена, да))
Мсье поклонник артхауса с глубинным смыслом™?
Та не, я как раз больше по трешу)
Например?
Что например? Ты про фильмы?
Покажи треш, который тебе нравится.
Пусть фильмы, хотя битемап-игры тоже неплохо.
Не знаю ни одной треш-битемап-игры, потому что не интересуюсь жанром.
Из фильмов: "Шоу ужасов Рокки Хоррора", "Шоковая терапия", "Мачете"
+ из фильмов еще зачетный "House of 1000 Corpse"
Из треша самое ужасное что я видел это "Атака куриных зомби", даже не знаю как оно там в оригинале называется...
В оригинале что-то вроде "Полтергейст" было...
Да, для меня, как не особого знатока, этот фильм — образец жанра.
Я чуть не умер от ужаса пока его смотрел.
А чё не выключил?
Тогда придется бороться со страхами что вдруг оно здесь в комнате, а в кино их убьют, и бояться будет нечего )
Специально смотрел))
В Comix Zone хорошая боевка была, и блок на кнопке. Хотя это больше файтинг с элементами.
Да, там больше один на один. Он ближе к файтингу.
А боевка-то отличная и довольно оригинальная, как и сама игра.
Круто )
Diablo2 конечно не файтинг, но блок там есть и реализован он по принципу чем выше умение, тем больше шанс. Игра динамичная получилась.
Только почитав статью оценил важность этого момента в играх, раньше даже не замечал )
Это все замечаешь, в основном, когда пытаешься сделать игру в конкретном жанре. Начинаешь разбирать механику топовых игр, и мало-помалу находишь все эти мелочи.
Пока я не занялся разработкой, то не обращал внимания даже на то, как персонаж, к примеру, стреляет. По нажатию клавиши, или по отпусканию. А разница-то ведь огромная для игрока.
Вспомнилось, как на один из гаминаторов я решил делать шпам, как один из простейших вариантов. После небольшого исследования особенностей жанра отказался от этой идеи :)
В смысле, шмап? А что за особенности? Вроде довольно простой жанр.
"шпам" :D
Вот мне тоже казалось, что простой