Array

Array

пикабушник
Разрабатываю игру. Люблю котов. Против Путина.
поставил 1275 плюсов и 631 минус
отредактировал 11 постов
проголосовал за 32 редактирования
21К рейтинг 45 подписчиков 6331 комментарий 28 постов 2 в горячем
2 награды
Лучшая светодоска 20205 лет на Пикабу
115

Концепт "серии постов" для пикабу

Делаю серию постов о разработке игры и мне прям сильно не хватает в пикабу нативной штуки для объединения постов и навигации по ним.

Пока что я вижу два варианта как организовывать навигацию и оба должны "собираться в ручную".

Первый способ сложный, но удобный для пользователя - в ручную собирать ссылки:

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост


И второй околокостыльный способ через публичное сохраненное и прикрепление в начало поста ссылки:

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост
Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост

При этом, в сохраненном нельзя менять порядок. Если в серии 20 постов и случайно сохранил не в том порядке, то давай сначала всё.

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

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост

Итак, что из себя должна представлять "серия постов"?
1) Иконка - маленькая прямоугольная иконка с закруглёнными краями. Прямоугольная чтобы не вызывать конфликта с аватарками пользователя.
2) Название - не очень длинное, но и не слишком короткое.
3) Цвет - каждой серии постов пользователь задаёт по своему усмотрению любой из 12 цветов радуги. Чтобы можно было легко ориентироваться между разными сериями у определенного пользователя.

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


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

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост


После чего добавленный пост получит автоматическую плашку серии:

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост

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

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

Кнопки "первый пост" и "навигация" обязательны, однако в угоду дезигну допустимо сделать их в виде миниатюрных иконок.

По кнопке навигация должен открываться попап с списком всех постов в серии:

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост

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


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

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост

Под рейтингом понимается суммарный рейтинг всех постов серии. Можно даже сделать ленту с топом серий по этому рейтингу.

Ячейки серий выстраиваются по три штуки в ряду и если их становится больше трёх, то по умолчанию они скрываются под спойлер:

Концепт "серии постов" для пикабу Пикабу, Предложения по Пикабу, Предложение, Длиннопост


На этом всё. Фича не слишком сложная, но очень полезная.
@BarsikFAQ, @admin, @AdskiySotona услышьте меня!

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

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

Продолжаю рассказывать о том, как я делаю рогалик на Unity.

В этот раз речь пойдет о погоде в игре. Она условно разделена на глобальную и локальную.

Глобальная погода обновляется 24 раза за игровой день, который длиться соответственно 24 минуты. Примерно вот так выглядит глобальная карта с погодой:

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

Каждый квадратик это отдельная локация. У каждой локации есть свои параметры вроде давления, температуры и облачности. Также, есть и побочные вроде силы ветра (красные стрелочки), которая определяется от разности давлений, особенностей ландшафта и т.д.

Чтобы погода менялась с течением времени есть фронты (зелёные стрелочки) и циклоны. Фронты меняют температуру и образуют дожди. А циклоны создают зоны с повышенным/пониженным давлением.

Вот как это работает в динамике:

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


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

Одной из самых сложных вещей было написание шейдера для неба. В него входят такие штуки как мерцающее звёздное небо меняющееся в течение ночи и игрового года, перемещающаяся луна, плавно затягивающие небо "статические" облака. Статические - потому что у них одна единственная кубамапа.

Вот так проходит в игре ночь:

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


Помимо "статических" облаков есть и динамические через систему частиц:

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


И как следствие облаков, эффект дождя:

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


На этом пока что всё. В дальнейшем буду работать над улучшением внешнего вида поверхности. Если что, то в группе вк выкладываю новости гораздо чаще и более детально. А также, там можно скачать технодемку и в живую глянуть на погоду.
https://vk.com/voidside_game

И бонус в комментариях

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

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

Всем привет!!!

Продолжу рассказ о том, как я делаю рогалик. С предыдущими частями можно ознакомиться тут:
Как я решил делать рогалик на Unity
Как я решил делать рогалик на Unity. Часть 2
Как я решил делать рогалик на Unity. Часть 3.1

В прошлой части я закончил на том, что сделал голую модель персонажа. Теперь нужна одежда!
Так как это будет рогалик, то одежда должна получиться максимально разнообразной. Я решил дать возможность делать одежду из разных видов материалов (хлопок, джинса, кожа, сетка и т.д.). Слишком затратно было бы делать по десять текстур на каждый элемент одежды, поэтому я решил разбить текстуру одежды на постоянную часть (ремень на штанах или подошва у ботинок всегда будут одинаковыми, не зависимо от материала) и часть заливаемую текстурой выбранного материала. Если кто-то знаком с 3d моделированием, то он сразу скажет, что получится не очень так как будут видны uv швы. И да, видны они будут, но так как камера всегда находится на определенном расстоянии от персонажа, то это не сильно бросается в глаза.

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

