Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 16:46   #1
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
Радость Принцип загрузки локаций в ОЗУ

Расскажите, кто знает, как вобще осуществляется загрузка локаций в RAM в профессиональных играх или как это делаете вы? Речь идёт о 3D игре с объектами, хранящимися в 3dmax'овских файлах. Соответственно, под локацией я понимаю набор данных о рельефе, объектах, их координатах и характеристиках.
anyx вне форума Ответить с цитированием
Старый 22.09.2009, 17:03   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ну самый простой вариант, если нам не придется летать и закапываться, то такой пример (я это, кажется, видел в элдер скролсе)

ннннн
нзззн
нзтзн
нзззн
ннннн

Где, н - не загруженая локация, з- загруженая, т - локация в которой находится игрок. (т.е. мы грузим толкьо соседние локации и текущую)

Так же нет необходимости грузить дома и другие сооружения (если они выполнены в виде отдельной локации).
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 22.09.2009, 17:08   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Например:
В старой как мир Morrowind загрузка шла динамически, то бишь, так:
Был большой квадрат (представил?) В нем по центру квадрат в два раза меньше. Игрок в данный момент находится в центре внутреннего квадрата. Если он, двигаясь по локации пересекал границы квадратов, то маленький квадрат "переезжал" так, что игрок становился в центре его. Большой квадрат, разумеется следовал за ним. Так вот представь бо-о-о-ольшой мир. Положи на него эту систему и наблюдай: те предметы, объекты etc. которые оказались внутри большого квадрата в данный момент находятся в опер памяти, как только они выходили за пределы большого квадрата, память очищалась именно от них. Таким образом создается иллюзия одной о-о-о-огромной локации.
ROD, когда ты успел?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.09.2009, 21:03   #4
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
ROD, когда ты успел?
Да он тут живет ))))

Принцип тут логичный, что уже показали и описали, ...следует только ввести отслеживание, какая из границ была пересечена, а их четыре у текущей локации. Таким образом мы грузим не все окружение а лишь нужные фрагменты. Но, нужно понимать, что статические и динамические объекты - это разные вещи, поэтому, описанной системой грузится только статика, динамические же объекты отображаются только в текущей локации, поскольку дойдя до них, они 100 раз изменят свое состояние.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.09.2009, 21:08   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

В GLScene, объект Freeform при загрузке загружается в RAM
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определение типа ЦП и ОЗУ 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