Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Игры » как работает винт и оператива в играх?

Ответить
Настройки темы
как работает винт и оператива в играх?

Аватара для bogmut

Забанен


Сообщения: 413
Благодарности: 2

Профиль | Цитировать


У меня общий вопрос о работе оперативы и жёсткого диска в играх.Вот допустим миссия вначале загрузилась с жёсткого в оперативу.Она целиком загружается или в процессе игры все равно идут подгрузки с винчестера? Почему все сразу не грузится в оперативу чтобы не было необходимости обращаться к медленному винту в ходе игры? Или это игры так сделаны? Короче интересует-подгрузки текстур все равно с винта идут? А почему они сразу не записываются в быструю память? Тем более оперативы навалом...

Отправлено: 12:36, 30-12-2013

 

Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Зависит от игры. В играх, разбитых на отдельные небольшие секторы, их загрузка может происходить целиком.
В играх, реализующих подобие "открытого мира", всегда изначально загружаются только близлежащие области, а в процесссе игры необходимые геометрия и текстуры подгружаются с диска. Почему не загружается всё сразу? По тысяче причин. Причина первая состоит в том, что никому это не нужно. Загрузка в любом случае происходит в фоновом режиме, так что никакого улучшения процесса игры от предзагрузки Вы не почувствуете. Для проверки я пробовал копировать игры целиком на RAMдиск и сравнивал впечатления - никакой разницы. К тому же, при наличии свободной памяти всегдпа можно считать файлы игры в дисковый кэш. Результат будет тот же, что и от записи на RAMдиск (даже, по моим измерениям, доступ будет осуществляться на несколько процентов быстрее).
А теперь подумайте вот о чём: сколько времени будет стартовать игра, заранее считывающая в ОЗУ все 10-15ГБ своих файлов?
Другая причина состоит в том, что большой объем ОЗУ на сегодняшний день скорее исключение, чем правило. Поэтому не слишком разумно для игры пытаться отожрать себе в несколько раз больше, чем ей реально необходимо. Подгрузку всё равно придется реализовывать для игроков со слабыми компьютерами, так какой смысл писать дополнительный код для тех, у кого ОЗУ много?
Третья причина состоит в том, что игры часто выпускаются в виде 32-хбитных исполняемых файлов. Соответственно, загрузить данные в память одного процесса в люблм случае не получится. Создавать дополнительные нити просто для хранения данных? А зачем, когда их можно прочитать непосредственно перед тем, как они понадобятся?
Причина четвертая: возможность доработки и расширения программ (например, путем выпуска дополнений). Если делать так, как Вы предлагаете, системные требования по объему памяти будут меняться после каждого нового DLC. И пользователь будет со счетами в руках прикидывать, на сколько DLC ему хватит памяти и какие лучше выбрать.
И так далее, до бесконечности...

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:03, 30-12-2013 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 5828
Благодарности: 1242

Профиль | Цитировать


Цитата AMDBulldozer:
Причина первая состоит в том, что никому это не нужно. Загрузка в любом случае происходит в фоновом режиме, так что никакого улучшения процесса игры от предзагрузки Вы не почувствуете »
В целом всё правильно, но вот здесь промашка вышла. Не всегда подзагрузка идёт в фоновом режиме. Зачастую это происходит на глазах у пользователя и прерывает игровой процесс на ощутимые десятки секунд, а то и минуты. Например TES IV Oblivion, где реализован псевдооткрытый мир, т.е. можно идти куда хочешь, и вся дикая местность, леса, поля и т.д. открыты сразу и целиком, но каждая пещера, каждый город, каждый домик - это изолированные незагруженные локации, которые необходимо "загружать", вручную активировав триггер. Если пытаться войти или выйти из города не через триггер на городских воротах, а читами через стену, то там будет пустота и она никогда не заполнится путем фоновой подзагрузки. Бывает, это раздражает, особенно если в компьютере 32 ГБ памяти, а кто-то видите ли поленился присоединить пару строчек кода, чтобы владелец этой памяти мог чувствовать себя комфортно.