С текстурками разобрались, дальше проще. Сейчас одежда представляет из себя отдельные динамически добавляемые модельки. Если элемент одежды полностью "закрывает" тело, то оно скрывается, а нижние слои одежды (например, трусы под штанами. Да, они там есть) и вовсе не подгружаются за ненадобностью.
Однако, у такого подхода есть один серьезный недостаток. Если верить документации unity, а верить ей стоит, то каждая отдельная модель одежды будет жрать производительность. Поэтому все модели одного персонажа надо запекать в одну супермодель. Я этого не стал делать, так как это во-первых достаточно сложно (на самом деле нет), а во-вторых во время снятия/надевания одежды возможны лютые просадки фпс. Поэтому решил оставить все как есть, и если потом будут проблемы, о буду что-то выдумывать. Если кто-то сталкивался с похожей задачей - можете отписать в комменты.

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

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

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

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

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

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

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

Следующим логичным шагом стало добавление в игру оружия. Также, как и с одеждой, мне хотелось добиться максимальной вариативности. Поэтому всё оружие "модульное" и состоит из различных насадок, как обязательных (вроде рукояти или цевья), так и опциональных (прицелы, глушители). При этом магазин не является "насадкой", это отдельный игровой объект. Магазины могут быть разной вместимости (например, для АК-подобного оружия это 30, 45 и 60 патрон) и хранятся отдельно в инвентаре. Магазины надо будет "заряжать" патронами отдельно и заранее. Не стал сильно упарываться и поэтому один магазин можно будет заправлять только конкретным видом боеприпасов (оболочечными или бронебойными).

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

А вот и наглядная демонстрация (не обращайте внимание на то что автомат косо стреляет, не занимался ещё настройкой прицеливания):

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

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

И в качестве бонуса граната:

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

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

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

Спасибо Microsoft за BSOD

Пост не несет особой информации, просто хочу немного остудить реактивные сопла после батхерта. Давно я не сталкивался с синим экраном смерти, но вот и настал тот момент.

Спасибо Microsoft за BSOD Microsoft, Windows 10, Синий экран смерти, Баттхёрт, Длиннопост

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

И вот, позавчера настиг тот день когда братишка принес мне обнову

Спасибо Microsoft за BSOD Microsoft, Windows 10, Синий экран смерти, Баттхёрт, Длиннопост

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

Вот тут то у меня и бомбануло. Компьютер не захотел завершать работу.

Спасибо Microsoft за BSOD Microsoft, Windows 10, Синий экран смерти, Баттхёрт, Длиннопост

Пришлось прибегнуть к физическому shutdown и надеяться на лучшее.


Сегодня проснулся и лучшего, разумеется, не случилось. Я просидел пол часа в ожидании "восстановления системы" и наконец-то зашел в винду. Попутно прилетели обновления, которые при перезагруке снова увели компьютер в BSOD.

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

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

Всем привет!!

Сегодня расскажу о том, как я делал персонажа в своем рогалике.

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

Итак, начать надо с постановки задачи. Чего мы ждём от персонажа в рогалике?
Разумеется, чтобы персонаж мог быть разным: прически, цвет кожи и физическая форма.
А ещё было бы не плохо, если была бы расчлененка. Кто в здравом уме делает игры без расчленёнки?

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

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

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

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

У меня получился вот такой кожаный ублюдок. Так как он будет первым живым объектом в игре, то я назвал его Адамом.

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

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

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

Теперь сделаем персонажу возможность иметь различную физическую форму. Я реализовал это с помощью BlendShapes - для каждой "формы" (например, толстоты) мы модифицируем полигональную сетку (меняя положение полигонов, но не изменяя структуру). Это можно делать как в ручную перетаскивая отдельные полигоны, так и автоматизированно, например, тем же скульптингом. На деле это выглядит как-то так:

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

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


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

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

Дополнительно создаем помимо кожи текстурку волос на теле, открытого "мяса" для расчленения.

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

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

Теперь у нас готовы модель и текстура. Осталось только сделать шейдер *Гарольд.джепег*

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

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

Шейдер граф, разумеется, будет не так эффективен по производительности как писать шейдеры на HLSL, и некоторые вещи на нём попросту не сделать, но он ЗНАЧИТЕЛЬНО облегчает работу. А так как у меня инди игра, а не ААА-проект с хай-энд графикой, то смело его использую везде где можно.

Вставляем все это дело в игру и получаем следующее:

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

А вот так выглядят оторванные части тела:

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

Вблизи выглядит крипово, но игровая камера никогда так близко и не будет приближаться. Персонаж будет примерно на таком расстоянии:

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

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

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

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

Всем привет!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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

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

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

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

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

Всем привет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

Показать полностью 8
-33

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

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

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

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

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

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

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

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