TR.0

На Пикабу
поставил 6 плюсов и 4 минуса
127 рейтинг 1 подписчик 0 подписок 3 поста 1 в горячем

Поход в Гиблоземье

И так, небольшая вводная:
Комикс я делаю впервые. Рисовать не умею, а по сему использовал различнейшие костыли что бы хоть как-то изобразить происходящее. Соответсвенно рисовка желает лучшего.
С горем пополам завершил первые 18 страниц.
Знаю, получилось не ахти как, но, блядь, прошу, не обсирайте меня уж слишком сильно

1

Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат

2

Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Поход в Гиблоземье Авторский комикс, Комиксы, Длиннопост, Мат
Показать полностью 18

Сказ о том, как я браузерную RPG делаю

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

Самого кода тут не будет, т.к. это не хабр, ей Б-гу. Кроме того, не обязательно знать код, что бы интересоваться процессом разработки. Да и, не хочу я сейчас делиться своим говнокодом.
Запускаться все это добро будет в браузере. Написан проект с использованием Phaser JS.

Без лишних предисловий (как видите словоблудие дается мне плохо) начнем.



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


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

Вот как это выглядит:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Теперь, зная какая из ячеек с которое изображения отвечает, можно загрузить этот набор в игру, при помощи простенькой таблицы:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

И мы получаем вот такой результат:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Не дурно. При этом, ее можно на ходу редактировать, внося соответствующие изменения в игровой мир:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост
Способ не самый изысканный, но достаточно простой, чтобы меня устроить.

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

Игрового персонаж работает следующим образом:

Это физический блок, который я "тяну" в нужное направление.

Однако, собственно, с передвижением возникли нюансы.

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

Поэтому пришлось придумывать собственную систему коллизии.

Но для того, чтобы ее описать, сначала я должен объяснить, как здесь вообще реализовано перемещение.

Итак, когда пользователь нажимает на область среди игрового поля - игра сохраняет координаты курсора, и с помощью Phaser.Physics тянет персонажа в соответствующем направлении.

Как я сказал выше, я мог просто, в каждом кадре, менять координаты персонажа. Но в таком случае, скорость его движения зависела бы от FPS, и это пришлось бы учитывать. А встроенная физика, все делает за меня.

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Также, я не делал систему поиска пути. И если перед главным героем появляется препятствие - он должен просто останавливаться. К элементарности простая система.

Вернёмся назад. Коллизию я реализовал следующим образом:
игра постоянно проверяет все соседние от Главного Героя ячейки, и если на одну из них перемещение запрещено - игра прекращает его "тянуть" в этом направлении. В результате, если попросить персонажа двигаться по диагонали, и перед ним окажется препятствие - он будет продолжать двигаться вдоль "стены". В общем, мне нравится

Теперь, создадим врагов.

Во время разработки, я использую вот такого вот зомбака:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Его логика аналогична оной у ГГ, исключая лишь что точку направления определяет не курсор, а положение игрока.

Работает это так: если ГГ подходит на достаточную дистанцию до врага, то начинает двигаться в его направлении, но не забывая о коллизии

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Да, в сим разе возникают комичные ситуации, когда враг не может обойти стену, но это уже будут проблемы геймдизайна.
Продолжим.

Боевая система.
Сделал я оную совершенно не изысканно (как и всё прочее):
Когда игрок приближается к врагу достаточно близко - запускается расчет нанесенного ущерба (нанесённый урон = сила атаки - броня)
А для визуализации, я накладываю на всех участвующих в бою анимацию с соответствующим эффектом (простите за качество):

Как по мне -- уже выглядит пристойно.

На сим -- кланяюсь, т.к. пока это всё.

Надеюсь было занимательно.

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

Показать полностью 7 1

Былая работа

Лежит у меня уже некоторое время, неоконченная игра, которую я хотел выпустить для телефона, и много исходного кода по ней.
Выглядит сие добро, примерно так:

Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост
Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост

И карта игрового мира

Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост

Должно было это работать в первую очередь на телефонах, и быть не особо сложным, по сему механики были задуманы максимально простыми.

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

Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост

Боевая система работала только в одной сцене, и функционировало это по следующему сценарию:
Время от времени на игровой карте возникали случайные встречи, которые приводили к бою. В будущем я хотел понатыкивать туда ещё отсылок, как в первых Фоллаутах, но на даный момент сие не реализовал. Увы.

Былая работа Gamedev, Pixel Art, Clickteam Fusion, Длиннопост

И, да, бои были возможны только на этой локации. Почти все остальные сцены были созданы для квестов, а там поединков не планировалось.
Всё должно было решаться текстом, и выборами игрока.
Хотя, в некоторых случаях, нашего Протагониста могли попросить "Выйти за стены".
Кроме того, в качестве наказания он мог попасть на арену, где должен был выбить право свободы.

Собственно, почему сий проект не был завершён:
Делалось это на движке ClickTeam. И он вообще не подходит для подобных проэктов.
То бишь, для чего-то по проще, как тот же FNAF, на пример, вполне.
Но для полноценной RPG с квестами и диалогами -- отнюдь.
К тому же, позже я начал работать с вебом, и познакомился с Phaser, так что теперь уже пилю кое что для работы в браузере.

Тем не менее, не пропадать же добру?
Во тут, можно загрузить  билд для винды, й посмотреть на то что уже есть:
https://drive.google.com/drive/folders/1qEqdSmNqzXNtytxfaahv...

Там же лежит исходник для Кликтима, вдруг кто-то имеет желание использовать сей код.

Кроме того, должен предупредить, что все тексты, в билде, выполнены на Украинском. Я не думал о том, что когда-то буду его выкладывать, переводом ещё не занимался, а писать базовый текст на родном мне было удобней.

Благодарю за внимание. Ещё свидимся.

Показать полностью 9
Отличная работа, все прочитано!