Nachtschatte
offline
Опыт:
52Активность: |
Динамический ландшафт
Задумал сделать карту, в которой ландшафт генерируется рандомно в начале игры, для придания непредсказуемости. Первоначально карта представляет из себя глубокую воду. Генератор случайных островов триггерный, он делает кратер с отрицательной глубиной, и таким образом получаются холмики островов. Проблема в том, что корабли продолжают плавать прямо по поверхности этих островов, а сами изменения ландшафта не отображаются на миникарте. И ещё, если сохранить игру, а потом загрузить, то острова пропадают. Можно ли каким нибудь способом добиться решения этих проблем? Могут ли быть обновлены миникарта и карта путей ландшафта во время игры?
|
22.02.2013, 11:03 | #1
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Fakov
Viva la Fa
offline
Опыт:
102,058Активность: |
очевидно не юзать создание островов через кратеринг с отрицательным значением.
насколько мне помнится - крутое поднятие триггерно не делается, только нищебродские клифы |
22.02.2013, 11:08 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ancient
Щпаовапа
offline
Опыт:
38,370Активность: |
Можно извратиться через блокираторы пути и тип ландшафта + способ передвижения юнита (летающий и т.д.) |
22.02.2013, 12:04 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nachtschatte
offline
Опыт:
52Активность: |
Да, но блокираторы не решат проблему сохранения и загрузки игры. Хотя может быть этим можно и пожертвовать.
А на счёт клифов, они бы меня устроили. Я допускаю схематичность и условность. В данном случае красоты не так важны, |
22.02.2013, 12:17 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Fakov
Viva la Fa
offline
Опыт:
102,058Активность: |
just use it. я только не могу сейчас посмотрет что за функция отвечает за это |
22.02.2013, 12:20 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
93,476Активность: |
Nachtschatte, можно сделать шамотную доску, ибо на сильно крутой алгоритм создания природного ландшафта ваших познаний вряд ли хватит... Просто используй блокираторы пути или области для отслеживания приказов по ним, если точка приказа находится на острове (области) то отдать приказ кораблю плыть рядом и тп... С мини картой намного сложнее, она генерируется всякий раз при сохранение ландшафта в редакторе и лежит в архиве карты... |
22.02.2013, 12:22 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nachtschatte
offline
Опыт:
52Активность: |
Fakov, никак не могу найти эту функцию поднятия клифов. Она в стандартном редакторе есть? Или в каком нибудь навороченом?
quq_CCCP, так, значит с миникартой вопрос отпал. Спасибо, идея с шахматной доской примерно понятна. |
22.02.2013, 13:55 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ancient
Щпаовапа
offline
Опыт:
38,370Активность: |
Nachtschatte, с клиффами только статически можно работать, тоесть из редактора тригов ты им ничего не сделаешь, только поставил и все. |
22.02.2013, 14:19 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nachtschatte
offline
Опыт:
52Активность: |
Ancient, печально. Если невозможно триггерами изменять ландшафт, то, вероятно, я откажусь от идеи генерации ландшафта.
|
22.02.2013, 14:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Темак
jass for everyone
offline
Опыт:
7,200Активность: |
возможное решение:
после генерации карты запускаешь цикл: ((код jass
real X = GetRectMinX(bj_mapInitialPlayableArea) real Y = GetRectMinY(bj_mapInitialPlayableArea) real MaxX = GetRectMaxX(bj_mapInitialPlayableArea) real MaxY = GetRectMaxY(bj_mapInitialPlayableArea) real MinY = Y loop { loop { if (GetLocationZ(Location(X, Y) > 0.)) { SetTerrainPathable(X, Y, PATHING_TYPE_FLOATABILITY, false) } Y += 32. exitwhen Y >= MaxY } Y = MinY X += 32. exitwhen X >= MaxX } )) написал на коленке, насчет утечек не уверен |
23.02.2013, 13:12 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
93,476Активность: |
Темак, цикл то уверен что не оборвётся, там 4000 шагов придел если мне память не изменяет, + Сколько же ты этими двумя циклами локейшенов наплодишь? И изначальная высота рельефа вроде бы не 0.... |
23.02.2013, 15:03 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Темак
jass for everyone
offline
Опыт:
7,200Активность: |
quq_CCCP, я не знаю течёт ли функция Location(x, y), не приходилось использовать её как-то Лимит итераций не проблема, можно сохранять прогресс покрытия карты и запускать в новом потоке (зависит от размера карты) Ну вместо ноля он может сам ставить любое нужное значение |
23.02.2013, 17:20 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,033Активность: |
ты создаешь объект который не удаляется, очевидно же что он остается висеть |
23.02.2013, 17:22 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|