|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.09.2009, 16:46 | #1 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
Принцип загрузки локаций в ОЗУ
Расскажите, кто знает, как вобще осуществляется загрузка локаций в RAM в профессиональных играх или как это делаете вы? Речь идёт о 3D игре с объектами, хранящимися в 3dmax'овских файлах. Соответственно, под локацией я понимаю набор данных о рельефе, объектах, их координатах и характеристиках.
|
22.09.2009, 17:03 | #2 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Ну самый простой вариант, если нам не придется летать и закапываться, то такой пример (я это, кажется, видел в элдер скролсе)
ннннн нзззн нзтзн нзззн ннннн Где, н - не загруженая локация, з- загруженая, т - локация в которой находится игрок. (т.е. мы грузим толкьо соседние локации и текущую) Так же нет необходимости грузить дома и другие сооружения (если они выполнены в виде отдельной локации).
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
22.09.2009, 17:08 | #3 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Например:
В старой как мир Morrowind загрузка шла динамически, то бишь, так: Был большой квадрат (представил?) В нем по центру квадрат в два раза меньше. Игрок в данный момент находится в центре внутреннего квадрата. Если он, двигаясь по локации пересекал границы квадратов, то маленький квадрат "переезжал" так, что игрок становился в центре его. Большой квадрат, разумеется следовал за ним. Так вот представь бо-о-о-ольшой мир. Положи на него эту систему и наблюдай: те предметы, объекты etc. которые оказались внутри большого квадрата в данный момент находятся в опер памяти, как только они выходили за пределы большого квадрата, память очищалась именно от них. Таким образом создается иллюзия одной о-о-о-огромной локации. ROD, когда ты успел?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
22.09.2009, 21:03 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Да он тут живет ))))
Принцип тут логичный, что уже показали и описали, ...следует только ввести отслеживание, какая из границ была пересечена, а их четыре у текущей локации. Таким образом мы грузим не все окружение а лишь нужные фрагменты. Но, нужно понимать, что статические и динамические объекты - это разные вещи, поэтому, описанной системой грузится только статика, динамические же объекты отображаются только в текущей локации, поскольку дойдя до них, они 100 раз изменят свое состояние.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
22.09.2009, 21:08 | #5 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
В GLScene, объект Freeform при загрузке загружается в RAM
pushl $0x18E3DF6B
call ICQ |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
определение типа ЦП и ОЗУ | ALEKS_STRELOK | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 01.04.2009 05:22 |
Как очистить озу от программы? | Bravo | Общие вопросы C/C++ | 11 | 26.10.2008 01:16 |
если БД занимает ОЗУ? | фЁдОр | БД в Delphi | 9 | 10.01.2008 21:57 |
Загрузка ОЗУ | HelloZAPOR | Общие вопросы Delphi | 2 | 20.07.2007 18:40 |
Срочная помощ ПЗУ.ОЗУ | DSL | Помощь студентам | 2 | 02.04.2007 18:18 |