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

Ignite – изменения интерфейса

В олд-скул рогаликах о нанесенном игроком уроном принято писать напрямую: “Вы попали по серому орлу и нанесли ему 7 единиц урона. Серый орел слабо ранен”. В моей игре я постараюсь изменить этот устоявшийся элемент интерфейса пользователя. Мне кажется, что игроку будет удобнее и комфортнее увидеть глазами одну цифру, нежели пробегать глазами длинные строки с описанием исхода боя. Выглядеть это будет следующим образом:

Подобные цифровые сообщения анимированы и имеют разный цвет (в зависимости от типа повреждения).

Кстати, ищу информацию по тому, каким образом можно разнообразить одинаковые тайлы пола и стен, чтобы их однотипность не мозолила глаза. Скорее всего введу дополнительные неигровые предметы на пол и стены.

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

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

Ignite fov

Ignite 0.02

Презентую вам новую публичную демонстрационную версию Ignite 0.02.

Скачать

Что вошло в эту версию?

  1. AI монстров. NPC  преследуют и атакуют игрока
  2. Алгоритм расчета области видимости
  3. Более широкий набор предметов(более 15 базовых типов) и разновидности монстров(2 фракции). Система генерации предметов
  4. Большие изменения в боевой системе (более 9000 наименований)
  5. 3 новых таланта в первом тире талантов. Возможность в течении игры изучить до 4-х талантов из 9 (на выбор игрока)
  6. Несколько новых уровней с элитным противником на 5-м уровне
  7. Контейнеры предметов на карте, сферы здоровья заменены на лечебные зелья, которые могут быть использованы позже в течении игры
  8. Широкие изменения в интерфейсе пользователя, добавлены горячие кнопки для активируемых способностей и предметов.

Ignite – разработка после версии 0.02

Публичная демонстрационная версия 0.02 уже практически готова, а я продолжаю разработку. В версии 0.03 Ignite будет обновлен графически – исчезнут задержки при перерисовке, будет изменен алгоритм отображения тайлов, полноценная зона видимости, а также (я на это очень надеюсь) я смогу представить вам первые заклинания, стрелковый бой, а также спецэффекты с этим связанные.

А пока в первый вечер работы над графическим движком, я представляю вам смешной (как мне кажется) скриншот бага двойного буффера:

Ignite double buffer bug

А также могу продемонстрировать работу движка эффекта частиц, которые в данный момент привязаны к тайлам npc. На скриншоте этого не видно, но они двигаются и на этот раз движок выдает приемлемое быстродействие. Так что, думаю, проблем с созданием заклинаний не возникнет. Осталось только нагуглить нормальной информации по созданию красивых particle-эффектов.

Ignite particle effect

Ignite – Хоткеи

Только что добавил и отладил работу хоткеев в Ignite.

ignite hotkeys

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

Зеленая подсветка клавиши означает, что абилка активирована и будет включена по завершении хода, красный – не хватает ярости/маны(ресурса), черная – абилка активируется по нажатию клавиши и конец хода ждать не нужно.

Довольно быстро удалось реализовать это изменение, зато сколько удобства оно приносит в интерфейс пользователя!

Ignite – версия 0.02 практически готова!

Несколько строк кода для всего человечества и большой шажок для Ignite! :) Сегодня я реализовал систему, в соответствии с которой, не игровые персонажи будут получать в свое распоряжение уникальные способности. На данный момент уже 2 вида npc имеют их: змеи получили ядовитые укусы (а значит величина брони не будет учитываться при их попаданиях), а также в игру введен первый элитный противник – шаман Брольн:

Шаман будет встречаться на 5м уровне подземелья в личных покоях. Он имеет несколько уникальных способностей: атаку на расстоянии, которая прерывает произнесение заклинаний, и две элементальные атаки ближнего боя, одна из которых усиливает получаемый игроком урон.

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