Простой бой в темницах

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск

Эта статья была первоначально написана для 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