Array

Array

Разрабатываю игру. Люблю котов. Против Путина.
Пикабушник
поставил 1543 плюса и 908 минусов
отредактировал 14 постов
проголосовал за 51 редактирование
Награды:
Лучшая светодоска 20205 лет на Пикабу
36К рейтинг 103 подписчика 8035 комментариев 34 поста 8 в горячем

Как я решил делать рогалик на Unity. Часть 2

Всем привет!

Предыдущая часть: Как я решил делать рогалик на Unity

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

В прошлом посте для "тестового вывода" я сделал простое расширение по оси Z. Однако, это топорно. Нам нужно некое пространство для творчества, поэтому создадим некий паттерн расширения в плоскости YZ. Теперь мы просто перемножим всё это дело друг на друга:

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

Иии... Хоба! Получаем более интересную поверхность.

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

Тут же следует отметить, что меш мы будем генерировать с динамической топологией, так как нам не нужна проработанная полигональная сетка вдали от игрока. Это приведет к неким артефактам, но в целом терпимо.

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

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

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

Теперь ещё пара моментов. Во-первых, чтобы игрок видел фон даже в том случае, когда подходит к краю карты, мы расширим фон по сторонам.

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

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

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

Ещё о нескольких не очевидных штуках: На самом деле у нас будет целых три меша поверхности:

1) Передняя поверхность

2) Упрощенная передняя поверхность (для физики)

3) Фоновая поверхность


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


Теперь у нас есть базовая генерация меша поверхности, которая в дальнейшем ещё будет допиливаться. Но это потом. А сейчас, пожалуй, сконцентрируемся на других штуках.


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

Как я решил делать рогалик на Unity. Часть 2 Gamedev, Unity, Разработка, Игры, Инди, Длиннопост, Roguelike

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

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

Как я решил делать рогалик на Unity

Всем привет.

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

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

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

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

А лучше расскажу о фундаментальных штуках!

Итак, что представляет из себя игра? Это длинное (около 1 км в игровых условностях) поле с видом сбоку, по которому перемещается персонаж и "не только лишь персонаж". По бокам переходы на левую и правую локацию, а в центре можно найти тропинки на верхнюю и нижнюю локацию.

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

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

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

Выше представлен один из сгенерированных вариантов глобальной карты. Генерация происходит достаточно простым способом:

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

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

2) Генерация рек. Реализована достаточно костыльным способом: есть стартовая точка и вектор направления реки, по которому река пытается пройти. Если ей это не удается (например, врезалась в скалу), то она "умирает".
Генерация мостов у рек происходит также топорно: на каждых пять рек должен быть один мост в случайно-подходящем месте. Такая генерация мостов не годится, так как вероятно появление изолированных участков суши. Чтобы это исправить, надо дополнительно проходиться волновым алгоритмом по каждому проходимому участку суши и если обнаружится его изолированность, то добавлять как минимум несколько мостов через реки для него. Но мне хочется сделать все по скорее, так что пока что и так сойдет :)

3) Генерация структур. К ним пока что относятся только городские локации. Основная идея этого алгоритма в том, что все локации добавленные до этого имеют свой эффект усиления/ослабления на карте весов. Если по-простому, то возле рек городская локация появится с большей вероятностью, а возле болот с меньшей вероятностью.

4) Генерация дорог/мелких рек. До этого этапа пока что не дошел, но позже обязательно вернусь к нему. Основная идея в том, чтобы соединять городские локации между собой дорогой. Для этого надо будет обратиться снова к волновому алгоритму + щепотка случайности.

Итак, с глобальной картой мы разобрались, а чего на самих локациях то будет твориться? А твориться там будет полный холмодром! За основу взята идея поверхности из gravity defied:

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike


Только без мотоциклов. У нас игрок будет перемещаться на своих двоих. Вот собственно ранний результат сгенерированной поверхности:

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

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

Если говорить, про генерацию двухмерной карты, то тут также всё просто:
1) Генерация структур. В зависимости от типа локации получаем случайную выборку структур. Например, для города это будут разные постройки, дороги. А для леса водоемы и лесные массивы (плотные скопления деревьев).
2) Генерация кривой. Теперь на основе структур мы знаем, где нам надо иметь ровную поверхность (под зданиями, например), а где допустимо делать холмистую. Какие-то структуры будут создавать специфичные кривые (например у рек будет чашеобразное дно). Также здесь появятся ещё две условности: во-первых, это высота локации. Зная высоты соседних локаций, мы сможем более гибко манипулировать генерацией. Вот пример:

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

