Генератор случайных melee карт WarCraft III

» опубликован
Данный модуль позволяет генерировать карты для сражений в WarCraft III.


Это довольно гибкий модуль позволяющий настраивать параметры генерируемой карты перед процессом её создания. Сама карта генерируется в среднем от 3 до 20 секунд (в зависимости от выбранных настроек генератора, размера карты и количества игроков).

Скриншоты

Настраиваемые данные перед процессом генерации

Результат работы генератора

В разработке усовершенствованная система генерации биом


Дополнительная информация о генераторе

генерация биом

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

генерация игроков

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

генерация локаций

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

насыщенность мира

Как сообщалось ранее, игра имеет возможность настроить вероятность количественных значений локаций на карте. Например, если в настройках количество таверн указано как 2d55%, то 20% вероятности того, что на карте не будет таверн; 50% вероятности, что на карте будет одна таверна; и 30% вероятности того, что на карте будет две таверны. Таблицу вероятностей я привожу ниже:
» смотреть таблицу


Просмотров: 10 758



» Лучшие комментарии


2 комментария удалено
Molecyla #3 - 4 года назад 0
Нет, ну конечно выглядит отлично, но отсутствие воды или других неровностей земли угнетает меня.
Однако ты можешь создать воду при желании
Cancel #4 - 4 года назад (отредактировано ) 4
Molecyla, нельзя. Карта путей, используемая ИИ для определения маршрутов движения - создаётся на уровне WorldEditor. Создание любых продолжительных препятствий (рек, гор) приведёт к тому, что отряды будут "застревать" в препятствиях вместо того, чтобы пытаться их обойти. В режиме реального времени ИИ умеет обходить лишь небольшие препятствия. Продолжительные препятствия в виде стен, рек и гор я планирую использовать в генераторе RPG карт, но для RTS, к сожалению, не годится.
Molecyla, "других неровностей земли". Камера ведёт себя некрасиво когда уровень земли сильно отличается от изначально установленного. При большой возвышенности - камера может даже проваливаться под землю. Это может привести к дисбалансу уровня контроля отрядами, если в землях одного игрока обзор меньше, чем в землях другого.
Положение могла бы исправить камерная наработка, которая учитывала бы реальный уровень земли. Если кто предоставит таковую (желательно без утечек) - буду благодарен.
Aws #5 - 4 года назад 0
Неплохо в принципе, но что такое 2d55% и т.д?
Cancel #6 - 4 года назад 0
Aws, Как сообщалось ранее, игра имеет возможность настроить вероятность количественных значений локаций на карте. Например, если в настройках количество таверн указано как 2d55%, то 20% вероятности того, что на карте не будет таверн; 50% вероятности, что на карте будет одна таверна; и 60% вероятности того, что на карте будет две таверны. Таблицу вероятностей я привожу ниже:
Aws #7 - 4 года назад 6
Cancel, А можно сделать генератор понятный для простых смертных и гуманитариев?
Cancel #8 - 4 года назад (отредактировано ) 0
Aws, некоторые настройки более сложные (как приведённый пример), они обеспечивают повышенную гибкость самого генератора. В будущем этот ассортимент умножится. Пользователю не обязательно лезть в эти настройки чтобы получать удовольствие от игры, так как настройки по-умолчанию подбираются наиболее оптимальным вариантом с учётом количества игроков.
Даже если пользователь-гуманитарий хочет повлиять на количество локаций игрового мира - специально для него существуют константные варианты настроек, где он может вместо варианта 2d55% выбрать определённое количество локаций, например - 3.
Почему используется 2d50% вместо rand(0-2)? Это повышает шансы выпадения центральных чисел и понижает шансы выпадения крайних чисел. Уменьшает случаи генерации "пустынных" или наоборот "пёстрых" карт.
Кет #9 - 4 года назад (отредактировано ) 12
Вообще забавная идея, желаю успехов в разработке.
Но на втором скрине орфографическая ошибка — «мана» пишется с одной «н».
Этот термин произошёл не от библейской «манны небесной», но от полинезийского оккультного понятия «мана», означающего магическую энергию, яко бы содержащуюся в некоторых существах и предметах. Возможно, вы об этом знаете, но не мог не поделиться =)
Cancel #10 - 4 года назад (отредактировано ) 0
Кет, спасибо. Исправлю.
Cancel #12 - 4 года назад (отредактировано ) 4
Clamp, и правда, препятствия не тормозят. Где-то я ошибся. Спасибо за ответ.
Тимур #13 - 4 года назад 5
Мини-карта все время одинаково зеленая. Мелочь, но в глаза бросается.
Локен #14 - 4 года назад 0
Почему я не понимаю, что происходит на таблице?
Rare #15 - 4 года назад 0
Это великолепно. Такой генератор уже давно должен был в варе появиться. Если забыть про плоские однотипные карты, показанные на скриншота, то всё просто великолепно
Локен #16 - 4 года назад 0

