![]() |
Скрипт и infinity map
Истчо раз привет!
Где то на форуме я такое видел, но ничего не понял: что такое СКРИПТОВЫЕ игры(к ним,вроде, можно, например, добавлять новые уровни просто добавив какой-то файл, а не дописывать код). И еще: я знаю что чтобы создать огромную карту надо координаты обьектов(статичных) и прочие параметры хранить в файле (или еще где нибудь, лишь бы не в оперативке:)) и по мере приближения подгружать коорд. и показывать обьекты. Мне в голову пришла одна мысль: пусть у нас есть террайн. Когда мы двигаемся террайн двигается вместе с нами все время меняясь по сохраненным параметрам. Нужно будет только двигать тектуру чтоб было видно что мы двигаемся. Наверно никто не поймет. Выкласти это в виде текста это что-то. Когда найду подходящий пример - скажу. Спасибо(спасибо и тем кто поймет последнюю мысль:)) |
Re: Скрипт и infinity map
Мысль понята, но изменение ландшафта, это ресурсоёмкий процесс.
Зачем мудрить? Просто двигай персонажа, в морровинде, там так и было, значит, при прохождении каких-либо участков, когда персонаж входил в какой-либо отсек (думаю там поделен весь мир на квадратики, это и есть отсеки, они большие, к примеру 1км на 1км), так вот когда этот отсек, входил в поле зрения, то подгружались все объекты в этом отсеке. Скрипты, это текст, хранящийся в поределённых файлах, текст, так сказать имеет свой язык (его придумывает кодер, по желанию, удобству и умению), так вот далее этот файл считывается, и выполняется, например глянь какойнибудь xml файл, это и скриптовая, и хранение данных, вообще система xml удобна в работе, и достаточно функциональна. Надеюсь ответил на вопросы. |
Re: Скрипт и infinity map
Насчет скрипта thnx.Понял.
А насчет мира: я хочу создать поистине гигантский мир. Для этого одного терайна не хватит. Можно хранить не все точки. Остальные просто интерполировать. Впрочем, если есть идеи - выкладывайте!!! |
Re: Скрипт и infinity map
Ландшафт, это тот-же Мешь. Просто делай предзагрузки.
Вот иди Сюда, тут моя небольшая разработочка, всё просто, там исходник, значит, этот остров примерно ~5x5 км. Какойто мэшь просто удаляй, какойто загружай, но это не постоянно, а в моммент предзагрузки, при какомто условии, например стандартное, это координата игрока вошла в поле определённого участка, то загружать всё что на этом участке, и всё что прилегает, а то что уже дальше, удалять. Таким способом мир может быть и 50х50 км. =) |
Re: Скрипт и infinity map
А если ты дошел до края одного участка, что ты будешь видеть там, где должен быть уже другой участок? Пропасть? Я хотел бы создать неперерывний мир. Можно поставить camerafogrange на 1000, а проверять расстояние до обьектов на 1500, и не скаждым проходом, а,скажем, каждые 5-10. Поскольку обекты подгружаються дальше чем ты можешь увидеть, то рывков не будет видно(если твоя скорость не слишком большая). И система не страдает:).
|
Re: Скрипт и infinity map
неа =) страдает, т.к. блиц Очень тяжко держит в памяти наличие большого колличества объектов.
Ты не совсем понял, я имею ввиду, что загруженных участков будет постоянно 9, центральный, это где он находиться, и все прилегающие к нему, если игрок вошёл в другой участок, то нужно загружать (если не загруженны), все его прилегающие учаски, а те что ещё дальше, то удалять. Вот, крч, набросал. Тут значит, пример перемещения, из сектора в сектор: ![]() ![]() Тёмно Зелёный - Игрок. Светло зелёный - Текущий сектор. Светло жёлтый - прилегающие, они тоже загружены. Далее, второй рисунок: Розовый - эти сектора откгружаются, и всё в них удаляется Полностью! Ярко жёлтый - загруженный сектора. |
Re: Скрипт и infinity map
Тож хорошо! thnx!
Цитата:
Если обьект вне зоны зрения, он удаляется, а не хайдится. Если в зоне то создается с коорд взятыми из файла. |
Re: Скрипт и infinity map
Да только не постоянно, а на переходах между секторами. Делать предзагрузку. А тобудет лаговать постоянно если.
|
Re: Скрипт и infinity map
вот координаты какраз таки можно держать и в оперативке.
128 метров хватит на 4 194 304 - элементный 4-х флоатовый массив (3 на координаты, 1 на свои нужды). или 2048 * 2048 матрицу. в общем больше чем надо, а т.к. 512 для домашней персоналки уже давно стали стандартом, то об етом факте можно не беспокоиться. |
Re: Скрипт и infinity map
HolyDel угу, что-то я не сообразил.
Тоесть координаты и инфу можно хранить и в оперативке, но обхекты нет, тоесть объекты нужно загружать, т.к. HideEntity только прячет, но нагрузка будет всёравно. |
Re: Скрипт и infinity map
Какой смысл грузить оперативку, если можно этого избежать???
Насчет того сикоко туды(в оперативку) можно коорд. впихнуть я знаю. Но не забывай что помимо статичного мира будут и динамические обьекты(птички, лоси, белочки :)) и прочее из игры. У меня перс не будет двигаться быстро как самолет, так что можно проверять через каждые 10 проходов, а чтобы обьекты вдруг не появлялись в зоне видимости проверять на расстоянии большем от camerarange или fogrange настолько, сколько перс может пройти за эти 10 проходов. Секторами тож хорошая идея, но боюсь, что при переходе из сектора в сетор комп будет подвисать(хотя не знаю). |
Re: Скрипт и infinity map
можно проверять и каждые 100 проходов. ето не суть.
вопрос в другом, охота ли тебе возиться с seek-ами, если охота- пожалуйста, флаг в руки и барабан на шею, если неохота и ты планиуреш последовательно считывать данные выбирая нужные - хм, думаю сам понимаеш что простыми "подвисаниями" тут не отделаешся, будут задержки, будет мат со сторыны юзеров в сторону разработчиков. мое имхо осталось прежним, грузить все ето в оперативку, потом как говорил МоКа. |
Часовой пояс GMT +4, время: 19:12. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot