Помощь - Поиск - Пользователи - Календарь
Полная версия: Частичный перенос игры в оперативную память
UoKit.com Форумы > Ultima Online > Общий
Asin
Все мы знаем, что самое уязвимое место компьютера-жёсткий диск. Но полностью 3Д игру перенести в оперативку не получится, учитывая, что у меня всего 8 Гб оперативки. Можно ли перенести в оперативную память часть клиента, скажем, наиболее часто загружаемые локации? Это бы повысило производительность нереальным образом.
Kanibal
Цитата(Asin @ 26.8.2014, 22:13) *

Все мы знаем, что самое уязвимое место компьютера-жёсткий диск. Но полностью 3Д игру перенести в оперативку не получится, учитывая, что у меня всего 8 Гб оперативки. Можно ли перенести в оперативную память часть клиента, скажем, наиболее часто загружаемые локации? Это бы повысило производительность нереальным образом.

Тут уместнее было бы переносить мулы в память видеокарты, Staticz вроде что-то там обещал сделать когда-нибудь потом. А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.
Asin
Цитата(Kanibal @ 26.8.2014, 23:16) *

Тут уместнее было бы переносить мулы в память видеокарты, Staticz вроде что-то там обещал сделать когда-нибудь потом. А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.

Что за мулы? Я чайник. И как на счёт перенести отдельные папки в RAM диск? Не весь клиент.
Kanibal
Цитата(Asin @ 26.8.2014, 22:56) *

Что за мулы? Я чайник. И как на счёт перенести отдельные папки в RAM диск? Не весь клиент.

Можно и отдельные папки, но зачем? Я могу написать как сделать сие извращение, но оно абсолютно бесполезное ИМХО.
Цитата(Asin @ 26.8.2014, 22:56) *

Что за мулы?

.mul файлы.
StaticZ
Цитата(Kanibal @ 26.8.2014, 23:16) *
А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.
На самом деле в случае с UO (classic client) производительности добавит т.к. ускорит чтение данных (UO в отличии от большинства других игр не грузит все что ему надо в память а читает прямо из файлов с харда), однако реальный выигрыш можно будет почувствовать лишь на очень слабых машинах (вот только на них врядли хватит оперативки на такую роскошь) или на каких-то сверх безумных кастомных серверах, где число статики и объектов на экран измеряется тысячами и десятками тысяч (но опять же на данный момент таких серверов попросту нет) ну или как вариант в случае использования чего-то в стиле моего хака в UCS позволяющего увеличить область прорисовки, ибо увеличение дальности на 50% увеличивает загрузку в 2 раза, на 100% - в 4 раза и т.д (хотя даже в этом случае современный комп тянет без проблем даже с апскейлером)... Вообще это можно судить по FPS, клиент принципиально не выдает больше 20, т.к. не видит в этом смысла. (а при включении опции понижения FPS в настройках так и вообще не более 10). Если FPS не падает ниже 20, то сколько не оптимизируйте визуально разницу даже не заметите.

ЗЫ Кстати в UCS сделал возможность запретить маппать мулы и грузить их всех принудительно в ОП. Но в этом случае загрузка идет куда дольше, т.к. надо загнать все 2 Гб данных в оперативу. Выигрыша в производительности лично я вообще никакого не заметил.
Kanibal
Цитата(StaticZ @ 26.8.2014, 23:05) *

UO в отличии от большинства других игр не грузит все что ему надо в память а читает прямо из файлов с харда

Так а толку? Скорость хардов на сегодняшний день более чем 150 мб/сек (мегабайт), а это по размеру даже больше чем некоторые mul файлы. Я сомневаюсь, что UO для работы нужна такая скорость считывания. Оперативка (DDR3), та вообще может несколько раз за секунду пропустить через себя весь клиент, по пропускной способности.

Во всяком случае на глаз разница не будет заметно, будет УО из памяти работать или с харда.

P.S. Я так уже пробовал (вспомнил только что), разницы 0.
StaticZ
Цитата(Kanibal @ 27.8.2014, 0:14) *

Так а толку? Скорость хардов на сегодняшний день более чем 150 мб/сек (мегабайт), а это по размеру даже больше чем некоторые mul файлы. Я сомневаюсь, что UO для работы нужна такая скорость считывания. Оперативка (DDR3), та вообще может несколько раз за секунду пропустить через себя весь клиент, по пропускной способности.