Cancel #2 - 1 день назад 0   
Buulichkaa, объясните, пожалуйста.
он про вес
Buulichkaa #17 - 4 года назад 5
Локен, лол, я про затею
в будущем пожалуйста воздержитесь от разглагольствований от чьего-либо лица
Aws #18 - 4 года назад 0
Локен, Не думаю, что 100кб это толсто.
Buulichkaa, Нормас затея, просто слишком поздно до это допёрли.
Cancel #19 - 4 года назад 5
Aws, карта 2010 года. К сожалению у меня не было времени на модмейкерство. На данный момент пока я без работы - решил вспомнить старое веселье.
J64_ #20 - 4 года назад -6
Cancel:
Aws, карта 2010 года. К сожалению у меня не было времени на модмейкерство. На данный момент пока я без работы - решил вспомнить старое веселье.
Не думали вынести в отдельную программу с кнопкой запустить игру(с этой картой)?
NanO #22 - 4 года назад 1
Тот самый Кенсл, который когда-то сидел на инфо?
ФИЗРУК #23 - 4 года назад 1
Хотелось бы речку :((
Если бы была речка можно было как в игре анно начинать с коробля и плавать... искать место для базы...
Ну что-то это не в тему. Вообщем отличный генератор случайных карт, пригодится.
Cancel #24 - 4 года назад (отредактировано ) 0
NanO, тот самый -)
ФИЗРУК, к сожалению - генерация проходимости происходит дольше, чем хотелось бы. Если и вставлять изменение проходимости (суша, вода), то отдельной настройкой с предупреждением о том, что такая генерация займёт существенное время.
Melissa #25 - 4 года назад 0
толстота
ну конечно,как будто в олдскульные сражения в варике никто не играет.
NilasAran_39 #26 - 4 года назад 0
Годно, жаль только что все это дела происходит в карте в Варике, не просто генерирует рандомные карты, которые потом можно отдельно сохранить.
Cancel #27 - 4 года назад 0
NilasAran_39, если кто предоставит доходчивую информацию о бинарном формате карты - я бы мог создать програмульку по генерации карт на WarCraft. У неё и возможности будут более широкими.
Ikobot #28 - 4 года назад (отредактировано ) -2
Сможешь добавить дополнительные пункты по кол-ву золота в шахтах, а также кол-ву самих шахт в размере =игроки*2 или =игроки*3. А по поводу генератора, низкий тебе поклон, ты сделал это, хоть кто-то сделал это за 10 лет существования Варика. И да, хотелось бы отряды нейтралов разнообразить по числу воинов в отряде и кол-во биомов. А также возможность легко подгонять генератор под другие данные РО, которые можно будет вставить.
Buulichkaa #29 - 4 года назад 2
проще уже сделать свою ртс, чем копаться в этом вц3
WarSC #30 - 4 года назад 2
Buulichkaa:
проще уже сделать свою ртс, чем копаться в этом вц3
Движок в студию.
Buulichkaa #31 - 4 года назад 2
Aws #32 - 4 года назад 0
Buulichkaa, Покажи нам самодельную ртс, созданную 1-2 юзерами, которая будет на уровне вара 3.
Buulichkaa #33 - 4 года назад -2
Aws, ну так надо же когда-то начать, делать карты в вц3 это ещё ладно, но делать проги, чтобы делать карты в вц3 это жир
Cancel #34 - 4 года назад (отредактировано ) 2
Buulichkaa, мне не так важно для чего делать - для варика или самостоятельной игры. Для меня это отдых. Но для варика делать проще. Если пригласят - могу поучаствовать и в проекте, имеющим шансы быть завершённым.
Создал новый алгоритм генерации участков. Был вдохновлён "героями 3". После создания алгоритма - стал узнавать, выяснил, что генератор карт в героях 3 скорее всего был сделан по алгоритму вороного, когда стал сравнивать - заметил, что результаты моего алгоритма очень похожи на результаты вороного за исключением того, что в результатах его алгоритма "ровные" границы между участками (в моём алгоритме между участками неровные границы). Но мой алгоритм сильно отличается от диаграммы вороного своей логикой. В моём присутствует возможность гибких настроек генерируемых участков. Сейчас вот думаю - стоит ли переносить алгоритм в генератор карт. Если сделать это - то ландшафт будет генерироваться намного дольше текущей версии.
Прикрепляю результаты моего генератора участков:
прикреплены файлы
Melissa #35 - 4 года назад 4
Buulichkaa, что проще и приятнее - собирать из конструктора поделку или добывать сырье,делать детали и самостоятельно вообще изготовлять продукт?
Buulichkaa #36 - 4 года назад -2
Melissa, так если выйдет годнота, то можно из процесса не только фан извлечь
awesomesk1ll #37 - 4 года назад 2
Cancel:
ландшафт будет генерироваться намного дольше текущей версии.
Добавляй его конечно, есть карты которые грузятся по 5-10 минут. Если результат стоит свеч (а он имхо стоит их) - затрата оправдана.
alexprey #38 - 4 года назад 2
Cancel:
NilasAran_39, если кто предоставит доходчивую информацию о бинарном формате карты - я бы мог создать програмульку по генерации карт на WarCraft. У неё и возможности будут более широкими.
Olifem #39 - 4 года назад (отредактировано ) 0
Угу, я долго с этим мучался. Так и не решил этот вопрос.
Можно было бы устроить конкурс разработчиков на эту тему.
Победителю- пожизненный респект и +10 к карме)
1 пункт от : 1.1 (ненормативная лексика) Завуалированный мат
Cancel #40 - 4 года назад (отредактировано ) 0
Угу, я долго с этим мучался.
С чем именно?
У кого с английским хорошо? (у меня плохо). Мне нужна помощь, нужно из этой страницы world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=427... найти информацию о том, как на бинарном уровне редактировать следующие параметры карты: высоты, тайлы, проходимость. Откликнувшегося занесу в титры с выражением особой благодарности.
Кет #41 - 4 года назад (отредактировано ) 1
На тему проходимости нашёл:
1.16 Файл war3map.wpm : карта путей
Заголовок:
char[4]: file ID = 'MP3W'
int: file version = 0
int: path map width (=map_width*4)
int: path map height (=map_height*4)
Данные:
Каждый байт отвечает за 1/16 тайла.
Размер: (высота_карты*4)*(ширина_карты*4) байт.
Таблица флагов:
0x01: 0 (не используется)
0x02: 1=непроходимый, 0=проходимый
0x04: 1=недоступный для полёта, 0=доступный для полёта
0x08: 1=недоступный для строительства, 0=доступный для строительства
0x10: 0 (не используется)
0x20: 1=порча, 0=без порчи
0x40: 1=суша, 0=вода
0x80: 1=неизвестно, 0=обычный
(Не очень знаком с терминами, так что мог перевести не вполне точно, но смысл такой.)
alexprey #42 - 4 года назад 0
Кет, это карта проходимости, не совсем то что надо
Кет #43 - 4 года назад 0
alexprey, про проходимость Cancel вроде тоже спросил, я просто невнимательно прочитал. Исправил.
awesomesk1ll #44 - 4 года назад (отредактировано ) 0
вообще форматы это аббревиатуры же). wpm - warcraft path map, wts - warcraft trigger strings и т.д
Все данные по карте высот я так понимаю находятся всё же в файле warcraft 3 earth
на самом деле действительно хотелось бы увидеть в наше время качественный сторонний редактор файлов wpm w3e shd mmp что бы их отдельно от карты можно было ремейкать).
alexprey #45 - 4 года назад 4
awesomesk1ll, w3e - environment - окружение
awesomesk1ll #46 - 4 года назад (отредактировано ) 0
alexprey, thx, буду знать. Вот действительно, жаль что никому до этого дела нет, эти форматы уже относительно давно разобраны по байтам.. А редактора нет.
Cancel #47 - 4 года назад (отредактировано ) 0
На тему проходимости нашёл:
Спасибо, принято!
Осталось разобраться с высотами и тайлами. Есть у кого соображения?
awesomesk1ll #48 - 4 года назад (отредактировано ) 1
Cancel:
Осталось разобраться с высотами и тайлами. Есть у кого соображения?
Cancel:
NilasAran_39, если кто предоставит доходчивую информацию о бинарном формате карты - я бы мог создать програмульку по генерации карт на WarCraft. У неё и возможности будут более широкими.
Замути не просто генератор, а редактор! с возможностью генерации, цены не будет).
Olifem #49 - 4 года назад 0
Cancel:
Угу, я долго с этим мучался.
С чем именно?
"С уровнем воды", надо ловить Z координаты.
Editor #50 - 4 года назад 0
В зепире вроде было нечто подобное, но могу ошибаться.
NanO #51 - 4 года назад 4
тот самый -)
Сколько же лет прошло то с:
Cancel #52 - 4 года назад 2
Проводится работа над новой системой генерации биом!!!
прикреплены файлы
Cancel #54 - 4 года назад 2
Clamp, спасибо! Многое из этого я уже знаю, но, уверен, найду из статьи что-нибудь новенькое -)
LVenger #55 - 4 года назад 4
Неплохая вещь, помню на батле играл когда-то давно во что-то подобное, но по скринам уже понял, что там хуже создавались респы нейтралов
удачи доводить до ума
JackFastGame #56 - 4 года назад 4
Отличная задумка, хорошо реализовано!
PAXMA #57 - 3 года назад 7
Качаю! Вот этого неявно нехватало варику. Даже в warlords battlecry 3 есть генератор случайных карт, а в варике нет. Отличная идея для проекта!
Cancel #58 - 3 года назад 4
Всем спасибо за хорошие отзывы! Они много для меня значат.
Cancel #59 - 8 месяцев назад (отредактировано ) 7
Кому интересно - залил версию карты (генератора карт) на 24 игрока!
прикреплены файлы
Jack-of-shadow #60 - 8 месяцев назад 0
На сколько я понял, тут основной минус, в том что полноценных преград.
В плане можно идти свободно в любом направлении, и хаотично натыканные деревья не помеха.
Реки с мостами это бы исправили. ..И рельеф бы поморфать.
Cancel #61 - 8 месяцев назад 0
Jack-of-shadow, рельфе морфается, но не сильно. К сожалению - камера не повторяет глубину изменённого рельефа - и некоторые юдниты (такие как катапульта) начинают ездить под землё или над землёй. Как сделать реки я не знаю. Можно горы с заспавнутыми непроходимостями
Это сообщение удалено
Jack-of-shadow #63 - 8 месяцев назад (отредактировано ) 1
Cancel:
К сожалению - камера не повторяет глубину изменённого рельефа
Это легко фиксится, через GetLocationZ
некоторые юниты (такие как катапульта) начинают ездить под землёй или над землёй.
Хмм интересно, с таким не сталкивался.
Реки
Изначально карта с водой. В РО поднимаешь все вверх. При старте топишь по кривым + блокираторы

Ставишь точку по центру +Rnd(отступ) и в разные стороны пускаешь 1-3 ветки рекурсивно: