• Как хранить часто используемые большие объемы данных в игре?

    Zefirot
    @Zefirot Автор вопроса
    Ипатьев, у меня в этих словарях может быть по несколько десятков мегабайт, а в целом на всю территорию и более гигабайта, это как бы не мало, просто засунуть в оперативку чтобы эти данные там висели постоянно не вариант, не разумно, поэтому нужно это дело в файлы и использовать тогда когда нужно...
    Написано
  • Как хранить часто используемые большие объемы данных в игре?

    Zefirot
    @Zefirot Автор вопроса
    Василий Банников, TerrainData это данные Terrain в формате .asset, там хранится вся информация о вершинах, но я сначала тестил в редакторе и если во время игры редактировать поверхность (изменять высоты) то результат в этих файлах сохраняется, но как оказалось если уже скомпилировать готовый продукт то там уже результат после выхода из приложения не сохраняется...
    Написано
  • Как хранить часто используемые большие объемы данных в игре?

    Zefirot
    @Zefirot Автор вопроса
    Василий Банников, я уже понял что оно работает только в редакторе, в скомпилированном проекте оно не работает, не сохраняет данные, то есть нужно в чем-то типа .dat хранить, сейчас это и тестю
    Написано
  • Как хранить часто используемые большие объемы данных в игре?

    Zefirot
    @Zefirot Автор вопроса
    так в этом и вопрос - в чем и как правильно хранить такие данные?
    вот есть местность которая поделена на квадраты, информация о каждом квадрате должна помещена в отдельный файл, когда мы заходим в этот квадрат то и берется информация из этого файла...
    если таких квадратов сотня то не загружать же их все в оперативку, смысл, поэтому берем их по надобности.
    но как правильно это реализовать в юнити? вершины например в TerrainData отлично сохраняются, вот как сделать подобное только со своими полями?
    Написано
  • Как фоново обрабатывать физику?

    Zefirot
    @Zefirot Автор вопроса
    Vindicar, я так для теста попробовал и 1кк точек собираются с помощью Physics.CheckBox и Physics.BoxCast за 8сек в словарь, это как бы и не много, единственное нужно тогдаэто сделать как загрузку, через корутину не пойдет, попробовал и более 10 мин ждал ответа обработки....
    Написано
  • Как фоново обрабатывать физику?

    Zefirot
    @Zefirot Автор вопроса
    K0TlK, террейн 1000х1000 это 1кк ячеек, каждая ячейка это Vector3 позиция клетки плюс Vector3 позиция передвижения (может быть выше чем цельная), угол движения, и стоимость пути, и того 9 float то есть 36 байт одна ячейка, короче около 40Мб только памяти для запоминания ячеек на террейне, а если взять еще объекты то все 100Мб выйдет, что-то мне подсказывает что работа с таким массивом будет немного затруднительна...
    Написано
  • Как фоново обрабатывать физику?

    Zefirot
    @Zefirot Автор вопроса
    K0TlK, terrain 1000x1000 плюс различные объекты на нём...
    "при входе в клетку запоминать" до того как на неё зайти нужно понять что это проходимо или препятствие, плюс ко всему террейн весь не запомнить, слишком уж много ресурсов уйдет все это запомнить...
    Написано
  • Как фоново обрабатывать физику?

    Zefirot
    @Zefirot Автор вопроса
    K0TlK, как без Physics. вычислить где там препятствие?
    нет я конечно понимаю что есть NavMesh, но в моём случае он не подойдёт так как и Terrain и объекты на нем динамичны, использование его в моём случае довольно таки нагружает процесс....
    есть конечно еще один способ - заранее сетку сканить и записывать, но тоже накладно и много ресурсов кушает учитывая местность...

    в общем в моём случае проверка только таким образом, разве что сами методы Physics.CheckBox и Physics.BoxCast можно по другому использовать, тогда как?
    Написано
  • Как ограничить поворот ступни (IK)?

    Zefirot
    @Zefirot Автор вопроса
    это не работает, проблема заключается в том что данный пример работает если нога стоит прямо, но конечно же нога часто находится под углом.
    проблема я думаю заключается в том что что угол вычисляется из Vector3.up, мне кажется он должен вычисляться из вектора направленного на колено, или высчитываться из 3х точек ( колено, пятка и пальцы ног), пока еще не имею точного представления как оно должно быть...
    Написано
  • Почему низкий фпс при большом количестве CharacterController?

    Zefirot
    @Zefirot Автор вопроса
    Приведу пример - Казаки 3, там одновременно на сцене двигаются тысячи объектов (максимум 32к), причём двигаются также и вне сцены (или как оно так рассчитывается), причём она сделана в 3D (именно 3я часть), понимаю что она не на unity, но думаю в юньке сделать подобное тоже возможно, правда с той разницей что у меня будет динамическая сцена, но и объектов будет поменьше, главное найти инструменты с помощью которых этого можно достичь..
    Вот такое у меня направление...
  • Почему низкий фпс при большом количестве CharacterController?

    Zefirot
    @Zefirot Автор вопроса
    freeExec, я считал что самую большую нагрузку даёт аниматор и мешрендерер, поэтому скрипт вычисляет когда они не в кадре и их выключает, но нужно чтобы сами объекты (невидимые) двигались для нужного взаимодействия, может он там за кадром шел и упал в обрыв к примеру, поэтому хоть какое-то "виртуальное" перемещение нужно, при этом определяя динамические препятствия....
    вопрос с помощью чего тогда лучше это реализовать?
  • Какой метод оптимизации массовой анимации лучше?

    Zefirot
    @Zefirot Автор вопроса
    GavriKos, да конечно, мой косяк, проект 3D, URP, вид в основном как в любой стратегии.
    на счёт шейдеров да это однозначно, но там есть тоже разные методы, вершинные, вычислительные, что-то в основном в шейдерах а что-то и частично в коде C#, хотелось бы на каком-то конкретном направлении остановится...
  • Какой метод оптимизации массовой анимации лучше?

    Zefirot
    @Zefirot Автор вопроса
    Василий Банников, так сказать можно различить анимацию, но пальцев, глаз и т.д. конечно уже невидно...
    я по этому поводу проводил много тестов и в эти тесты вошло следующее:
    уменьшал детализацию (в блендере количество полигонов в раз 40 уменьшал модификатором) для самой мелкой модели;
    в скелете уменьшал количество костей до минимума (6 костей всего оставлял на всю модель);
    все шейп кеи с модели конечно же убирал;
    количество костей на вершину до 1 минимума уменьшал;
    оптимизацию объекта на аниматоре делал;
    с компрессией клипов игрался, до максимума опускал, на дальнем расстоянии этого не заметно;
    всё это результатов особых не даёт, ну там 10-15% fps подымет, на 1к объектов с 12fps может до 15fps поднимется, это ни о чём...

    запеченная анимация однозначно производительнее, так анимация на процессоре проигрывается, а так на видеокарте, с помощью шейдеров, только на каком-то примере (методе) нужно остановится, шейдеры сложная тема, по крайней мере для меня пока что, но изучать конечно их нужно, однозначно...
  • Какой метод оптимизации массовой анимации лучше?

    Zefirot
    @Zefirot Автор вопроса
    Василий Банников, до пары тысяч максимум примерно...
    GavriKos, смотря на сколько приближена камера, если максимально отдалена (вид как в стратегии) то много помещаются на экране, даже при максимально уменьшенной детализации моделей, анимации довольно таки напрягают производительность, очень проседает FPS, а вот с запеченной анимацией дела гораздо лучше...
    Осталось только конкретно нацелится на нужный метод решения данной задачи...
  • Почему одинаковое FPS на разных по мощности видеокартах?

    Zefirot
    @Zefirot Автор вопроса
    Мимокрокодил, да нет никаких изменений не проводил, просто видеокарту поменял.
    Но судя по ответам на других форумах я таки пришел к выводу что это из-за самого аниматора, в том смысле что анимация обрабатывается за счёт процессора (пересчёт положения вершин), а для переноса обработки процессов на видеокарту нужно запекать анимацию в текстуры, этакая технология произедения анимации с помощью шейдеров, собственно этим я сейчас и занимаюсь...
  • Что делать если установка win10 зависла на последнем шаге?

    Zefirot
    @Zefirot Автор вопроса
    Drno, все методом слепого тыка ввел и продолжил...
  • Что делать если установка win10 зависла на последнем шаге?

    Zefirot
    @Zefirot Автор вопроса
    да вон выше написал что оказывается невидно окна ввода пина, а как это поправить?
  • Что делать если установка win10 зависла на последнем шаге?

    Zefirot
    @Zefirot Автор вопроса
    вот методом тыка понял что панель ввода пина просто не видно, нажав альт таб видно что окна два, учетная запись и ввод пина, но на него не переключиться, окна самого не видно, что можно сделать?
  • Что делать если установка win10 зависла на последнем шаге?

    Zefirot
    @Zefirot Автор вопроса
    только что при очередной перезагрузке и клацаньем по del немого откатилось до ввода учетки, ввел и потом кода дошло до создать пин кода, я нажал создать его и вот потом оно висит, других опций вроде как нету, ждать?
  • Как получить переменную аналогичную LOD показателю?

    Zefirot
    @Zefirot Автор вопроса
    я что-то подобное что мне нужно уже накатал, почти то что нужно, пока не совсем корректны результаты, а именно процент видимости на экране, но... еще тестирую...
    этот процент мне нужен и чтобы нужный меш включать, нужные анимации, отключать определенные функции, в общем для оптимизации, только в отличии от лода это даёт больше действий чем просто меш переключать.
    public Renderer rend;
        private Vector3 rendererBoundsCenter;
        private float size;
        void Start(){
            Vector3 rendererBoundsSize = rend.bounds.size;
            rendererBoundsCenter = rend.bounds.center;
            size = Mathf.Max(rendererBoundsSize.x, rendererBoundsSize.y, rendererBoundsSize.z);
            }
        void FixedUpdate(){
            float distance = Vector3.Distance(Camera.main.transform.position, rendererBoundsCenter);
            float LodProc = (Math.Abs(Mathf.Atan2(size, distance) * Mathf.Rad2Deg * 2f) / Camera.main.fieldOfView) * 100f;
            LodProc = MathF.Round(Mathf.Clamp(LodProc, 0f, 100f));

    эта "замечательная функция" которую вы показали также пригодится, спасибо.