vlad333000, Ну такой вариант возможен, в планах, чтоб было понятно, в каждом доме, в каждом строении должны быть предметы. Это огромная масса объектов. Если мы делаем локации по населенным пунктам и внутри локации цикл проверяет расстояние вокруг игрока либо расстояние игрока до всех объектов то получаеется в остальных локациях в это время проводится только одна проверка на присутствие в них игрока и не более, тут я согласен, нагрузка снижается.
SteelRat, На счет отключение и того и другого тоже не поспоришь, ведь если оптимизировать систему спавна объектов, симуляцию, видимостью таким образом чтоб она не выпадала разом и кучей, то думаю можно добиться желаемого результата и избежать скачков нагрузки и неприятных последствий от этого. То есть в голове возможность кода и структура его построения понятна, но недостаток опыта дает о себе знать. Буду двигаться в этом направлении и возможно добьюсь того что нужно) Ну и конечно без вас уважаемые ни куда) Так, что прошу прощения за беспокойство и за то, что еще не раз побеспокою)))
Продолжим).
Для сингла, есть очень интересный вариант, но он требует развития.
Когда я ковырялся в БИСовских модулях зон, модули имитации гражданской жизни, работали по интересному принципу.
При инициализации миссии, эти модули сразу создавали объекты люди, лодки, ещё какая то хрень), на нулевой позиции карты, отключалась симуляция и видимость.
И тупо при необходимости вытаскивали их оттуда на требуемую позицию активируя симуляцию и видимость. После ухода объекта из определённого радиуса вокруг игрока, объекты телепортировались обратно на нулевые, и так по кругу.
Дёшево и сердито!
Но с мебелью в зданиях нужен доработанный подход, создавать такую кучу сразу не резон, однозначно по этому:
- Миссия началась, нам понадобился объект, у нас в миссии есть глобальная AllObjects переменнаяя типа "массив", ищем нужный класс в этом массиве, и естественно при первом обращении там [] (пусто). Создаём объект.
- Наступает момент когда объект больше не актуален, теперь самое интересное), вместо удаления объекта кидаем его на [0,0,0], если этого мало то [999999, 999999, 0], и отключаем ему всю лабуду. и исполняем AllObjects pushBack _object .
- Нам снова понадобился класс данного объекта, ищем в AllObjects (с поиском я уверен каждый и сам справится), если объект там есть забираем на нужную позицию и исполняем AllObjects = AllObjects - [_object]; , если свободного объекта нет, создаём его.
И так по кругу. Уловили Господа?
Djon, у SteelRat попроси его пока что недоделанную Embient life 
Я остановился на совсем не рабочей версии).
До оптимизировался), решил покурить, и что то закурился)
Сообщение отредактировал SteelRat: 20 February 2015 - 22:58