Ignite – создание персонажа

Создаю экран генерации персонажа! Как вы видите – это только заготовка, потому что я все еще колеблюсь в решении того, как в Ignite будет создаваться персонаж: будут ли жестко заданные классы к которым будут привязаны определенные навыки или же навыки можно будет свободно выбирать во время генерации?

С одной стороны второй подход создает большее ощущение свободы, а с другой – возможность создания персонажа шансы которого выжить в подземелье изначально стремятся к нулю. С другой стороны, если сделать достаточное количество классов, то все интересные комбинации навыков можно успешно объединить в несколько необычных классов. Минусов у первого подхода я не вижу. Буду продолжать думать.

ignite

В итоге решил остановиться на классовой системе с возможностью (в будущем) создавать свой собственный класс (это будет опция для тех, кто понимает, зачем им это нужно). Справа оставил пустое место для добавления меню выбора спец особенностей персонажа (типа traits из Fallout или background из Dragon Age) – это тоже в планах на будущее.

Ignite – система лута

Лут еще не падает из мобов, но его уже можно собирать из симпатичных менюшек)

ignite

Добавил возможность создавать анимированные объекты (этого конечно не видно на скриншоте, но энергетический болт, которым стреляет в игрока маг, изменяется во время полета):

ignite

И в завершении дня, мы имеем:

  • переработанную систему вещей, включая вещи, лежащие на полу подземелья и выпадающие при смерти из монстров, вместо системы с сундуками и автолутом при смерти монстра
  • возможность создания анимированных эффектов
  • доработанная система времени, где игрок и монстры имеют разную скорость перемещения и наносят удары(или стреляют) также с разной частотой.

ignite

Ignite – предметы в подземелье

ignite items

Сегодня сундуки с лутом были заменены на предметы, которые лежат на полу подземелья. Генерация предметов была перенесена из эвента открытия сундука в цикл генерации подземелья.

Сундуки я не планирую полностью выбрасывать из игры, они будут повторно введены в более поздних версиях, когда будут доступны навыки и возможность для взлома сундуков (т.е. они будут изначально закрыты. Зачем что-то прятать в сей и не запирать его).Также вещи на полу получили такие вот “няшные” подсказки.

Я планирую, что в одной клетке может лежать сразу несколько предметов, т.о. всплывающая подсказка будет динамически расширяться для большего числа вещей. Более 1 предмета в клетке может быть в результате дропа с монстров, над которым я сейчас и работаю.

Ignite – тайлы стен и курсор

Ignite tiles

Как видно из скриншота, перерисовал тайлы стен. Теперь их больше одного и есть зависимость от соседних тайлов. В очереди теперь стоит добавление маленьких эффектов, которые сделают картинку менее однообразной.

Также добавил в основную процедуры отрисовки кадра интерактивный курсор, который подсвечивает клетку, на которую собирается перейти игрок, или npc, которого игрок будет атаковать (сейчас работает несколько некорректно в связи с отсутствием возможности вести игроком бой на расстоянии).

Ignite – дальний бой

