Сергей Клименко (Moonlight Mouse) - Разработка RTS игры на Unity DOTS

Поділитися
Вставка
  • Опубліковано 14 лют 2020
  • Появление DOTS стало новой вехой в развитии Unity. Жаркие споры не утихают до сих пор. Год назад Сергей рассказывал об опыте использования ранних версий в продакшене. В этом году он рассмотрит, как изменился этот стек технологий и на примере конкретной игры покажет решение присущих жанру RTS задач при помощи Unity DOTS.
    #MadeWithUnity
    Презентация: www.slideshare.net/flashgamm/...
    Доклады Сергея:
    - Опыт внедрения Unity ECS и Job System в продакшне - • Сергей Клименко (Moonl...
  • Ігри

КОМЕНТАРІ • 7

  • @shurmurray
    @shurmurray 4 роки тому +11

    ...отдельно хочется докопаться :) до вычисления видимости через постоянный расчёт дистанции от клетки карты до объекта. Т.е. это у нас (под капотом функции) квадратный корень, когда можно было:
    а) сравнивать квадрат расстояния с квадратом радиуса видимости, без квадратного корня.
    б) использовать заранее посчитаный массив-маску видимости для заданного радиуса
    в) вообще весь туман кинуть на GPU: текстурка 1000*1000 (по размеру нашего массива), дальше рендерим туда круги для каждого объекта, дающего видимость. Забираем отрисованую текстуру: любой цвет выше чёрного - клетка видима.
    Вот почему в 90х это было, а сейчас - исчезло? )))

    • @sk0rpi0n777
      @sk0rpi0n777 4 роки тому

      Не думаю, что забирать у GPU текстуру будет дешевле, чем посчитать видимость на CPU. Но вообще выслушал бы мнения, сам разными способами писал, причем изначально абсолютно убогими. Вообще, первый туман войны делал с помощью рендера ТЕНЕЙ от кубов висящих над картой много лет назад, это жесть))
      P.S.: Видос полностью не смотрел. Мне части с двумя камерами хватило)

  • @Kolyasisan
    @Kolyasisan 4 роки тому

    А бывало ли у вас такое, что жобы систем выполнялись быстрее, чем их запуск/инициализация? Просто интересно насколько хорошо будет юнитевская ECS работать с большим количеством систем.

    • @LevDoroguntsov
      @LevDoroguntsov 4 роки тому

      Если job работает на небольшом количестве сущностей, то асинхронный запуск через Schedule() почти всегда будет давать больший оверхед, чем если выполнить job в главном потоке через Run(), который также может запускать Burst-скомпилированный код
      По поводу количества систем есть хороший тред на форуме, где обсуждаются варианты на несколько тысяч систем
      forum.unity.com/threads/performance-overhead-of-dots-systems.751823/
      В общем там есть опасения что оверхед на Schedule() приличный, но с апдейтами его уменьшают и скоро должны подвезти возможность вообще отключать группы систем, если они не используются в конкретный момент в игре

  • @shurmurray
    @shurmurray 4 роки тому +7

    Занулять массив тумана войны не обязательно. Например, помечать видимые ячейки значением из счётчика, который увеличивается на 1 при каждом обновлении тумана: тогда всё, что, меньше этого текущего значения - считается невидимым. Раз в сто лет проверять, чтобы счётчик не ворпнулся.
    Записывать, не зануляя - придумано не вчера. Ещё Джон Кармарк это вовсю применял в своих движках. Давайте хотя-бы из уважения к Кармарку хороший код писать :)

  • @danil_zz
    @danil_zz 2 роки тому

    18:00 path finding