Продолжаю работать над своей игрой [Part3]: свободное перемещение, инвентарь, первое оружие и экипировка

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

Я. Делаю игру
Я. Делаю игру

Как всегда в конце статьи можно найти кусок геймплея

Прежде всего я решил уйти от разделения уровня на клетки. Теперь перемещение героя и объектов свободное.

Свободное перемещение

Переделать пришлось знатно. Если раньше всё было достаточно условно: «объект в клетке», «объект в соседней клетке», то теперь все объекты получили коллизионную модель. А некоторые еще и хитбокс, и прочие нюансы. Пришлось переписывать «физику». Зато теперь у объектов есть подобие скорости, ускорения, торможения и прочие свойства, манипулируя которыми можно добиться интересных результатов. Это всё куда интереснее обычного «переместиться в соседнюю клетку».

За счет ухода в коллизионную модель объекты теперь стали иметь разную величину и размер. Решетка может быть утоплена в стене, а шипы имеют справедливый хитбокс по их величине.

Пришлось переписывать и управление на реалтайм. Условно ранее зажатая клавиша «вперёд» может и работала повторая одно и то же действие, но например зажатая клавиша открытия инвентаря переведенная в реалтайм начинала десятки раз в секунду закрывать и открывать его. После переписывания получилось, что каждый тик игре скармливается список зажатых клавиш, а уже внутри она сама разбирает какая клавиша была зажата только что, какая оставалась зажатой, а какая была зажата ранее, но ее отпустили. Универсально и переносимо.

Добавил инвентарь

Как можно проследить в прошлой статье, весь инвентарь у меня сводился к панели внизу экрана на которую попадали подобранные объекты.

Инвентарь (которого по сути нет) и интерфейс "до"
Инвентарь (которого по сути нет) и интерфейс "до"

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

Также у героя появился эквип: слоты под всякие шлемы, обувь, кирасу и прочее. Эта вся снаряга может иметь разные баффы (резист к физическому урону, резист к огню и прочее).

Инвентарь и обновленный интерфейс "после"
Инвентарь и обновленный интерфейс "после"

Оружие

Наконец-то я сделал хоть какое-то оружие. Это лук. Стреляет расходуемыми стрелами. Оружие теперь наносит урон который может иметь разный тип (физический, огненный, ледяной, и т.д.). У объектов соответственно есть те или иные резисты. Оружию добавил кулдаун, чтобы нельзя было спамить кнопку атаки, а так же понятие «чардж». Для лука это работает как натяжение тетивы.

Кстати теперь стрелы и фаерболы оставляют после попадания следы.

Тут видео про лук и телепор

Дневник персонажа

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

Продолжаю работать над своей игрой [Part3]: свободное перемещение, инвентарь, первое оружие и экипировка

Немного переделал диалоговую систему. Она стала удобнее для написания диалогов. Теперь это json-подобная структура. Появилась возможность задавать опциональные реплики появляющиеся при заданных условиях. Пока ветвление идёт только за счет этих реплик и самой структуры. В будущем конечно добавлю ветвление в зависимости от условий.

Небольшой диалог
Небольшой диалог

Разные новые предметы

Кроме глобальных измнений я добавил ряд интересных и не очень предметов:

  • Сундук — просто сундук с инвентарём. Может быть закрыт на ключ, а может быть не закрыт.
  • Дверь на засове — дверь запертая на засов. Может быть отперта с одной из сторон после чего свободно открывается/закрывается.
  • Решетка — не позволяет игроку проходить, но пропускает фаерболы/стрелы, прочие проджектайлы.
  • Лимитаторы (колышки) — не позволяют перемещать по ним ящики. Но герой свободно проходит.
  • Телепорт — телепортирует игрока или объект в определенное место придавая заданное ускорение.
  • Дневник — «сюжетный» объект который при использовании открывает доступ к дневнику.
  • Походный мешок — тоже можно сказать «сюжетный» объект. При использовании расширяет инвентарь.
  • Шапка, ботинки — экипировка героя. Даёт баффы. Пока только увеличивает максимальный уровень здоровья.
  • Левитирующие платформы — пропасть с платформой, которая появляется и пропадает по шаблону. Если платформа пропала, а игрок на ней стоял — игрок падает (по факту телепортируется) на заданную клетку или даже на другую карту (якобы проваливается на уровень ниже)

Кроме всего прочего

Все же решил найти более удобный инструмент для рисования. Под руку подвернулся Marmoset Hexels 3. В целом редактор мне понравился, есть действительно удобные моменты, работать комфортно. Я потихоньку переношу туда всю графику, новые спрайты рисую уже в нем.

Marmoset Hexels 3 - я доволен
Marmoset Hexels 3 - я доволен

Отрывок «геймплея»

Что еще?

Разных идей хватает. Я стараюсь их реализовывать в свободное время. Возможно следующим будет простейший крафт, продвинутая камера для создания катсцен и сами катсцены. Продолжаю косо смотреть на реализацию теней и думаю переделать их. Пока так.

Паук
Например
8787
26 комментариев

Очень много всего. Графика скромная, но думаю это не главное для такого жанра и на раннем этапе. Вы молодцом. Буду следить за вашим проектом, спасибо за статью

6
Ответить

Спасибо! Стараюсь. Графика действительно не фонтан, но сейчас меня "прёт" писать код. Когда этот энтузиазм пройдёт обязательно переключусь на графику, пройду курсы какие-нибудь по пиксельарту и буду больше практиковаться.

11
Ответить

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

4
Ответить

Спасибо. По поводу рисования и программирования: программирование моё давнее хобби, а в рисование и другое творчество (типа 3d моделирования в блендере) я стал погружаться совсем недавно. Вот и получается перекос: техническая реализация опережает визуал.

4
Ответить

Выглядит всё круче и круче, но тень будто не поспевает за персонажем + сам персонаж какой-то уж слишком статичный выходит, планируете ему анимации прикрутить? 

2
Ответить

Тени да, просчитываются по клеткам, а персонаж перемещается свободно. Поэтому возникает задержка. С тенями буду менять подход к отрисовке. По анимациям - планирую. Технически их уже можно применить, но нужно нарисовать эти анимации. Я пытался, но потерпел фиаско. Буду пытаться еще.

1
Ответить

А мне приятна графика, чем-то навеяло Kingdom: New Lands
В моей игре вообще срамота, но я привык уже

2
Ответить