Полностью ввел в игру дальний бой для npc. Для игрока еще думаю с его формами (я хочу реализовать что-то типа того, как это выглядит в Dungeon Crawl`e) и реализацией. К сожаление (или счастью!) перед появлением луков в руках игрока, нужно еще реализовать появление предметов на карте подземелья, а так же грамотную систему лута с мобов (двуручный топор с черепашки? нет, сер, не в этой игре :) )

Ignite ranged combat

И совершенно в довершении вечера, пришла мне в голову мысль немного оформить то, как отрисовываются npc в игре – я добавил короткое имя монстра на карту так, что оно теперь всегда видно. По-моему получилось здорово!

ignite screenshot

Ignite – бой на растоянии

IgniteВчера я долго и упорно вводил в Ignite возможность организации боя на расстоянии (и в итоге у меня все получилось). По-началу я не мог нормально реализовать алгоритм вычисления линии обзора, однако, чуть позже вспомнил, что на самом деле он у меня уже единожды реализован для вычисления степени освещенности игрового поля вокруг игрока, и этими данными я смогу воспользоваться вновь!

В результате, сейчас в игре появился первый монстр, который использует лук и атакует игрока с расстояния. Теперь необходимо реализовать поворот спрайта стрелы в соответствии с координатами монстра и игрока.

Ignite – то, о чем я давно мечтал

Ignite

Сегодня добавил в Ignite пару мелочей и схематический градиент от игрока до границы области видимости. Это изменение позволит в дальнейшем создавать, как статические источники освещения, так и динамические эффекты от работы механизмов или воздействия заклинаний.

Ignite – классификация персонажей

IgniteОтмечаю сразу, что все написанное тут полностью соответствует не только не-игровым персонажам, но и самому игроку, т.к. последний также является просто персонажем, который получил управление. В Ignite npc имеют следующие характеристики:

  • Уровень. От уровня зависит общая сила монстра. Этот уровень не нужно приравнивать уровню игрока. От уровня зависит шанс появления монстра на уровне (высокоуровневые противники не могут появиться на начальных уровнях подземелья). Значение уровня – это та численная характеристика, которую игрок получает, как опыт при убийстве монстра.
  • Выносливость. Влияет на численное значение здоровья монстра.
  • Сила. Численная оценка силы монстра. Непосредственно увеличивает урон на 0,5 единицы урона за 1 ед. силы. Увеличивает шанс блокировки щитом (при наличии щита) и увеличивает шанс пробить блок щита противнику.
  • Ловкость. Увеличивает шанс попасть по противнику и увернуться от его ударов. Более высокие значения ловкости  позволяют выполнять действия быстрее.
  • Интеллект. Влияет на магические способности, скорость роста навыков (еще нет в игре) и защиту от магии.

Игрок не может увидеть численные значения трех последних характеристик для конкретного монстра. Он только видит описание, основанное на сравнении его с данным персонажем (например: кобольд слабее вас, но быстрее). Также игрок не видит численного значения здоровья монстра и может только качественно оценить его. Подобная система сделана не для того. что бы запутать игрока, а скорее наоборот – освободить его от необходимости думать об различиях силы 11 и 14.

  • Атаки. Игрок и монстры могут наносить до 4х атак за свой ход. На данный момент все атаки описываются, как физические(и только змейки и Брольн бьют ядом и элементальной магией), но я собираюсь добавить описание типов атак в data-файл. Атаки:
  1. Физическая (стандартный тип атаки)
  2. Кровотечение (в основном включается от использования специальных способностей, игнорируется броней, не может иметь сопротивления, но определенные существа, не имеющие крови, полностью не подвержены данному типу урона)
  3. Яд / Кислота
  4. Магия
  5. Элементальное воздействие
  • Сопротивления. Сопротивление персонажа к той или иной атаки или виду магии.
  • Размер персонажа – характеристика, которую только нужно добавить. В данный момент в игре присутствуют персонажи среднего и больших размеров. Размеры:
  1. Крошечный (феи)
  2. Маленький (хоббиты, кобольды)
  3. Средний (человек)
  4. Большой (огр, нага)
  5. Огромный (гиппогриф)
  6. Гигантский (гиганты)
  7. Громадный (дракон)

Персонажи меньшего размера более ловкие, большего – сильные. Игроки маленького размера имеют ограничения на владение оружием. Игроки большого размера имеют ограничение на использование определенной экипировки, которая не подходит из по-размеру.

Ignite – Tooltips!

Изменения в графическом движке позволили с легкостью выводить на экран интересную и полезную информацию. Один из таких способов – это всплывающие подсказки, вывод которых я сегодня и реализовал.

Ignite Tooltips

Ignite – дневник разработки

Сегодня утром вернул игроку весь функционал, который присутствовал в версии 0.02, и который я был вынужден обрезать из-за переписывания графического движка. На данный момент нет обработки событий npc (из-за того, что я пока так и не реализовал новую систему времени) и перехода с уровня на уровень.

ignite

В конце дня добавил таки примитивную систему времени, а также перемещение и атаку не игровым персонажам. Так как npc теперь генерируются не тогда, когда появляются в поле видимости игрока (как было в версии 0.02), а все время присутствуют на карте, то теперь они получили новую логику поиска игрока. На данный момент она отлично работает и приводит к окружению игрового персонажа:

ignite