Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Переход на другой уровень (GLSCene)   Найти похожие ветки 

 
Colt1978   (2004-10-04 10:49) [0]

Уважаемые господа, подскажите как правильно сделать следующую вещь:
Есть здание, определены координаты пространства перед входом в здание, объект попадая в это пространство должен какбы зайти во внутрь здания. В чём проблемма:
Я совсем немного работаю в GLScene и поэтому не знаю по какому пути двигаться дальше - толи в проекте заранее накидать 2-ю форму с новыми компонентами (фривормой, актёром и т.д.) и при попадании в указанное пространство выводить 2-ю форму, скрывая первую или освобождать компоненты 1-й формы и грузить в них же другие текстуры, объекты и т.д., только при 2-м способе есть недостаток: текстур больше и внутренности здания будут тоже иметь свои пространственные координаты, попадая в которых объект будет вызывать те или иные события, поэтому несидльно бы хотелось разрушать то, что сделано в 1-й форме (объявленные координаты и пр. чушь.. не могу что-то объяснить путём....)

Подскажите какой способ наиболее приемлем ?


 
NailMan ©   (2004-10-04 12:53) [1]

имхо первый более логичный, а особенно если в динамике создавать все хозяйство прозрачно(в фоне). Со вторым способом должны быть неминуемые лаги, что не выглядит супер(если конечно как-то не сгладить переход).

---
WBR, NailMan aka 2:5020/3337.13


 
Colt1978   (2004-10-04 15:41) [2]

Интересно, а что будет в это время с памятью.... у меня к примеру одна карта здания с окр. средой 6 метром, потом я захожу внутрь, допустим ещё одна карта будет весить 3 метра и так всегда накапливаться метры будут или можно на время както 1-ю  карту выгрузить ??? Если можно (наверняка) то какой командой ?
Мож кто кодом понятным чайнику побалует ?


 
NailMan ©   (2004-10-04 17:06) [3]

Конкретикой не одарю, но мысли у меня такие:

В былые годы я делал РПГ по которой можно было топать. Карта была разделена на блоки. Одновременно загружалось 9 блоков(матрица 3х3). Блоки небольшие(каждый 4 экрана [2х2] так как игра была в ASCII-графике).

Если игрок подходил к внешним границам внешних блоков, то подгружались соседние 9 блоков и игрок перебирался туда, предыдущие 9 блоков выгружались. Если игрок наступал на точку перемещения(перед дверьми домов), то он перемещался точно также, только безусловно(там была обратная точка перемещения).

Можно попробовать аналогичную систему передвижения на карте, только не по 9 блоков грузить, а скажем 4, причем в такой конфигурации:
 
 0
00<-
 0

стрелка обозначает точку вхждения игрока в следующую зону карты.
"0" - Блок.

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

ЗЫ: А вообще такие весчи так не делаются(все загрузил/выгрузил). К примеру в твоем случае было бы шикарно реализовать расшаренные ресурсы для всей карты. У тебя же не все куски карты с разными текстурами и т.д.? Наверняка соседние куски имеют 80% одинаковых текстур. Зачем лишний раз все грузить? Загружаешь пр переходе нужное(то чего еще не было), а на лишние ресурсы сделать таймаут существования. Скажем не потребовались они сколько-то времени или скажем переходов из куска в кусок - убил ресурс. Если в следубщий переход опять появится, то чтож загрузится опять, другой какой-нить подвинется в nil.

---
WBR, NailMan aka 2:5020/3337.13


 
Colt1978   (2004-10-04 19:23) [4]

Я планирую перемещение внутри здания, весь каркас я хочу загрузить зараз в память... а внешнюю карту выгрузить, как это сделать ?
FreeForm1.??? что дальше или это както не так делается ?


 
miek   (2004-10-04 21:42) [5]

Второй путь самый правильный, у тебя же явно не два уровня будет, а больше, и вообще полезнее освоить динмаческую генерацию сцен. А лаги - какие еще лаги? Он же не морровинд делает.


 
DeadMeat ©   (2004-10-04 23:08) [6]

А лаги будут... Карта небось метров на 5-пять...
Лучше (ИМХО) держать в памяти 2-два куска... Один сейчас, другой, тот что ближе всего. При переходе не очень будет заметно, но пока он (актер) будет приближаться к нужной точке можно грузить вторую часть постепенно, разбив ее на сектора...

