Добавлен , опубликован
Всего пара строк кода, но получается чёткая фигура. Попытайтесь догадаться как это работает? =)
триггер1
function stop_drawing takes nothing returns nothing
  call DisableTrigger(gg_trg_go)
endfunction

function Trig_initialization_Actions takes nothing returns nothing
  local timer t = CreateTimer()
  set udg_loc = Location((GetUnitX( gg_unit_h000_0001)+GetUnitX( gg_unit_h000_0002))/2,(GetUnitY( gg_unit_h000_0001)+GetUnitY( gg_unit_h000_0002))/2)
  call FogEnable(false)
  call FogMaskEnable(false)
  call TimerStart(t,40.0,false, function stop_drawing )
endfunction

//===========================================================================
function InitTrig_initialization takes nothing returns nothing
    set gg_trg_initialization = CreateTrigger(  )
    call TriggerAddAction( gg_trg_initialization, function Trig_initialization_Actions )
endfunction
триггер2
function Trig_go_Actions takes nothing returns nothing 
  local integer r = GetRandomInt(1,3)
  call CreateUnitAtLoc(Player(0),'h000',udg_loc,0.00)
  if r == 1 then
  call MoveLocation(udg_loc,(GetLocationX(udg_loc)+GetUnitX( gg_unit_h000_0001))/2,(GetLocationY(udg_loc)+GetUnitY( gg_unit_h000_0001))/2)
  elseif r == 2
  call MoveLocation(udg_loc,(GetLocationX(udg_loc)+GetUnitX( gg_unit_h000_0002))/2,(GetLocationY(udg_loc)+GetUnitY( gg_unit_h000_0002))/2)
  elseif r == 3
  call MoveLocation(udg_loc,(GetLocationX(udg_loc)+GetUnitX( gg_unit_h000_0003))/2,(GetLocationY(udg_loc)+GetUnitY( gg_unit_h000_0003))/2)
  endif
  
  
endfunction

//===========================================================================
function InitTrig_go takes nothing returns nothing
    set gg_trg_go = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_go, 0.01 )
    call TriggerAddAction( gg_trg_go, function Trig_go_Actions )