Последний раз редактировалось Coutty, 06-01-2014 в 11:00. Причина: исходное сообщение перенесено


Отправлено: 10:17, 06-01-2014 | #3


SHVtYW4=


Сообщения: 3451
Благодарности: 1273

Профиль | Отправить PM | Цитировать


Цитата bogmut:
оперативы и жёсткого диска в играх. »
Ещё забываешь про файл подкачки и хочешь того или нет но он тоже так же используется в играх. Соответственно файл подкачки: он же виртуальная память; он же файл pagefile.sys расположенный на системном диске - таким образом обращение к жёсткому диску всё равно происходит.

Цитата Leha Ares:
то там будет пустота и она никогда не заполнится путем фоновой подзагрузки. Бывает, это раздражает, особенно если в компьютере 32 ГБ памяти, а кто-то видите ли поленился присоединить пару строчек кода, чтобы владелец этой памяти мог чувствовать себя комфортно. »
На то и рассчитаны минимальные системные требования.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 13:47, 06-01-2014 | #4


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата Leha Ares:
Не всегда подзагрузка идёт в фоновом режиме. Зачастую это происходит на глазах у пользователя и прерывает игровой процесс на ощутимые десятки секунд, а то и минуты. Например TES IV Oblivion, где реализован псевдооткрытый мир »
Простите, не соглашусь. Я сразу упомянул о двух возможностях: загрузке небольшого сектора целиком при перемещении между небольшими секторами и постепенной подгрузке окружения при перемещении по открытому миру. Упомянул, именно потому, что хорошо помнил как про Oblivion, так и про World of Warcraft и другие подобные игры, когда писал своё сообщение. Эти игры представляют собой не полностью открытый мир, а комбинацию больших открытых миров с изолированными локациями. Никакие процессы (кроме самого игрока) не могут пересекать границы этих локаций. Поэтому, когда Вы заходите, к примеру в дом в Oblivion'е, подгрузка данных осуществляется при переходе. Если переходите через портал куда-нибудь в "Парадиз" Каморана или на Дрожащие острова, происходит то же самое. Если помните, в Oblivion Construction Set такие объекты как двери и порталы относятся к классу телепортеров.
Они перемещают игрока в некоторое произвольное место, окружение которого, понятно, отсутствует в памяти компьютера. Поэтому его приходится загружать в процессе перемещения. Это абсолютно тот же процесс, который имеет место при загрузке сохранения. Сильно сомневаюсь, чтобы его можно было решить "парой строчек кода".

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Отправлено: 15:11, 06-01-2014 | #5


Забанен


Сообщения: 5828
Благодарности: 1242

Профиль | Цитировать


Цитата AMDBulldozer:
Никакие процессы (кроме самого игрока) не могут пересекать границы этих локаций. »
Не понял, какие процессы? Если имелись ввиду NPC, то они спокойно это делают, как по команде игрока, так и по собственной инициативе.

Цитата AMDBulldozer:
Поэтому его приходится загружать в процессе перемещения. Это абсолютно тот же процесс, который имеет место при загрузке сохранения. Сильно сомневаюсь, чтобы его можно было решить "парой строчек кода". »
Достаточно было как-то настроить количество заранее подгружаемых изолированных локаций в зоне досягаемости игрока в зависимости от имеющейся в наличии памяти, вот и всё. Чтобы можно было моментально войти и выйти в любую из них без дозагрузок, а не так как они сделали.