Во всяком случае на глаз разница не будет заметно, будет УО из памяти работать или с харда.

P.S. Я так уже пробовал (вспомнил только что), разницы 0.
Ну не все так просто, во первых 150 это скорость лишь линейного чтения. В реальности чтение идет мелкими блоками из разных файлов из разных их частей. Да и куча времени тратиться на работу с файловой системой, к примеру попробуйте удалить 4 гигабайта иконок - даже на быстром харде процесс займет пол дня... В случае если речь идет не об SSD, то скорость зависит еще от фрагментации данных и от расстояния от центра блина до дорожки с данными. Да и UO не единственная работает с хардом, в фоне как правило туча проблем - кто-то что качает, плеер проигрывает музыку\кино и тд, а ограничение то общее.. Во вторых не так уж это и много, учтите чтобы клиент выдавал даже 20 FPS он должен быть в состоянии отрисовать сцену за 1\20 секунды, даже от линейной скорости это лишь 7.5 мб, столько примерно весят 100 16-битных картинок размером 192х192, не мало конечно, но и далеко не так уж и много (так для справки 1 анимация в UO от 21 до до 35 действий, каждая в 5 направлениях, это уже 100-150, а в каждой далеко не 1 кадр, конечно нет смысла грузить все и сразу, но сами видите цифры не такие уж и фантастические в реальной жизни).... Вообще даже на мощном компе UO с трудом потянет в разрешении 2560х1600, тупо не хватит быстродейсвия. Недавно делал тест GDI блитера - тупо закраска фона на мелкой форме дает 30-50 тысяч FPS, а при развороте на весь экран - 120 максимум, а там рендер куда сложнее....
Kanibal
Цитата(StaticZ @ 26.8.2014, 23:55) *

Ну не все так просто, во первых 150 это скорость лишь линейного чтения. В реальности чтение идет мелкими блоками из разных файлов из разных их частей. Да и куча времени тратиться на работу с файловой системой, к примеру попробуйте удалить 4 гигабайта иконок - даже на быстром харде процесс займет пол дня... В случае если речь идет не об SSD, то скорость зависит еще от фрагментации данных и от расстояния от центра блина до дорожки с данными. Да и UO не единственная работает с хардом, в фоне как правило туча проблем - кто-то что качает, плеер проигрывает музыку\кино и тд, а ограничение то общее.. Во вторых не так уж это и много, учтите чтобы клиент выдавал даже 20 FPS он должен быть в состоянии отрисовать сцену за 1\20 секунды, даже от линейной скорости это лишь 7.5 мб, столько примерно весят 100 16-битных картинок размером 192х192, не мало конечно, но и далеко не так уж и много (так для справки 1 анимация в UO от 21 до до 35 действий, каждая в 5 направлениях, это уже 100-150, а в каждой далеко не 1 кадр)....

Дело в том, что сейчас уже в каждом 4-ом, если не меньше, компьютере уже стоит SSD, так что проблема с кучей мелких файлов отпадает сама по себе. Хотя я пробовал и на обычном харде с кластерами по 64 кб, и на программном RAID 1 с такими же кластерами, разницы нет, ну или я её попросту не увидел. Старым игрушкам, которые читают с харда, такая скорость не нужна, они потому и старые что расчитаны были на другое железо, а новые уже грузят всё по максимуму в память и потом фоном подгружают кусочки.

Там кстати в УО что-то было про размер кэша, в uo.cfg видел ещё на 2.0.3. Не знаешь, что за настройка такая?

P.S. 4 гигабайта иконок это очень люто smile.gif
StaticZ
Цитата(Kanibal @ 27.8.2014, 1:12) *
Дело в том, что сейчас уже в каждом 4-ом, если не меньше, компьютере уже стоит SSD, так что проблема с кучей мелких файлов отпадает сама по себе.
Не сказалбы, кроме того даже если и есть SSD обычно его отводят под систему и работу а не для игр. Да и файлы открываются лишь раз при запуске клиента....