Еще как вариант, опятьже разбить все на сектора по меньше и следить за видимостью каждого в определенном радиусе. Чем меньше сектора, тем быстрее будут грузиться по отдельности. Естественно все сразу грузить нельзя, а по чуть-чуть... Как я уже сказал, пока актер подходит, грузить по немножку с таким расчетом, чтобы когда он подойдет все было загружено...

Плюс, можно сделать как в том же Resident Evil или Thief III - подошел он к двери, и пока дверь открывается (это надо делать отдельной анимацией, во весь экран и без всего остального) грузить, скажем, внутреннюю часть помещения... Вместо двери, можно изобразить какой-нить портал...

---
...Death Is Only The Begining...


 
Colt1978   (2004-10-05 06:07) [7]

Спасибо mielk, я не пишу какойто экшен, хоть у меня и не будет 2 уровня всеже повторюсь. Для данной программы мне достаточно именно как ты называешь 2 уровня. В этой игре вообще не будет уровней как таковых все будет на одной карте построено, единственное что мне надо, так это то, что когда актёр вне помещения - грузится окружающая среда, когда заходит во внутрь помещения - грузятся кишки того или иного помещения. Я думаю поскольку в помещениях текстуры будут практически одинаковыми то вот и спрашиваю: всё лепить на 1-й форме или как я думаю мне будет достаточно 3-4-х форм ? Где можно посмотреть пример с динамической геренацией стен ?
DeadMeat, привет ! Давно тебя не видел в on-line. Твои идеи как всегда гениальны и в тоже время просты, давай в аське состыкуемся
Извиняюсь за офтопики.


 
cyborg ©   (2004-10-05 10:16) [8]


> [7] Colt1978   (05.10.04 06:07)

Если у тебя не супер пупер мега игра, то грузи всё вместе в начале загрузки игры, чтобы потом всё летало ;)


 
П7   (2004-10-05 10:40) [9]

Я так понимаю, что у тебя будет вот что:
1. Один большой уровень, на котором располагаются макеты всех домов и прочие объекты.
2. Каждый дом будет своего рода телепортом на отдельный маленький подуровень.
3. Текстуры подуровней будут те же, что и текстуры Основного уровня

Тогда тебе нужно:
1. В начале загрузить все текстуры и Основной уровень, который не выгружать до выхода из игры
2. При переходе в подуровень ДОгружать его (подуровень) и выводить вместо Основного уровня, при этом Основной уровень не выгружать.
3. При возврате на Основной уровень удалять ранее загруженый подуровень, чтобы память не отжирал.

ВОтЪ! (:


 
dimodim   (2004-10-05 22:42) [10]

ДЕЛЬФИ без багов - смешной анектод про ламера


 
miek   (2004-10-05 22:57) [11]

2dimodim: Кто бы говорил, ага?

2colt1978: тогда нечего рассуждать, клади на одну форму. Если затормозит, подумаем о BSP:), но это вряд ли..


 
DeadMeat ©   (2004-10-06 02:49) [12]


> Если затормозит, подумаем о BSP:), но это вряд ли..

Хе-хе. хе-х... И тут BSP... ;)
Кстати, может знаешь редактор, в котором проще всего 3DS переделать в BSP... Знаю что прямо конвертнуть его нельзя. А еще лучше, если можно из него (как-нибудь перерисовывая чтоли) сделать MAP, а потом уже BSP или OBSP...

---
...Death Is Only The Begining...


 
Colt1978   (2004-10-06 06:18) [13]

Да, былобы не плохо заиметь хотя бы ссылку на такой редактор, скачаю с любого места как говорится т.к. давно охочусь за таким добром..


 
Colt1978   (2004-10-17 18:37) [14]

Подскажите всёже:
На одной форме несколько виеверов размещать и когда нужно те или иные отключать и прятать или всёже использовать новую форму для каждого виевера?



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.056 c
1-1105360466
Yurij-7
2005-01-10 15:34
2005.01.23
Два действия на одной кнопке


3-1103223521
Fin
2004-12-16 21:58
2005.01.23
Не понял, на счет транзакций


1-1104825656
Dr. Genius
2005-01-04 11:00
2005.01.23
Не устраивает ShellExecute-ссылка


3-1103636653
Guitar
2004-12-21 16:44
2005.01.23
Вернуть параметры из хранимой процедуры.


1-1105423554
Лида
2005-01-11 09:05
2005.01.23
ComObj





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский