KumitekA, двух-кнопочное управления и реалистичный бой
Привет, меня зовут Денис и я инди разработчик (похлопали, некоторые достали платки).
В апреле остался без работы. Походив по фирмам, вакансии которых висят круглый год, я решил воплотить свою задумку в игру.
Дело в том что мне нравились старые файтинги Karateka, Internationale Karate, MK2 (за графику). Хотелось бы поиграть что то простое и вместе с тем реалистично. Современные файтиги совсем не просты и не реалистичны. Сами бои в прохождениях против компьютера мне играть не интересно. Да и у геймдизайнеров наверняка не было задачи сделать интересной драку на одного. На волне Киберспорт и всё такое.
Прототипов файтингов у меня было несколько. Один из них даже походовый и мне он нравился, но я решил развивать то что более близко к массовой аудитории.
Механика боя
Мне захотелось сделать реалистичную систему боя. Хотелось передать возню на короткой дистанции, где оппоненты сделав десяток ударов могут попасть куда угодно, но только не в челюсть. За основу я взял конечно Internationale Karate (1985 года игра). Именно её система с точным попаданием была ближе всего к тому что я вижу по телеку и чего я не вижу в 2д ААА файтингах.
Дело в том что важно не только дотянутся до противника (с этим у всех файтингов всё в порядке), но и не делать прямых ударов когда цель слишком близко, получится толчок, а не удар. В Internationale Karate это выглядело как промах. В MK2 меняли длинный удар на короткий автоматически и мне кажется это кощунством против реальности.
Далее я задумался о балансе. Дело в том что в реальных боях спортсмены используют разные удары, это зависит не только от дистанции (с этим у Internationale Karate нормально), но и от желания обмануть соперника и от усталости различной группы мышц.
Про то что "обманывать" компьютер в файтингах не интересно, это отдельная тема, а вот с "усталостью" можно было поработать.
Для каждого удара я сделал свою шкалу усталости. Получилось очень много полосок, подумав я сделал следующее. На экране под шкалой "здоровье", появляется только шкала усталости последнего произведённого удара. Стало намного компактнее.
Что будет когда шкала усталости иссякнет? Сначала я пошёл плохой дорогой которая вела подальше от реалистичности, я сделал что персонаж сделав удар, запас усталости которой иссяк переходит в бессознательное состояние на небольшое время (похожее на состояние перед фаталити у жертвы).Играть в такое было не интересно. Тогда я придумал следующее, пусть это будет не шкала усталости, а шкала скорости (усталость == скорость). Выражаться это будет не только шкалой усталости или ярости (которая во всех файтингах, и ничего общего с реальностью не имеет), а в скорости анимации ударов. Вот оно!
Сделать это было не сложно, я уже начал радоваться не задумываясь почему же раньше никто об этом не подумал. После того как я сделал изменения в прототипе, я понял. Дело в том что удары стали выглядеть не реалистично и персонажи через некоторое время после начала боя, становились сонными мухами.
Разочаровавшисья снова начал размышлять, как исправить такой нехороший визуальный эффект и решил что скорость удара будет постоянная, но сами удары будут наносится с неким запозданием после получения команды на удар. Чем больше скорость удара, тем быстрее реакция на управление. Как вы уже догадались получился прототип который бесил игрока. Сделав удар игрок долго не видел отклика на свои действия.
Приуныв я снова стал смотреть бои кикбоксёров. Внезапно я понял. Нужно удар разделить на две части, замах и атака. Скорость удара будет действовать только на замах, фаза же атаки будет иметь постоянно максимально возможную скорость как и в начале раунда.Всё стало на свои места. Сначала противники резво колотят друг друга, потом же каждый удар начинает даваться с трудом. Становится видно как уставший боец замахивается и вместе с тем всё выглядит относительно реалистично.
Всё сложилось, игроки вынуждены менять удары, а значит и дистанцию. Нет смысла долго колошматить воздух в надежде что игрок сейчас атакует и наткнётся на удар, как скажем в МК2, удары станут просто редкими по частоте. Ну и добавился визуальный - эмоциональный момент когда уставшие бойцы через силу пытаются продолжать бой.
Мне так понравилось отражение усталости не только шкалой, но и визуальными изменениями боя, что я стал думать как отразить шкалу здоровье визуально тоже. Пришёл к выводу что здоровье может быть отражено в стойке персонажа, когда при полном здоровье он держит высоко руки перед собой, когда же здоровья мало то руки опущены. Так как прототип был 3д , мне не понадобилось делать какие то градации. Сделав стойку с опущенными руками я её интерполирую с обычной стойкой, параметром здоровье.
Подумав о том, что же можно добавить из "реалистичности", я вспомнил что в Internationale Karate за одни и те же удары давали разное количество очков. Точно не знаю, но мне показалось что это зависело от того насколько точно было попадание. Попадания бывают разные, вскользь, шлепок когда чуть дотянулись, ну и точное попадание. Я решил это отразить и конечно не только в виде размера повреждения. В зависимости от того чем правильнее была выбрана дистанция для удара, тем дольше я проигрываю анимацию где противник получив удар делает несколько шагов назад.
Получилось хорошо. Бывало что противник чуть дёргался получив удар, бывало что отступал на несколько шагов. Мне это нравилось, одинаковая анимация из за разной продолжительности не так сильно бросалась в глаза.
Но больше всего я обрадовался позже. У меня стали получатся комбо. Раньше, при любом попадании, анимация отбрасывала противника довольно далеко и второй удар сделать не получалось. Теперь слегка попав по противнику можно было успеть сделать ещё удар. Случай редкий но возможный. Получилась система комбо которую ты сам мог строить в зависимости от ситуации. Так как скорость ударов всегда разная, в зависимости от того как часто их использовали, то нет идентичной ситуации когда начав комбо и отбивая чечётку на кнопках, ты думаешь о том что надо бы не забыть сегодня купить хлеба и доделать математику.
Управление
После того как решил с боёвкой, я перепробовал две системы управления, обе мне не понравились.
Первая классическая - крестовина и пару кнопок. Дело в том что глядя на персонажей, палец частенько съезжал с нужной кнопки, а крестовина появлялась слишком близко к краю экрана (опять же из за неправильного положения пальца за которым перестаёшь следить в пылу драки).
Свайпы мне не понравились тактильным ощущением. Они хороши когда действия ими не интенсивны, но превращаются в какую то мастурбацию если постоянно нужно кого то бить.
Тут я вспомнил о таком выдающимся явлении как двух-кнопочные файтинги. Конечно они больше походили на пародию, нежели чем на то к чему мы привыкли, но я зацепился именно за такое управление. По моему это идеальное управление для мобильных телефонов. Никаких кнопок, одна часть экрана это одна кнопка, другая часть экрана - другая.
С перемещением всё ясно, нажал правую идёшь в право, нажал в левую то влево. Быстрые касания одной из них создают не движение, а эмуляцию нажатия обычной кнопки которая отвечает за удары. Появилась проблема которая была ещё в MK2. Если хочешь выстрелить например Cкорпионом "назад" "назад" "А", перед выстрелом ноги персонажа некрасиво дёргаются.
Тогда я сделал следующее. При удерживании одной из сторон экрана, движение начинается не сразу, а запаздывает на долю секунды. Если удерживание продолжается то персонаж начинает перемещаться, если отняли палец от экрана, то удар. Всего ударов у меня шесть, с первыми двумя всё понятно, быстрое касание по одной из сторон экрана. Над получением других ударов пришлось подумать.
В итоге я пришёл к очень простому решению, которое сейчас мне кажется очевидным, но на тот момент далось с трудом. Нужно было как и в случае с перемещением, не начинать отрисовывать удар, а подождать доли секунды. Если новых команд не следовало то совершать удар, если же были новые касания по экрану то копить их в буфер до того пока не прекратятся команды. После в буфере получался код удара, например "вперёд" "вперёд" или "назад" "вперёд".
Вообще медленность реакции персонажа на свои действия ощущаешь только в том случае если персонаж до этого ничего не делал. Далее, пока персонаж совершает действие, игрок натыкивает комбинацию и как только отыгрался один удар, тут же без паузы начинается другой. Поэтому в бою динамика всё же присутствует.
Итого
В итоге получилась своеобразная игра к темпу которой нужно привыкнуть, но мне нравится. Геймплей получился именно такой, которого мне и хотелось.
Игра доступна для Android бесплатно и для ios 299р. В игре нет встроенных покупок и рекламы (разве что в кредитах указаны два почтовых ящика).
Всем сочувствующим спасибо!