endfunction
весь код
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
20
6 лет назад
Отредактирован Diaboliko
0
Не вижу смысла даже вникать, поскольку отсутствие оптимизации кода отбивает настроение, однако, хочу заметить, что скриншот Ваш даже не отображается (хотя, почему-то, я успел увидеть его часть пока прогружалась страница, фронтенд скрипт показывает что он действительно есть). Причиной тому - правила размещения изображений.
0
15
6 лет назад
0
Diaboliko:
Не вижу смысла даже вникать, поскольку отсутствие оптимизации кода отбивает настроение, однако, хочу заметить, что скриншот Ваш даже не отображается (хотя, почему-то, я успел увидеть его часть пока прогружалась страница, фронтенд скрипт показывает что он действительно есть). Причиной тому - правила размещения изображений.
Исправленно)
2
21
6 лет назад
2
Тоже делал что-то подобное. Создание воинов - не самая лучшая идея. При 1000+ итерациях начинает заметно подтормаживать.
2
15
6 лет назад
2
Да, похоже что моя идея не нова, в реализации фракталов на Wc3. Хотя и не обязательно останавливаться на треугольниках, можно получать более сложные узоры используя несколько геом. фигур, но с разным шансом движения к точкам этих фигур)
1
21
6 лет назад
1
DarkLigthing, ага, только понадобится очень много точек, из-за которых WC3 сильно лагает.
0
18
6 лет назад
0
ScopteRectuS, а если вместо юнитов использовать декорации, а вместо точек - координаты?
0
15
6 лет назад
0
Maniac_91:
ScopteRectuS, а если вместо юнитов использовать декорации, а вместо точек - координаты?
Координаты использовать лучше конечно, т.к объекты типа real гораздо менее объемные. Но в моем примере используется только одна глобальная точка которая двигается через MoveLocation(), что по сути тоже самое т.к в каждой итерации утекают только real во время присвоения точке новой координаты. Так что это не имеет особого значения. В остальном это вопрос детализации фигуры, больше точек - выше детализация, декорации тоже подходят лучше, чем юниты, но это все равно высокая нагрузка. хотя и нужно исходить из области применения фрактала, что в принципе придумать не просто в рамках wc3. Если это просто вариант побаловаться с фракталами то оптимизация сильно значения не имеет, если не делать совсем уж грубых ошибок в коде, а вот использование в реальной игровой карте уже другой вопрос. А так можно попробовать связывать точки эффектом молний удаляя сами точки-обьекты, но это только задумка)
0
21
6 лет назад
0
Maniac_91, я пытался через эффекты, просадки ФПС начинаются примерно с 3000+ итерации..
Возможно из-за того что эффекты были эффектные, хз.
0
21
6 лет назад
0
Куда интересней было бы услышать твои соображения о том где это можно применить в игре.
0
15
6 лет назад
0
Raised:
Куда интересней было бы услышать твои соображения о том где это можно применить в игре.
Можно сделать наработку для спец. эффектов заклинаний, т.к фракталы могут быть очень разными с чёткими и красивыми узорами. К примеру, во время каста заклинания во круг кастера или другой цели взаимодействия спелла создаётся фрактал из думми-обьектов, не имеющих модельки. Это шаблон узора, но нам нужно к примеру выбрать только контуры фигуры, как внешние, так и внутренние. Т.е обрисовать фрактал либо эффектом молний, либо каким-либо спец. эффектом. Для этого можно помещать в группу точки фрактала которые соответствуют условию - рядом с ними есть хотябы одна сторона, где нет точек фрактала. Так можно поместить все контурные точки в группу и на их месте создать спец. эффект, либо последовательно соединить все точки в группе эффектом молний. И удалить думми фрактал.
0
21
6 лет назад
0
DarkLigthing, всё верно, но только построение фракталов методом хаоса warcraft не в силах воспроизводить.
0
15
6 лет назад
0
ScopteRectuS:
DarkLigthing, всё верно, но только построение фракталов методом хаоса warcraft не в силах воспроизводить.
Тут да, это самое слабое место в такой системе. Неоправданно много лишних объектов, + не ясно чему равно Х времени на заполнение Х фигуры, потому что не дорисуешь - контуры будут кривые, переполнишь - рискуешь сильной посадкой производительности. Разве что реализовать сетку для точек, таким образом чтобы расстояние новоизбранной точки не могло быть ближе к существующей на некое значение.
0
21
6 лет назад
Отредактирован Raised
0
Алсо при чем тут троллинг? Ты алгоритм левый закинул и решил посмотреть что напишут или троллинг в том что троллинга нет или это ответочка на последние записи в блогах. В код не вникал. Не понравились названия функций и работа с триггерами. В общем интересно почему такой заголовок у записи.
2
15
6 лет назад
2
Raised:
Алсо при чем тут троллинг? Ты алгоритм левый закинул и решил посмотреть что напишут или троллинг в том что троллинга нет или это ответочка на последние записи в блогах. В код не вникал. Не понравились названия функций и работа с триггерами. В общем интересно почему такой заголовок у записи.
Троллинг в том, что чёткое понимание того как работает алгоритм не объясняет того, как образуется эта фигура (фрактал). Это не объяснит даже математик с научной степенью. Всё что можно сказать - это то, что такова природа фракталов. Ставка была на то, что не найдётся того кто бы знал о рекреационной математике. Ну или не так быстро... =)
0
30
6 лет назад
Отредактирован Clamp
0
чёткое понимание того как работает алгоритм не объясняет того, как образуется эта фигура
Вообще-то, объясняет, существует целая наука — «Теория Хаоса», в том числе и про это. Треугольник Серпинского, кстати, был довольно подробно разобран весьма давно.

кто бы знал о рекреационной математике
В отношении хаотических систем слово «рекреационный» применяется с натяжкой, это сильно «адвансед» уровень.

Интересный факт: у фракталов расстояние между любыми двумя точками математически бесконечно. Вроде как у всех (точно не помню), но у некоторых точно.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.