Цитата(Kanibal @ 27.8.2014, 1:12) *
Старым игрушкам, которые читают с харда, такая скорость не нужна, они потому и старые что расчитаны были на другое железо, а новые уже грузят всё по максимуму в память и потом фоном подгружают кусочки.
Ну УО образца 97 года и 2010+ далеко не одно и тоже. Клиент на первом пне не потянет перегруженную статикой карту, если обратите внимание там для экономии даже полы в домах делались не статикой а текстурами. А позже много еще всяких красивостей добавили типа того же цветного освещения. Кроме того сейчас уже из клиента выжимают все что только можно - больше статики, большии разрешения, динамичная статика\рельеф\гампы и тд и тп. А как я уже сказал производительность 2d графики в голом виде сводиться к частоте CPU и пропускной способности памяти и увеличение радиуса прорисовки в 2 раза даже на современном мощном компе более чем заметно сказывается на производительности клиента (вернее не на его производительности а не его загрузку ЦП). Так что это утверждение верно лишь для игр, в первозданном виде на момент релиза. А что касается УО то сегодняшние минимальные требования я бы сказал pentium 2\3 и то это лишь в случае отсутствия "насилия" над клиентом.


Цитата(Kanibal @ 27.8.2014, 1:12) *
Там кстати в УО что-то было про размер кэша, в uo.cfg видел ещё на 2.0.3. Не знаешь, что за настройка такая?
Самое низкое что ковырял это 6.0. Сию настройку ковырял, но уже не помню для чего именно она... В общем и целом особо ни на что существенное не влияет.


Цитата(Kanibal @ 27.8.2014, 1:12) *
P.S. 4 гигабайта иконок это очень люто smile.gif
Знаю, но как-то пришлось заниматься этим... То что это распаковывалось в 10 раз быстрее чем удалялось до сих пор помню ))
Kanibal
Цитата(StaticZ @ 27.8.2014, 0:42) *

А что касается УО то сегодняшние минимальные требования я бы сказал pentium 2\3 и то это лишь в случае отсутствия "насилия" над клиентом.

Тысяча чертей! Придется всё таки сделать себе апгрейд компьютера.

Iris2 еще хорошая штука, жаль только что корявая немного.
StaticZ
Цитата(Kanibal @ 27.8.2014, 1:53) *
Iris2 еще хорошая штука, жаль только что корявая немного.
Возможно, если не смотреть код... Ну а если посмотреть, то станет понятно что там сам черт ногу сломит, проще с нуля написать чем разобраться в этом кошмаре xD

Из всех сторонних клиентов самым лучшим был PlayUO... Жаль только автор решил забить на его дальнейшее развитие и не захотел открыть сурсы...
Kanibal
Цитата(StaticZ @ 27.8.2014, 1:03) *

Возможно, если не смотреть код... Ну а если посмотреть, то станет понятно что там сам черт ногу сломит, проще с нуля написать чем разобраться в этом кошмаре xD

Есть такое дело. Слабонервным лучше не смотреть.
Цитата(StaticZ @ 27.8.2014, 1:03) *

Из всех сторонних клиентов самым лучшим был PlayUO... Жаль только автор решил забить на его дальнейшее развитие и не захотел открыть сурсы...

Я как-то искал альтернативные клиенты под уо. Нашел штук 7 наверное. Но там только 2-3 более-менее годных.
StaticZ
Цитата(Kanibal @ 27.8.2014, 2:07) *

Есть такое дело. Слабонервным лучше не смотреть.

Я как-то искал альтернативные клиенты под уо. Нашел штук 7 наверное. Но там только 2-3 более-менее годных.
Ну из играбальных по сути лишь Iris2 и PlayUO. Еще флюрасенс был близко и радовал уже возможностями, но разработчику больше некогда им заниматься и его судьба под большим вопросом...
Asin
Мой косяк... Я не сказал, что тема относится не к Ultima Online, а вообще, в принципе. Не играл в UO, просто тему больше некуда вставить>написал в общий форум. Сам играю в TERA, она весит 35 Гб, вот думал о возможности переноса самых часто используемых файлов(например некоторые данжи и основные локации), чтобы они быстрее грузились, так как ОП читает быстрее жёсткого диска минимум в 10 раз...
Soteric
Попробуй RAMDisk или другое подобное приложение для Windows. Я сам не пользовался, но похоже это то что тебе нужно.

