Концепция механики для Текстово-Тактического Слэшера
Так как совсем не разбираюсь в написании кода, а он требуется не из легких. Тем паче, придется оный время от времени править. Решил написать сюда концепцию механики игры в надежде найти соавтора умеющего делать то, чего не умею я :D
Механика боя
Для игр подобного жанра довольно свойственна направленность на бой, который по сути и определяет сей жанр.
В данном жанре бой имеет свои особенности:
1) Разнообразность - возможность использовать разнообразные удары.
- a) Это вполне можно реализовать довольно простым способом, собственно добавлением этих самых ударов. Вместо одного “Ударить”, добавляем несколько, условно назовем их Атака 1(А1), Атака 2(А2), Атака 3(А3) и Атака 4(А4) + Блок. Можно продолжить, но пока этого хватит.
- б) Следует помнить, что в слэшерах разнообразие не столько визуальное и “кнопочное”, сколько игромеханическое - каждый удар имеет свои плюсы и минусы, начиная от простых “сильный + медленный” и “слабый + быстрый”, продолжая атаками с эффектами (отбрасывающие, захватывающие, добивающие, дальняя и т.д.) и заканчивая специальными режимами, дающими дополнительные возможности герою или просто усиливающие его. В результате пускай будет: А1 - Быстрая, А2 - Сильная, А3 - Отбрасывающая, А4 - Дальняя.
2)Зависимость от игрока - Результат боя да и сама схватка в полной (или почти полной) мере зависит навыка игрока, а не от генератора случайных чисел.
О потенциале атаки и скоростях
О скорости:
Каждая атака имеет свою скорость которая измеряется в мгновеньях(М) - это то время за которое атака осуществляется, у игрока она отображается числовым значение при выборе атаки, значение же противника скрыто о игрока, а вместо его игрок видит шкалу готовности атаки, примеры:
[//////А], [//А], [//////А] - примеры полных шкал, то есть на момент атаки.
[/// А], [/// A] - примеры не полных шкал, атаки еще не было.
Где каждый слэш означает некое индивидуальное, для каждого типа противников, количество М. Это необходимо для повышения сложности нового типа противников при их появлении и понижения в последующем, когда игрок уже примерно будет знать эту скорость.
Дабы пояснить подробнее, почему одни слэши черные (обычные), другие красные, нужно рассказать о потенциале атаки.
Потенциал атаки:
Полностью зависящий от игрока параметр, у игрока есть некое количество комбо-очков, из которых и задается потенциал атаки в пределах от 1 до 10, после или при выборе атаки. Потенциал атаки сравнивается с потенциалом защиты (от 0 до 9)
противника и если он больше, то атака прошла успешна в зависимости от близости к потенциалу защиты дается бонус к урону.
Больше на 1 - Идеально - двукратный урон (при потенциале защиты 9 и 8 заменяется на Хорошо)
Больше на 2 - Отлично - увеличивает урон на половину (при потенциале защиты 8 заменяется на Хорошо)
Больше на 3 - Хорошо - увеличивает урон на четверть
Больше на 4 и 5 - - нормальный урон
Больше на 6 и далее - Плохо - половина урона.
Данное, как и ограниченное количество комбо-очков стимулирует не ставить только 10ки чем усложняет бой уменьшая скуку.
Вернемся к Шкале атаки:
Шкала атаки имеет 3 зоны - Выжидание (черные), Подготовку (красные) и собственно атака (А).
Во время Выжидания потенциал защиты у противника высок, но за провалом последует лишь блокирование атаки игрока.
Во время Подготовки потенциал защиты ниже, а после провала срабатывает атака противником игрока.
Во время Атаки, если персонаж игрока рядом с противником и не активирован блок - игрок получает повреждение.
Как видим, эффект случайности не задействован, все зависит от выбора игрока и продуманности его атак, основанных на знаниях полученных опытным путем.
3) Бой в реальном времени - Возможность боя в реальном времени отсутствует, посему его компенсирует поэтапный бой где каждый ход все действия осуществляются одновременно, атака персонажа отсчет мгновений у противника, а не пошаговым образом, а-ля “игрок > враг > враг > враг > игрок”, давая время на продумывание дальнейших действий, имитируя при этом бой в реальном времени.
4) Комбинации атак — это можно реализовать задав после второй удачной атаки - надпись вида “Combo 2” и так далее, пока не кончатся комбо-очки, после чего придется начинать новое комбо с полным набором очков, а также пока персонажа не ударят. Опционально — бонус к урону, более быстрые удары и т.д. за набор высоких значений.
5) Красочная графика — До недавнего времени считал это существенной проблемой, а ответ лежал на поверхности в этой механике. Она не описывает красочный бой, она его обыгрывает, а большего и не надо, задав абстрактные описания атак а-ля “мощным ударом сбивает врага с ног”, воображение игрока может само все доделать, показав ему наилучшую из возможных сцен. В последующем это все равно превратится в тактику по уменьшению hp противника и сохранению своих.
Как примерно это будет выглядеть и дополнительно:
Игровой экран сражения:
Spoiler
________________________________________
Жизни 170-6=164| Комбо-очки 26| Базовый урон 13
Combo 2
Рядом:
Воин (47) [/// A]
Воин (60-26=34) [/ A]
Монстр (110) [////// A]
На удалении:
Воин (60) [>>]
Метатель ножей (55)[//// А]
Далеко:
Лучник (40) [////A]
Лучник (40) [// А]
_______________________________________
Экран выбора атаки:
Spoiler
________________________
Комбо-очки 35
Цель:Воин (47) [//// A]
Описание
-Блок
-А1 Скорость 26 Урон +0
-А2 Скорость 42 Урон +5
-А3 Скорость 37 Урон +3, Противник переходит в “на удалении”
-А4 Скорость 33 Урон 11
-Увеличить расстояние
_________________________
По сути подобная механика самостоятельна и может быть адаптированна в разные игры и сюжеты с ближним боем.
Кто, что думает по поводу подобной механики? Если непонятно - спрашивайте :D
И да, подобное вообще реализуемо? :D
Ах да. Я планирую так же добавить в движок возможность включения разных эффектов. Как то: регенерация, отравление, случайные воздействия, воздействия местности и прочее. Нужно ли это тебе? Для себя я сделаю, если мне захочется использовать подобную механику, но упираться сейчас и ломать себе мозг, если это никому не пригодится в ближайшем будущем, не буду.
Aleks Versus:
Нужно ли это тебе?
Я бы не отказался бы от регенерации и отравления, а также от эффекта а-ля парализация на некоторое время :D
Aleks Versus:
что при удачной атаке героя должно прерываться действие противника?
Да, именно так, а так-же при не удачной атаке по блоку.
Aleks Versus:
Контратаки даже не представляю как решить пока.
При неудачной атаке в ярких - можно просто активировать атаку (или даже задать отдельное число для нпс, отнимаемое за контратаку у героя, а затем сброс как и выше. Это позволит создавать противников как сильных в контратаке (это число больше чем средний урон), так и слабых (соответственно меньше).
Aleks Versus:
а вот насчёт пробелов - это я подумаю.
Можно заменить пробелы палкам “|” получится принцип домино [////|||А]
Aleks Versus:
Это расходится с основной концепцией - на каждое действие должно тратиться время. Если на перемещение будет тратиться “ход”, то какие действия при этом сможет совершить враг?
Немного неточно описал, задать на среднестатистическое перемещение (ход), например это перемещение на 4-5 метров, определенное время, и только этим ходом с определенным временем перемещаться. Просто столько разных понятий относительны и всем кроме автора - неизвестны. А рядом, не рядом и далеко, вполне определенны для большинства аки дотянусь, не дотянусь и лень туда идти. А к примеру “рядом” и “в двух шагах” для одного могут значить одно и тоже, а для другого представлять колоссальную разницу - игрок же мысли автора не читает, да и не автор он вовсе.
Aleks Versus:
По-моему это лишает некоторой гибкости в выборе оружия.
Для слешера вполне нормально, для рпг - да проблема.
Aleks Versus:
но как, в таком случае, ты будешь их атаковать, если у тебя нет под рукой крылатой ракеты?
Пульну тем, что предлагает игра, например магия или лук, в слешерах, обычно все сцены заранее продуманы и просчитаны, посему если в ни нужно будет стрелять, то чем - уже будет в наличии.
Aleks Versus:
Что ты имеешь против доспехов?
Ничего, но это просто лишние цифры, которые придется учитывать всегда и везде, а нужны по большей части, для декора.
Хотя опять таки зависит от жанра.
Aleks Versus:
Я против статичных чисел, но хозяин-барин. И если вдруг окажется, что сил у героя недостаточно, чтоб отнять у вражины даже единицу здоровья - пеняй на себя. big_smile
Для того, чтобы подобного не было и нужен баланс, да и зачем делать их такими огромными. А вот балансировать монстра проще и менее извращеннее, давая ему -14 на получаемый урон при хп в 300, и среднем уроне героя в 30. (можешь посчитать, сколько нужно добавить ХП монстру, чтобы было такое-же количество ударов). А ведь монстр с 300 хп и монстр ~600 вполне разные для игрока. Да и бонусы к урону будут игромеханически отличаться при процентах и статичных числах.
Дабы особо не замачиваться можно сделать максимальною броню равной половине урона героя (на данном этапе) - 1, и лишь единичным супербронированным противникам давать более высокие значения.
Aleks Versus:
Э.. А того, что там и так выводится недостаточно? Или это должно быть что-то вроде итога?
Одним достаточно, а другие в середине боя, с ужасом узнают, что у них уже менее половины здоровья :D, так что лучше сообщать, когда по головке бьют и насколько существенно, и в логе :D
Ок. Прочитал и внял. Жалко конечно убирать такие красивые формулы. :D Но ладно, исправим.
Вопрос по балансу задам в следующий раз.
если вдруг окажется, что сил у героя недостаточно, чтоб отнять у вражины даже единицу здоровья
Вполне реальная ситуация, и совершенно нормальная для РПГшек.
На работе в этот раз был полный аврал, не успел толком ничего сделать. Отделил непосредственно движок от игры, решил передачу параметров, прикинул насчёт “в слешерах, обычно все сцены заранее продуманы и просчитаны”. Поправил “экран сражения”, теперь блок визуализации можно будет скрывать и работать непосредственно с одним логом боя, так же его можно будет пролистывать, просматривая предыдущие раунды. Возможность переключения в режимы полного действительного лога сражения и полного лога визуализации оставил. Обновлённую версию пока не выкладываю.