Отправлено: 16:19, 06-01-2014 | #6


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата Leha Ares:
Не понял, какие процессы? »
Физические. Или магические. К примеру, взрыв рядом с порталом не нанесет ущерба объектам по ту сторону. А стрела не пролетит сквозь него. Причина очевидная - хоть объекты за дверью дома и находятся "рядом" в бытовом понимании этого слова, на деле они расположены в другой вселенной (понятно, что Вы не сможете, пройдя сквозь стену дома, оказаться на улице). Кстати, как мне кажется, судя по анализу сценариев Oblivion, механика игры такова, что NPC в Oblivion (да и в WoW) не могут самостоятельно проходить через порталы (алгоритм, прокладывающий им путь, работает только в "обычном" пространстве). Насколько я понял, они не перемещаются посредством порталов, а генерируются сценарием на другой его стороне в предусмотренных игрой случаях (по крайней мере те, которые я сам модифицировал).

В качестве иллюстрации приведу простейший пример: заходите в помещение с порталом, запирая за собой дверь (к примеру, консольной командой "lock"). Телепортируетесь. Спутник мгновенно появляется рядом, хотя воспользоваться телепортом он не мог (а на то, чтобы пройти к телепорту сквозь препятствие, как NPC делают если путь заблокирован, у него просто времени не было). Или пишете телепорт отправляющий проходящего в случайное место. Думаете спутника туда выбросит? Как бы не так! Он всегда окажется рядом. Кстати, заметьте, что NPC никогда не пользуются телепортами Frostcrag spire. Даже если послать их в город, стоя прямо рядом с его порталом. Алгоритм прокладывания маршрута, как уже было отмечено, принципиально игнорирует телепорты.

В чем разница, спросите Вы? Она принципиальна - если программист заранее не предусмотрел возможность, скажем, стражнику зайти в дом, а спутнику следовать за героем, то он этого сделать и не сможет. Множество раз видел такое в Oblivion. Про мобов, которые не могут выходить из инстансов WoW, полагаю можно даже не упоминать.
Цитата Leha Ares:
Достаточно было как-то настроить количество заранее подгружаемых изолированных локаций в зоне досягаемости игрока »
Да, полагаю так можно было бы сделать, хотя тут и имеется некоторое количество проблем. Правда, на мой взгляд, не слишком принципиальных - в конце концов, переход с клетки на клетку в "открытом мире" Oblivion тоже осуществляется неявными телепортерами. Это же не мешает эти самые клетки заранее подгружать.

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Последний раз редактировалось AMDBulldozer, 06-01-2014 в 18:19.


Отправлено: 17:27, 06-01-2014 | #7


Забанен


Сообщения: 5828
Благодарности: 1242

Профиль | Цитировать


Цитата AMDBulldozer:
механика игры такова, что NPC в Oblivion (да и в WoW) не могут самостоятельно проходить через порталы »
Кажется мне, это неверно. NPC, по крайней мере враждебные, крайне запросто способны преследовать игрока, переходя из локации в локацию. Например Умбра, представляющая высокую опасность для неподготовленного героя запросто способна гнаться за незадачливым приключенцем от своих руин аж до имперского города и вырезать там половину личного состава стражи и жителей, пока не будет наконец убита. Да и мирные жители запросто выходят из домов на улицы и т.д. Какая разница, как они это делают технически? Делают, и этого достаточно.
Ну а алгоритм спутников лучше вообще не трогать. Он представляет из себя злейшие костыли и крайне несовершенен.

Отправлено: 19:42, 06-01-2014 | #8



Компьютерный форум OSzone.net » Компьютеры + Интернет » Игры » как работает винт и оператива в играх?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
новая оператива. комп не подает признаков жизни Djonya Материнские платы и память 17 01-04-2013 11:37
MSFT SQL Server - sql, 1C, win2008r2 и оператива(хавает как по секундам) santey007 Программирование и базы данных 7 03-12-2012 14:22
Разное - Оператива Rubichek Прочее железо 3 09-04-2011 02:36
HDD - Винт не работает. kda12 Накопители (SSD, HDD, USB Flash) 5 21-03-2008 11:17
винт работает странно bruder Непонятные проблемы с Железом 12 15-11-2007 15:35




 
Переход