Вкратце, идея в том, что ты создашь виртуальный диск, положишь в него нужные папки из клиента, а в самом клиенте вместо папок оставишь ссылки (ярлыки) на них.
StaticZ
Цитата(Asin @ 27.8.2014, 16:52) *

Мой косяк... Я не сказал, что тема относится не к Ultima Online, а вообще, в принципе. Не играл в UO, просто тему больше некуда вставить>написал в общий форум. Сам играю в TERA, она весит 35 Гб, вот думал о возможности переноса самых часто используемых файлов(например некоторые данжи и основные локации), чтобы они быстрее грузились, так как ОП читает быстрее жёсткого диска минимум в 10 раз...
Тогда либо, как было уже выше сказано, путем стороннего ПО создаете раздел в оперативке, копируйте туда все файлы и запускаете это все дело. Но нужно много оперативы (скажем 64 Гб) и копировать придется после каждой перезагрузки системы. Либо при наличии желания и умений, пишем свой шелл, что будет при запуске копировать нужные файлы или их куски в оперативу и дальше навешиваем хуки на WinApi'шные функции работы с файлами дабы подменять обращение к файлам к копированию уже загруженных в оперативку данных. Проблема лишь в адресном пространстве, т.к. оно ограниченно в х32 приложениях 2-3 GB на процесс, придется либо извращаться с созданием меж процессорного взаимодействия или писать сугобо под х64, но в этом случае тогда и сама игра должна быть х64. Но опять же прежде всего нужно много оперативы, ибо дистпетчер памяти винды живет своей одному ему ведомой жизнью. Так что даже если вы что-то и загрузите в оперативку, винда в случае подозрения на малое количество оставшейся памяти может посчитать это расточительным и скинуть все или что-то частично в кэш на харде... А вообще в случае с современными играми, нужно еще понимать что во время загрузки далеко не только идет копирование с харда, а много всего и другого - компиляция шейдеров, создание текстур и копирование их в видеопамять, частичный рендинг сцены и экранных буферов и тд и тп.
Destruction
Есть предположение, что SSD будет экономически более оправдан, нежели RAM Disk.

Соответственно разницы между SSD/RAMDisk - думаю заметить получится плохо, т.е. тормоза связанные с чтением с диска должны пропасть в принципе.
StaticZ
Цитата(Destruction @ 27.8.2014, 18:07) *

Есть предположение, что SSD будет экономически более оправдан, нежели RAM Disk.

Соответственно разницы между SSD/RAMDisk - думаю заметить получится плохо, т.е. тормоза связанные с чтением с диска должны пропасть в принципе.
SSD это хорошо, однако возможности SSD зачастую преувеличивают, надо понимать что SSD бывают разные: mlc, slc, tlc. Не говоря уже про другие показатели. Так что весь потенциал SSD ощутим лишь на дорогих представителях этого семейства. Все что пишут производители - это результаты синтетических тестов, зачастую настолько синтетических, что их даже воспроизвести нельзя ))
Kanibal
Цитата(StaticZ @ 27.8.2014, 17:13) *

SSD это хорошо, однако возможности SSD зачастую преувеличивают, надо понимать что SSD бывают разные: mlc, slc, tlc. Не говоря уже про другие показатели. Так что весь потенциал SSD ощутим лишь на дорогих представителях этого семейства. Все что пишут производители - это результаты синтетических тестов, зачастую настолько синтетических, что их даже воспроизвести нельзя ))

Не отчаивайтесь, всегда есть выход из любой ситуации. Например RAID 1 из SSD дисков.

Цитата(Asin @ 27.8.2014, 15:52) *

Мой косяк... Я не сказал, что тема относится не к Ultima Online, а вообще, в принципе. Не играл в UO, просто тему больше некуда вставить>написал в общий форум. Сам играю в TERA, она весит 35 Гб, вот думал о возможности переноса самых часто используемых файлов(например некоторые данжи и основные локации), чтобы они быстрее грузились, так как ОП читает быстрее жёсткого диска минимум в 10 раз...

Ставь кластеры на разделе с игрой 64кб, скорость чтения должна подрости. Ну это если раздел NTFS.
Soteric
Цитата(StaticZ @ 27.8.2014, 18:05) *
копировать придется после каждой перезагрузки системы

