Простой бой в темницах
Эта статья была первоначально написана для Darren Hebden's RLNews
Раздел 1: Вопрос
Один из определяющих аспектов RL это - бой. Кто может сказать, что не чувствовал трепет от быстрых ударов пока эта огромная толпа не превратится в трупы на полу?
Основы боя - довольно простые, и ниже я просуммирую некоторые наиболее важные стороны простого боевого движка для RL.
Раздел 2: Основание
Наша боевая система начинается, когда игрок попытается переместиться в тайл, занятый чудовищем, или чудовище решит напасть на игрока.
В проектировании нашей боевой системы, нам нужно взять атрибуты и способности игрока и чудовища. Один из простейших путей сделать это - объединить атрибуты игрока, экипировки и любые другие магические бонусы в две оценки, Рейтинг Атаки (AR) и Рейтинг Защиты (DR).
Затем мы можем взять произвольный бросок (скажем, 1-100) и добавить рейтинг атаки, если это число (AR+RandomRoll) - больше, чем DR цели, тогда удар нанес ущерб или забрал энергию... (Смотри Раздел 3: OW!)
Трудная часть такой системы - это балансировка рейтингов... Но, это вероятно трудная часть любого части игры... ;)
Пример AR расчета:
AR = (Сила / 4)
+ Модификатор на базе Класса & Уровня (Больше AR для Воинов)
+ Любые бонусы предоставленные снаряжением
Пример DR расчета:
DR = (Ловкость * 4)
+ Модификатор на базе Класса & Уровня (Больше DR для Воров)
+ Любые бонусы предоставленные снаряжением
Мы можем также разрешить персонажам или чудовищам более высокого уровня наносить несколько ударов за раунд...
Раздел 3: OW!
Как только удар оценен, пора нанести удар.
Простейший путь представить здоровье и ранения в RL - это диапазон чисел представляющих ущерб игрока или чудовища, которые нужно получить чтобы умереть. Обычно (Благодаря D&D), они называются HP. Игрок и все чудовища будут иметь некоторую сумму HP.
Благодаря настольным RPGs, есть общая номенклатура для представления произвольных чисел.
Если Вы не играли или не видели настольные RPGs, для Вас может быть сюрпризом, что кубик может иметь различное количество сторон. Есть 4,6,8,10,12,20, и даже 100 сторонный кубик...
Обычно в настольных играх RandomRoll представлен как:
XdY где:
X = количество бросков кубика
Y = количество сторон кубика...
Если мы хотим представить 3 восьми-сторонных кубика, это должно быть 3d8,
6 четырех-сторонних кубиков - 6d4... И так далее...
Таким образом 3d8 будет давать случайное число в диапазоне
от 3 (3 броска по единице) до 24 (3 броска по 8).
Мы можем увидеть в этом преимущество для своих целей:
class Die
{
public:
void Roll( void ) { Number = 0; Type = 0; };
void Roll( int x, int y ) { Number = x; Type = y; };
int Number,Type;
int Roll( void )
{
int x;
int acc;
for( x=0;x<Number;x++ )
{
acc += GetRandom(1, Type);
}
return acc;
}
};
Всякий раз, когда наносится удар, нужно вычитать HP основываясь на оружии или существе, которое наносит ущерб...
Для примера:
Оружие:
Dagger - 1d4 повреждения
Sword - 1d8 повреждения
BIG Stick - 2d6 повреждения
Существа:
Kobold - 1d3 повреждения
Griffon - 2d8 повреждения
BIG Monkey - 2 удара по 3d6 повреждения
Это - простой боевой движок для RL. Сам он является легкой частью, балансировка которого - развлечение!... hehe
Автор: Brian Bucklew.
Источник: Simple Combat In The Dungeon.
Перевел: Сергей В. Ждановских [Alchemist], 16.06.2005.