Помимо высоты, так же добавляется фактор "шероховатости" локации. Чем выше, тем более холмистой локация будет, и наоборот.

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

Теперь у нас есть все необходимое для создания кривой. Просто кодим и получаем это:

Как я решил делать рогалик на Unity Gamedev, Unity, Разработка, Игры, Инди, Гифка, Длиннопост, Roguelike

На этом первая часть закончилась. Вторая часть если и будет, то не скоро, так как я работаю один и медленно.

Показать полностью 9
-37

Интересные места в приключениях Бровастика

Интересные места в приключениях Бровастика Бровастик, Игры, Gamedev

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

Интересные места в приключениях Бровастика Бровастик, Игры, Gamedev

Для изучения алхимии, Бровастика отправят в храм культистов. Старейшина, кажется, сошел с ума, поэтому дает странное задание. А в конце квеста храм можно будет взорвать.

Интересные места в приключениях Бровастика Бровастик, Игры, Gamedev

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

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

Как накормить Бровастика сойлентом?

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

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

Просто взять и удалить слизь не кошерно, а значит надо наделить её смыслом. Подукрал идею я у Rimworld`а, в котором есть дозатор пасты. Бровастику нужен свой автомат по производству зеленой питательной жижи.


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

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

Рисую я так себе что от руки, что мышкой. Утешаюсь лишь тем, что "графика не главное" :)

Процесс переноса картинки в вектор обычно состоит из трех этапов:
1) Обвести всё, что можно
2) Закрасить краской
3) Надеяться, что получится что-то приличное

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

Далее надо анимировать всё это дело. Покадровую анимацию я практически не использую, так как это слишком трудозатратно. Обычно изображение расчленяется на несколько кусков:

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

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

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

Отлично, графика готова. Что дальше? А дальше в бой идут скрипты. Для Бровастика мы создали систему кат-сцен, которая реализует диалоги, графические вставки и прочие заскриптованные ситуации в игре. Если кому-то интересно, то могу более подробно рассказать о кат-сценах, а пока что просто приведу кат-сцены нашей сойлент-машины:

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост

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

Результат в игре:

Как накормить Бровастика сойлентом? Бровастик, Игры, Рисование, Gamedev, Гифка, Длиннопост
Показать полностью 6
-21

Приключения Бровастика: Новогодний ивент

Приключения Бровастика: Новогодний ивент Игры, Вконтакте, Пикабу, Бровастик, Длиннопост

Предыдущий пост об игре «Приключения Бровастика»

С опозданием, но мы сделали новогодний квест для Бровастика. И хотим рассказать об этом квесте и немного о дальнейших планах по игре.


На острове, на который попал Бровастик, круглый год лето. Поэтому местные жители давно забыли о том, что есть такой праздник, как Новый год. А вот Бровастик еще не забыл о нём и готов сделать всё возможное, чтобы вернуть дух Нового года.


Для этого Бровастику надо найти местного деда Мороза, который не вылезает из своей лодки десятки лет. Сам он, конечно же, доставлять подарки не будет. Кому надо, тот этим и занимается. Поэтому Бровастику надо будет самому бегать по острову и вручать подарки.

Приключения Бровастика: Новогодний ивент Игры, Вконтакте, Пикабу, Бровастик, Длиннопост

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

Приключения Бровастика: Новогодний ивент Игры, Вконтакте, Пикабу, Бровастик, Длиннопост

Новогодний ивент продлится до конца января.


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


Страница игры в VK: https://vk.com/browman


И, по традиции, бонус в комментах, Санта-Клаусы.

Показать полностью 2
112

Возвращение Бровастика или Как не стоит делать игры

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Все началось 4 года назад с игры-поста @0x00: «Moderator vs Zombies». Мне тоже захотелось сделать нечто подобное. Однако в html5 я не умел, да, впрочем, и сейчас не умею. А где у меня был опыт, так это в создании flash-игр. Но что-то не зашло.

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Ошибка 1: вместо того, чтобы начать учиться созданию игр под мобильные платформы или на том же html5, было принято решение начинать пилить игру с теми познаниями, что уже есть.


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

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Изначально задумывался простой платформер с бесшовным миром, где надо будет отстреливать мемы. Стоит сразу отметить, что с самого начала игра разрабатывалась под площадку игр ВКонтакте, т.е. она должна иметь социальный функционал. Дальнейший год я занимался программированием каких-то фич, вроде «интеллекта» противников, бесконечными попытками придумать велосипед написать физический движок, созданием редактора карт.


Ошибка 2: по мере создания фич, я замахнулся делать нечто большее, чем просто платформер и потратил на это около года. Пытаться делать крупные игры одному можно, но лучше не надо.


В 2015 году было принято решение, что продолжать заниматься разработкой в одиночку мне не по силам. Тогда я предложил коллеге, с которым мы уже занимались парочкой игр, объединить силы. Мы выбросили на помойку весь мой говнокод прекрасный движок и начали все сначала. Так было проще.


Ошибка 3: надо было взять по крайней мере готовый физический движок (например box2D), а не заниматься самодеятельностью. Еще раз.


Тем не менее работа пошла гораздо быстрее. Я начал заниматься отрисовкой графики, а коллега – программированием. Кстати, на данный момент набралось уже 80 тысяч строк кода. Концепция игры несколько усложнилась. Появился сюжет. А также игра стала представлять собой набор отдельных локаций. Прохождение разнообразных «локационных заданий», вроде бега на время, выживание или захвата флага, позволяет очистить локацию от врагов. Также параллельно разрабатывались и другие механики: сундуки с сокровищами, выкапывание кладов, сбор различных ресурсов на локациях. И всего-то спустя еще один год, в феврале 2016, игра стала выглядеть так:

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

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

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Этот остров стал пристанищем для огромного количества троллей, мемов, баянов и прочих «прелестей» интернетов. К тому же, остров покинуть невозможно по «магическим» причинам. Правда, это выяснится не сразу, а в ходе дальнейшего сюжета, так что вы сейчас прочитали спойлер. В общем, мы создали полноценную систему квестов с диалогами, принятием решений, кармой, блэкджеком и куртизанками!

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

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

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

После каждого боя Бровастик возвращается в лагерь, где ему по классике предоставляются три «комнаты»: палатка, магазин и вертолет. Если с первыми двумя всё понятно, то вертолет является отправным пунктом, обеспечивающим навигацию и высадку на конкретные локации. Кстати, в магазине можно попробовать украсть совершенно любой предмет.

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Ни одна игра не может обойтись без системы крафтинга. В игре можно создать практически любое оружие или броню. Главное – открыть рецепт, а дальше дело за малым. Вдохновившись первым ведьмаком, мы создали систему алхимии: можно изготавливать различные зелья, эликсиры и отвары. Заниматься полнейшей калькой как-то не очень хотелось, поэтому вместо интоксикации у нас система «сытости»: если переесть еды или зелий, то Бровастика стошнит. (Анимация тошноты никак иначе, как отдельным DLC)

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

За время разработки таких мелочей накопилось невиданное количество. Одних только предметов:

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

Ошибка 4: некоторые «фичи» можно было бы опустить или реализовать гораздо проще. Это бы позволило выпустить игру в плавание раньше, чем через 3 года.


Все бы было хорошо, не будь всё так плохо. Основные недостатки игры:


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

2) Игра на flash, который обещают в будущем выпилить из браузеров.

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост

3) Это социальная игра ВКонтакте. То есть весь прогресс игры хранится на сервере, а не локально. Из этого следует, что если вы сделали неправильное решение в ходе сюжета, то нельзя будет просто в save/load, чтобы было так, как вам хочется. Разве что начать игру сначала.

4) Модель монетизации Free2play. Можно бесконечно рассуждать, как это ужасно, и портит игру, но ничего другого мы не смогли придумать. По большей части это одиночная сюжетная игра (хотя вы и можете встретить «образы» других игроков и даже «поговорить» с ними), в которой донат не вносит превосходства над другими игроками, только поможет быстрее пройти игру.

5) Наличие багов и недоработок. Мы постоянно все это правим, но, как и в любом процессе разработки, не менее постоянно появляются новые.


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


Страница игры в VK: https://vk.com/browman

Возвращение Бровастика или Как не стоит делать игры Бровастик, Пикабу, Игры, Вконтакте, Flash, Компьютерные игры, Длиннопост
Показать полностью 11

Кукуруза с сюрпризом

Решил я, значит, покушать кукурузки

Кукуруза с сюрпризом Сюрприз, Кукуруза, Муха

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

Кукуруза с сюрпризом Сюрприз, Кукуруза, Муха

Понятно, что там все стерилизованно, но дальнейшего желания есть кукурузу не возникло

Кукуруза с сюрпризом Сюрприз, Кукуруза, Муха
Показать полностью 2

Шаблон "А вы знали что.." от моего братишки

Специально для пикабу
Шаблон "А вы знали что.." от моего братишки Специально для пикабу
-22

Пикабушники помогите пожалуйста

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

Я люблю кушать

твистер из кфс
Я люблю кушать твистер из кфс
Показать полностью 1
Отличная работа, все прочитано!