Кстати, конкретно RAM Disk говорит, что может пережить перезагрузку системы: "Persistent RAM disks with an associated on-disk image". Поэтому есть шанс, что копировать не потребуется.
Destruction
Цитата(StaticZ @ 27.8.2014, 18:13) *

SSD это хорошо, однако возможности SSD зачастую преувеличивают, надо понимать что SSD бывают разные: mlc, slc, tlc. Не говоря уже про другие показатели. Так что весь потенциал SSD ощутим лишь на дорогих представителях этого семейства. Все что пишут производители - это результаты синтетических тестов, зачастую настолько синтетических, что их даже воспроизвести нельзя ))

При игре в Lineage II использованием SSD стоимость 3 т.р объемом на 64ГБ - рост производительности был более чем ощутимым (пока все прогружаются секунд по 30 - у меня прогружалось за 1-2 сек).

Вроде бюджетно?
Kanibal
Цитата(Soteric @ 27.8.2014, 17:38) *

Кстати, конкретно RAM Disk говорит, что может пережить перезагрузку системы: "Persistent RAM disks with an associated on-disk image". Поэтому есть шанс, что копировать не потребуется.

Данные из RAMDISK при выключении компьютера скидываются в образ .img и загружаются в ОЗУ после включения. В случае с 35 гигами это будет очень лихая перезагрузка.
Asin
Цитата(Soteric @ 27.8.2014, 17:50) *

Попробуй RAMDisk или другое подобное приложение для Windows. Я сам не пользовался, но похоже это то что тебе нужно.

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

Да, RAMDisk я уже поставил и создал виртуальный диск. Положить нужные папки в него, а потом создать ярлыки на них в клиенте-это примерно как раз то, что я искал. Однако я попробовал-при запуске лаунчер пишет:Файлы повреждены


Цитата(Kanibal @ 27.8.2014, 18:35) *

Не отчаивайтесь, всегда есть выход из любой ситуации. Например RAID 1 из SSD дисков.
Ставь кластеры на разделе с игрой 64кб, скорость чтения должна подрости. Ну это если раздел NTFS.

Раздел NTFS, размер кластера сейчас 4096 байт. Чтобы изменить размер кластера, обязательно форматирование? И вообще, как это поможет?
Kanibal
Цитата(Asin @ 27.8.2014, 18:48) *

Да, RAMDisk я уже поставил и создал виртуальный диск. Положить нужные папки в него, а потом создать ярлыки на них в клиенте-это примерно как раз то, что я искал. Однако я попробовал-при запуске лаунчер пишет:Файлы повреждены

Жесть... Созданные разделы в ОЗУ надо подключать как папки, а потом заливать туда нужные файлы.
Цитата(Asin @ 27.8.2014, 18:48) *

Раздел NTFS, размер кластера сейчас 4096 байт. Чтобы изменить размер кластера, обязательно форматирование? И вообще, как это поможет?

Проще прочитать один кластер размером 64кб чем 16*4кб, которые к тому же могут находится абсолютно в разных местах.
StaticZ
Из всего этого вывод - даешь OLD SCHOOL, нефиг играть в современную муть )))))))
Asin
Цитата(StaticZ @ 27.8.2014, 20:52) *

Из всего этого вывод - даешь OLD SCHOOL, нефиг играть в современную муть )))))))

К сожалению в олдскульный OLD School сейчас почти никто не играет =)
Kanibal
Цитата(Asin @ 27.8.2014, 20:09) *

олдскульный OLD School

Поясни.
StaticZ
Цитата(Asin @ 27.8.2014, 21:09) *

К сожалению в олдскульный OLD School сейчас почти никто не играет =)
Еще как играют, просто аудитория как правило "взрослая". Новые игры как бы это сказать отупели дико. Не говоря уже про шаблоность и прогрессирующем вымирании целых жанров... Мелкие инди разработчиков радуют куда больше гигантов в стиле ЕА....
Warstone
Можно я свои 5 копеек вставлю?..
Вообще говоря, СтатикЗ, читать в память все файлы не совсем надо... Достаточно получить дескрипторы и прочесть вникуда (Просто по обращаться по поинтерам). Этого будет достаточно чтобы Винда подняла все файлы в кеш (именно так работает виндовый файловый кеш). Потом она их положит обратно по мере необходимости оперативки, но если оперативки как грязи... То не положит.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.