168

The Dynasty. Генерирующие генерации генераторы.

Привет, Пикабу! Я продолжаю разрабатывать стратегию в которой игрок берет на себя управление династией.


В этом посте расскажу о том, как работает генератор городов над которым я трудился последние 5 дней. Я не очень-то продуктивен, да :)

Что должно быть у каждого города? Название! Проще всего составить оригинальное название города составив его из заранее заготовленных частей.

Например: Mosc+ow, Lon+don, Par+is.

В общем-то результатом я остался доволен.


Теперь нужно сгенерировать города. Сказано сделано.

Цель: добиться городов выглядящих а-ля Цивилизация.

За час набросал скрипт который в случайном месте генерировал центр города - Ратушу, а потом "наращивал" вокруг него дома. В случайных местах. Если новое строение "соприкасалось" с существующими, то в этом месте появлялся дом.

Результат был так себе.

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


Самым простым вариантом было:

Шаг 1. Сгенерировать Шум Перлина со значениями от 0 (черный цвет) до 1 (белый цвет).

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

Шаг 3. Вычесть значения полученные на первом шаге из значений полученных на втором, присвоить значения которые стали меньше нуля нулю.


Иллюстрация для наглядности.

Вуаля! У нас есть остров! Гхм, да, я помню, что нужен был город.


Дело за малым, заполнить значения, что не равны нулю здания. Место для Ратуши выбираем случайным образом, зная ширину и длину можно легко узнать, вся ли ратуша находится в пределах "острова". Генерируем дома. Перед генерацией каждого здания проверяем, чтобы здания не пересекалось с другими.


Вот в общем то и все, что хотел рассказать.
Результат:

Да, кстати, завел паблик Вконтакте, в котором можно следить за новостями об игре.
Ссылка: https://vk.com/thedynastygame


Спасибо за внимание!

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

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

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

0
Автор поста оценил этот комментарий

Это зависть такая?

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Не кормите тролля.

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

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


А, вот о муравьином алгоритме в первый раз слышу, спасибо, нужно будет изучить)

Сейчас попробую заменить Pelin noise на Cellular noise, но вряд-ли какие-то изменения будут.

показать ответы
1
Автор поста оценил этот комментарий

Это как crusader kings что ли

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, в некоторой степени, только управлять бизнесом семьи, а не графствами или герцогствами.

показать ответы
0
Автор поста оценил этот комментарий

Чувак мне очень нравится твоя идея. Подписался.

Вот только не понятно одно. Если я правильно тебя понял, то город взят как единица на карте. Тогда о какой Династии идет речь, если ты уже по сути хозяин города? В Гильдии была суть в том что ты выживаешь сначала всех из своего населенного пункта, а потом тянешь свои рученки по окрестностям (Я про конкурентов). Если есть где-то темка по игре с предложениями, написал бы пару фич, которых конкретно мне не хватает в Гильдии - я в нее до сих пор играю по вечерам, с перерывами конечно. Игры подобной нет просто нет, если сможешь реализовать "Игру мечты хардкорного геймера" (Именно так изначально называли Гильдию кстати), народ будет тебе благодарен. И кстати Гильдия 3 выходит декабре 2016 - начале 2017.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В каждом городе будет король (у которого будет своя семья), а игрок будет играть за главу одной из династий.

Можешь прямо здесь написать, я почитаю)

0
Автор поста оценил этот комментарий

а база данных? можно ли с тобой как то связаться напрямую?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Думаю данные хранить в json файлах. Сохранения скорее всего тоже)

0
Автор поста оценил этот комментарий

Может быть, где то уже задавали этот вопрос: на какой платформе ведется разработка?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Unity

показать ответы
0
DELETED
Автор поста оценил этот комментарий
Если нужен дизайнер ( лого, оформление, то зови) temprace3@gmail.com
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо) Пока своими силами справляюсь)

2
Автор поста оценил этот комментарий
5 дней? Нормальная такая продуктивность для разработки после основной работы
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Можно было и быстрее)

0
Автор поста оценил этот комментарий

Различные описания игровых аспектов стратегии и тп.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, но не стоит) Самому бы разобраться, что я хочу сделать

0
Автор поста оценил этот комментарий

Очень заинтересовал твой проект так как я являюсь поклонником игр на подобии Guild 2, и хотелось бы предложить тебе помощь в виде текстового оформления. Вот мой почтовый адрес alex.kosta2011@яндекс.ru

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Текстовое оформление?

показать ответы
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Можно будет настроить производство, транспортировка товаров (продать на рынке/в другом городе/отправить на склад другого предприятия). Про автоматизацию торговли по морю расскажу отдельно, когда сделаю)

0
Автор поста оценил этот комментарий

Да уж, недавно я подписался на Лигу Разработчиков Видеоигр и вот такие посты очень вдохновляют. Сам мечтаю разрабатывать игры, вот учу С++ пока. Надеюсь в будущем смогу что-то делать. Автору спасибо за вдохновение.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Приятно, что кому-то это пригодится) успехов Вам

1
Автор поста оценил этот комментарий

Как вариант, можно использовать значение как шанс существования дома. То есть по центру дома будут 100%, а по окраинам уже более редкие, типа пригород

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, неплохая идея) Но конкретно в этом случае, размер города ограничен площадью 10x10, поэтому каждый тайл на счету

0
Автор поста оценил этот комментарий
Тут главное на гринлайт выйти, в бету, и заживешь, проект уникальный.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ага, согласен, довести бы)

0
Автор поста оценил этот комментарий
The Guild с меньшей долей микроменеджмента, но с большей макро?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

НУ, микроменеджмента будет столько же, сколько и в The Guild)

показать ответы
0
Автор поста оценил этот комментарий
А пробовали вместо вычитания кругов делать умножение (только с инвертированной картинкой, чтобы в центре кругов были значения, близкие к 1)?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

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

Интересный совет, завтра с утра попробую)

1
Автор поста оценил этот комментарий
Прошу прощения, не увидел, что в посте и так фрактальный шум используется, правда низкочастотный.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не, никакой разницы, в данной ситуации, какой шум генерировать)

показать ответы
0
Автор поста оценил этот комментарий

Я от программирования не далек..но не понял ничего)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В общем смотри. Генерируется шум Перлина со значениями от 0 до 1. Город у нас будет 10x10 (на рисунке текстура 100x100 для наглядности). Значения заносятся в двумерный массив. Потом генерируются круги на полях со значениями от 0 до 1. Значения также заносятся в массив. Потом из каждого элемента первого массива вычитаем значения второго массива. Получаем "остров", т.е. те тайлы на которых можно строить здания.

Если что-то криво объяснил - спрашивай)

показать ответы
1
Автор поста оценил этот комментарий
Только к домам нет дорог - люди же должны ездить? И площадь перед ратушей всегда должна быть.
Еще можно сделать несколько вариантов частей домов и рэндомно собирать из них дома.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

Я от программирования не далек..но не понял ничего)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Видимо я такой рассказчик)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества