Компьютерные игры делают людей жестокими
Игры делают людей жестокими? Хотелось бы напомнить, что пятьдесят миллионов человек пустили в расход люди, у которых в детстве не было компьютерных игр и Интернета тоже.
Игры делают людей жестокими? Хотелось бы напомнить, что пятьдесят миллионов человек пустили в расход люди, у которых в детстве не было компьютерных игр и Интернета тоже.
Привет! А я продолжаю делать стратегию мечты. Сегодня расскажу о том, как прокладывать дороги на гексагональных картах.
Первый раз попробовал ООП в 17 лет. Оффер через год, опенспейсы, смузи, дедлайн, лютые лица.
Для начала используем алгоритм A* для того, чтобы найти кратчайшие пути между городами. Не буду на этом подробно останавливаться, информацию об этом алгоритме можно легко найти в Интернете. В итоге получаем список гексов на которых есть дорога.
Теперь нужно придумать, как сделать так, чтобы дорожные развязки выглядели реалистично.
Сначала нужно узнать, сколько вариантов дороги может быть, если "тайл" шестиугольный. Быстрый поиск в гугл показал, что может быть 13 вариантов.
Немало! При том, что почти каждый из вариантов может вращаться. И как сделать из этого дорожную сеть? Самый простой вариант, который приходит на ум - посчитать количество соседей, а там уже вращать. Итого более полусотни вариантов.
- Ничего страшного, ночь длинная... кофе заварен, - не сказал ни один программист в мире.
Самый простой вариант не всегда самый лучший, а поэтому нужно придумать алгоритм. Десять минут залипания в потолок со стеклянными глазами рождают в голове Идею™.
Итак:
Шаг 1. Нужно пронумеровать и сохранить все стандартные (как на скриншоте выше)варианты в зависимости от того идет ли в одну из шести сторон дорога. Если идет, то будем считать, что это - 1, если нет - 0. Например для варианта, где дорога идет в одном направлении получим 100000, а для того, где дорога идет в пяти направлениях получим 101111. Ниже будет пример.
Шаг 2. Получаем все шесть соседей клетки, если на ней есть дорога, то будем считать, что это - 1, если нет - 0. Начиная с верхнего соседа, идем по часовой стрелке. В итоге получаем что-то вроде 100100 (пример для варианта с прямой дорогой идущей сверху вниз.
Шаг 3. Сравниваем полученное в Шаге 2 число с каждым из 13 вариантов уже сохраненных нами в Шаге 1.
Если оно не совпадает, то "поворачиваем" дорогу (а по факту те единицы и нули) по часовой стрелке. Для этого просто "смещаем" их вправо (картинка ниже).
Если ни один набор чисел не совпадает, то переходим у следующему из 13 сохраненных.
Если же совпадает создаем подходящую стандартную дорогу, и поворачиваем её на 60° умноженных на количество оборотов.
В итоге получается что-то вроде:
Вот примерно так. Задавайте вопросы, постараюсь ответить на все :)
С момента моего предыдущего моего поста, сделаны были не только дороги. Создание персонажей, фамильных гербов, допилен генератор карт. Вот это все. Совсем скоро приступлю к самому интересному - к геймплею.
Если понравилось, подписывайтесь: https://vk.com/thedynastygame
(мне сказали, что если попросить, то больше людей подпишется ^_^)
Привет, Пикабу! Я продолжаю разрабатывать стратегию в которой игрок берет на себя управление династией.
В этом посте расскажу о том, как работает генератор городов над которым я трудился последние 5 дней. Я не очень-то продуктивен, да :)
Что должно быть у каждого города? Название! Проще всего составить оригинальное название города составив его из заранее заготовленных частей.
Например: Mosc+ow, Lon+don, Par+is.
В общем-то результатом я остался доволен.
Теперь нужно сгенерировать города. Сказано сделано.
Цель: добиться городов выглядящих а-ля Цивилизация.
За час набросал скрипт который в случайном месте генерировал центр города - Ратушу, а потом "наращивал" вокруг него дома. В случайных местах. Если новое строение "соприкасалось" с существующими, то в этом месте появлялся дом.
Результат был так себе.
Ковальски, варианты. А в вариантах которые я нагуглил мне было лень разбираться. Пришлось немного подумать самому. В форме чего должен быть город? Ну, острова. Окей, гугл, как сгенерировать случайный остров?
Самым простым вариантом было:
Шаг 1. Сгенерировать Шум Перлина со значениями от 0 (черный цвет) до 1 (белый цвет).
Шаг 2. Создать градиентный круг исходящий из центра карты. В последствии заменил один большой круг на четыре маленьких, фигура стала больше напоминать квадрат со скругленными углами.
Шаг 3. Вычесть значения полученные на первом шаге из значений полученных на втором, присвоить значения которые стали меньше нуля нулю.
Иллюстрация для наглядности.
Вуаля! У нас есть остров! Гхм, да, я помню, что нужен был город.
Дело за малым, заполнить значения, что не равны нулю здания. Место для Ратуши выбираем случайным образом, зная ширину и длину можно легко узнать, вся ли ратуша находится в пределах "острова". Генерируем дома. Перед генерацией каждого здания проверяем, чтобы здания не пересекалось с другими.
Вот в общем то и все, что хотел рассказать.
Результат:
Да, кстати, завел паблик Вконтакте, в котором можно следить за новостями об игре.
Ссылка: https://vk.com/thedynastygame
Спасибо за внимание!
Привет! В позапрошлую субботу выкладывал скриншот из стратегической игры, которую я потихоньку делаю. После этого на меня подписалось 2(!) человека, надеюсь им (и не только им) будет интересно, что я сделал за эту неделю.
Путь в тысячу граблей начинается с первого шага.(с) Джейсон Стетхем
The Dynasty - стратегия, в которой игрок возьмет на себя управление семьей, в жестоком мире средневековья. Цель: привести свою династию к богатству, власти и славе, соперничая с другими семьями.
Поскольку игра должна быть максимально реиграбельна, то многое генерируется случайно: мир, города, характерные черты персонажей (влияющие на принимаемые ими решения).
Сейчас уже практически готова генерация мира:
Остается сделать генерацию полезных ископаемых и городов. И эта часть работы будет закончена.
Центром каждого города будет Ратуша, вокруг которого будет строиться город.
Собственно Ратуша (не окончательная версия, все еще может 100 раз измениться):
В общем-то всё о чем хотел рассказать - рассказал. Через неделю, надеюсь, смогу показать красивые сгенерированные города, дороги между ними, полезные ископаемые.
Спасибо, что дочитали аж до сюда!
По вечерам делаю стратегию моей мечты, в которой нужно будет привести свою династию к богатству и власти. Что-то вроде Crusader Kings + The Guild 2
Пикабу, я создал сайт, что-то вроде бинарных опционов, но вместо денег вещи из CS:GO.
Ссылку скидывать не буду, просто хочу ответить на любые вопросы тех, кто интересуется этой темой, сокеты, создание ботов для Steam, вот это всё.
Такая AMA-сессия на Пикабу, может кто-то узнает, что-то новое, а я упорядочу в голове то, что я узнал за два месяца разработки.