| Хренакс писал(а): Пытаться понять все это из-под игры - это и есть игра, т. е. то, за чем здесь собралось большинство. Вы не игрок? Ну что-ж, и такое бывает... |
| |
Не согласен. Проведу аналогию - вы хотите понять устройство автомобиля во время езды на нем, нажимая и отпуская педали в разной последовательности, тогда как можете прочесть документацию 
В свою очередь, игра это действие в рамках определенных правил и определенных возможностей(область), за рамки которых вы не можете выйти, потому что, иначе, вы уже вне пространства игры.Играя в шахматы, вы можете перевернуть доску дном наверх, но тогда вы уже не участвуете в задуманном процессе. Игра не существует вне собственного пространства, в чем можете убедиться прочитав часть поста punisher'a о выходе за игровую зону.
<тут будет ответ об устройстве сектора> Сразу оговорюсь, что с данным движком я НЕ работал, поэтому, вещи которые, как правило, реализовываются в играх определенным образом я обрисую, остальное, будет моими догадками(на такие аспекты укажу).
Начнем с самого пространства.По сути, трехмерное пространство бесконечно, однако, при реализации игры с помощью программного кода вам, так или иначе, нужно указывать мксимальный размер памяти, которую будет занимать каждая переменная, используемая в программе.В игровом exe файле переменных тысячи.Кстати чем точнее указано "место" под каждую (скажем, мы знаем, что значение будет от 0 до 10, но используем стандартный целочисленный тип данных, который резервирует диапазон памяти для целого числа от -2147483647 до 2147483647. Это не есть хорошо. Но некоторые программеры считают, что раз 4 ядра и столько же оперативной памяти, то можно не беспокоится...а потом у них battlefield 3 без патчей тормозит... ). Чем точнее указан диапазон, тем быстрее работает программа. Так вот, 3D пространство для компьютера это таблица координат точек X Y Z. Думаю, вы уже догадываетесь, что область нашей 3д сцены нужно ограничить.(хотя, можно задать динамический тип и память под переменную будет выделяться по ходу надобности. Но там свои тараканы с этим методом...все равно, не чистая бесконечность.) В случаи с X3, вы и имеете игровую область и (возможно) , как-бы, просто пустое пространство идущее в никуда. Это уже не область вашей сцены. В свою очередь, каждая 3D модель состоит из точек, каждая из которых имеет свою координату в пространстве. Сам же обьект, для удобства, располагает "центром" (Pivot Point) за который игра перемещает его в пространстве. (т е, с позиции игры, 3D обьект - точка.Но для координатного пространства самой сцены, которую уже считает и визуализирует компьютер, это уже комплекс координат точек). Если мы имеем анимацию, то там у нас уже система скелета...в общем, это уже совсем другая история... Так вот, в области нашего сектора мы имеем триггеры (скажем, при подлете к вратам, мы попадаем в область триггера, который говорит игре, что нас пора пробрасывать в другой сектор. Или стыковать к станции) - грубо говоря, ваши сферы(реально, триггер может быть любой формы - это геометрическая область), пути для NPC (в случаи с X3, это не отрезки, а область перемещения нпц .). У каждого трехмерного обьекта, станция это или корабль, как уже говорилось, есть модель коллизии (то, куда другой 3д обьект не пройдет и непись не пролезет, грубо говоря). Так же, в современных движках (не замечал этот момент в X3, т ч точно не скажу), у моделей есть их варианты с низкой детализацией - LOD.Как и зачем - это отдельная тема...и так пост большой выйдет.Если интересно, в другой раз ) Вкратце - на дальнем расстоянии,даы не тратить ресурсы на отрисовку модель заменяется похожей низко детализированной, с растянутыми текстурами низкого разрешения. Издалека вы не видите разницы и производительность не падает 
Столкновения обьектов, соотв, просчитывается пересечением моделей коллизии. Есть и другие алгоритмы, но обычно пользуют этот...хотя... егософты они любители извращений...мы то знаем  К слову, пути NPC в ТС, да и в АР хоть и лежат в условной области, но перемещения на автопилоте возможно только по ребрам мысленных кубов, которыми мысленно замостили весь сектор(по наблюдениям). Вот поэтому корабли в ТС криво летали на автопилоте - траектория полета прокладывалась по ребрам таких вот кубиков.В АР, вроде как, исправили и теперь все по-божески.
Соотв, для каждого обьекта есть набор инструкций-скриптов его описывающих. Скажем. дальность связи с НПЦ на борту, дальность стыковки, скана....ну и так далее.Ну, вы в курсе.
В случаи с вашими наблюдениями, необычное поведение игровых обьектов вызвано отсуствием некоторых инструкций вне игрового поля.
Опять же, как точно егософты реализовали я сказать не могу. Излагал предположения "возможно" или "вероятно". P.S. Кстати, есть так же вариант, что сектор, с точки зрения игры только один, но при пропрыге в новую зону меняется набор обьектов внутри "купола".Будь я программистом, сделал бы так. Из этого вытекает, что без игрока действия в секторе просчитывается чисто в программе.Но тут вы тоже, вероятно в курсе. Поэтому нет столкновений (вроде бы, даже корабли быстрее двигаются в секторе без игрок - именно за счет отсутствия препятствий на пути.) и плюшки с нивидиумом :rolleyes: К слову, добыча руды методом "игрок вне сектора" это эксплойт чистой воды.  Это к теме о непродуманности честного заработка в Х3..ну не суть. В общем, по-быстрому, в общих черта - вот оно 
Ну и, соотв, я далеко не гуру в теме, так что возможны ошибки и так далее и тому подобное... |