[ТЧ,ЧН,ЗП] Многоядерность, Используем два и более ядер |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
[ТЧ,ЧН,ЗП] Многоядерность, Используем два и более ядер |
10.08.2015, 17:08
Сообщение
#1
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Перед прочтением прошу сильно не ругать если что это моя первая тема тут
Перед история поиска или как я нашел строчку - это можно прочесть по желанию. Начну с того что я как я любитель билдоман и уже вошла в привычку моя поисковая сноровка, и она меня не подвила я начал свой день с того что мне захотелось найти в исходниках X-Ray те строки которые отвечают за использование процессора и я начал эти поиски и они прошли недолго часика так за 4-5 в поиске через Notepad++ я сначала нашел вот эти подозрительные строки. Клац // Фунция для тупых требований THQ и тупых американских пользователей BOOL IsOutOfVirtualMemory() { #define VIRT_ERROR_SIZE 256 #define VIRT_MESSAGE_SIZE 512 SECUROM_MARKER_HIGH_SECURITY_ON(1) MEMORYSTATUSEX statex; DWORD dwPageFileInMB = 0; DWORD dwPhysMemInMB = 0; HINSTANCE hApp = 0; char pszError[ VIRT_ERROR_SIZE ]; char pszMessage[ VIRT_MESSAGE_SIZE ]; ZeroMemory( &statex , sizeof( MEMORYSTATUSEX ) ); statex.dwLength = sizeof( MEMORYSTATUSEX ); if ( ! GlobalMemoryStatusEx( &statex ) ) return 0; dwPageFileInMB = ( DWORD ) ( statex.ullTotalPageFile / ( 1024 * 1024 ) ) ; dwPhysMemInMB = ( DWORD ) ( statex.ullTotalPhys / ( 1024 * 1024 ) ) ; // Довольно отфонарное условие if ( ( dwPhysMemInMB > 500 ) && ( ( dwPageFileInMB + dwPhysMemInMB ) > 2500 ) ) return 0; hApp = GetModuleHandle( NULL ); if ( ! LoadString( hApp , RC_VIRT_MEM_ERROR , pszError , VIRT_ERROR_SIZE ) ) return 0; if ( ! LoadString( hApp , RC_VIRT_MEM_TEXT , pszMessage , VIRT_MESSAGE_SIZE ) ) return 0; MessageBox( NULL , pszMessage , pszError , MB_OK | MB_ICONHAND ); SECUROM_MARKER_HIGH_SECURITY_OFF(1) return 1; } Немного посмотрев на них я подумал может это ограничение использование видео памяти но после того как я тут отписался меня в этом переубедили Пост но главное суть я понял. Немного полистав в глубь x_ray.cpp я увидел вот это: CODE #endif #else // DEDICATED_SERVER g_dedicated_server = true; #endif // DEDICATED_SERVER SetThreadAffinityMask (GetCurrentThread(),1); // Title window // Картинка при старте logoWindow = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_STARTUP), 0, logDlgProc ); HWND logoPicture = GetDlgItem(logoWindow, IDC_STATIC_LOGO); RECT logoRect; GetWindowRect(logoPicture, &logoRect); SetWindowPos ( logoWindow, И тут я немного погуглил и сказав не может быть начал быстренько собирать сорцы но при этом поменяв цифру 1 на 2 и был приятно удивлен мой гаджет на боковой панели показал усердное использование второго ядра, не долго думая я поставил цифру 0 и попробовав я увидел свое счастье два процессора работают и диспетчер задач показывает что xrEngine использует 70% ЦП УРА!!! Можно танцевать!!! Как использовать два и более ядер Немного загуглив я нашел некую информацию как использовать больше ядер но для этого нужно пере-собирать исходники заново потому что я эту цифру 1 рядом с GetCurrentThread в пысовском движке так и не вцепил через HEX-Editor может это кому то другому удастся. Строка в коде x_ray.cpp Код // Use CPU SetThreadAffinityMask (GetCurrentThread(),1); Что можно подставить - спасибо другу Код The mask is a bitfield: each bit designate a processor. 0 means "no processor". It's not logic. 0x0001 : proc 1 0x0003 : proc 1 and 2 0x000F : proc 1, 2, 3, 4 Так что можно сразу сделать так: Код // Use CPU SetThreadAffinityMask (GetCurrentThread(),0x000F); Будет использоваться 4 ядра и более. Полезная ссылка по этим строкам Сообщение отредактировал Stalker_Monolit - 10.08.2015, 17:28 -------------------- |
 
|
|
|
|
10.08.2015, 17:58
Сообщение
#2
|
|
Мастер Игры Репутация: 248 Группа: Участник Сообщений: 1363 Награды: 4 Регистрация: 08.03.2010 |
А вам не кажется, что намного проще закомментарить строчку SetThreadAffinityMask (GetCurrentThread(),1); ?
Но только учтите, что многоядерности от этого не появится (для этого нужно переписывать код на предмет распараллеливания операций по отдельным потокам), только анимации и видео будут проигрываться тем быстрее, чем больше ядер у процессора. Начиная от двукратного прироста, четверократного для четырехъядерного и так далее в линейной прогрессии. Ps. В смысле возрастет не FPS, а именно скорость их проигрывания, то есть секундная анимация будет отыгрываться за полсекунды на двуядерном проце, четверть секунды на четырехъядерном и так далее. Сообщение отредактировал cjayho - 10.08.2015, 18:02 -------------------- Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack -
------ Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha. |
 
|
|
10.08.2015, 18:24
Сообщение
#3
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Но только учтите, что многоядерности от этого не появится Почему это? Не может мне компьютер наврать что он два процессора не юзал. -------------------- |
 
|
|
10.08.2015, 18:39
Сообщение
#4
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Stalker_Monolit, многоядерность будет но совсем не та что нужна
|
 
|
|
10.08.2015, 19:25
Сообщение
#5
|
|
TECHNOSLAV 80 уровня Репутация: 379 Группа: Участник Сообщений: 5758 Награды: 6 Регистрация: 26.01.2014 |
Снижение time_factor до 0.5 приводит в ощутимому увеличению FPS, что какбэ намекает, что даже в LA с её ЗПподобной "многоядерностью" на одном ядре висит не только графон, но и куча всего типа логики, физики, звука и анимаций (их апдейт замедляется и у ядра остаётся больше времени на отрисовку графонов - вырастает FPS).
Если оставить логику, физику, скрипты и анимации на одном ядре, а рендер почти полностью перенести на другое, то производительность должна улучшиться. Сообщение отредактировал Cossack-HD - 10.08.2015, 19:26 -------------------- Ryzen 3700X
Arctic Freezer 33 eSports Duo 16GB DDR4 3600MHz Strix GTX 1080 TI |
 
|
|
10.08.2015, 20:39
Сообщение
#6
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Снижение time_factor до 0.5 приводит в ощутимому увеличению FPS, что какбэ намекает, что даже в LA с её ЗПподобной "многоядерностью" на одном ядре висит не только графон, но и куча всего типа логики, физики, звука и анимаций (их апдейт замедляется и у ядра остаётся больше времени на отрисовку графонов - вырастает FPS). Если оставить логику, физику, скрипты и анимации на одном ядре, а рендер почти полностью перенести на другое, то производительность должна улучшиться. А сорцы LA разве уже в сети плавают? Если это так то можно было это сделать как и разрабы сделали, только дописать пару кусочков кода в нужные dll-ки меняя при этом какой проц будет юзатся. Сообщение отредактировал Stalker_Monolit - 10.08.2015, 20:41 -------------------- |
 
|
|
10.08.2015, 20:53
Сообщение
#7
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Stalker_Monolit, если б было все так просто то уже давным давно бы сделали многопоточку нормальную. Тут слишком многое нужно переделывать в движке. Просто так прописать что вот это должно обсчитываться на этом ядре не получится т.к. потоки должны взаимодействовать друг с другом, ожидать друг друга на блокировках и т.д. . Задача хоть и подсильная но слишком нереально геморойная. Проще пользуйся тем что есть, компы из года в год только растут мощностью поэтому теребонькать на что-то ненужное(многопоточность) бессмысленно, вот 64 битка имеет смысл в игре а многоядерность не особо.К примеру мой комп довольно легко тащит LA(сглаживания не максимальные только и дальность травки).
|
 
|
|
11.08.2015, 01:23
Сообщение
#8
|
|
Босс Репутация: 950 Группа: Участник Сообщений: 4230 Награды: 2 Регистрация: 27.09.2010 |
Stalker_Monolit,
Плавают, более того, лежат в отдельной теме. http://www.gameru.net/forum/index.php?show...p;#entry1553432 -------------------- I NEED A BRAAAAAAAAAAAAAAAAAAAAAAP!!!!11
|
 
|
|
11.08.2015, 21:43
Сообщение
#9
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Stalker_Monolit, Плавают, более того, лежат в отдельной теме. http://www.gameru.net/forum/index.php?show...p;#entry1553432 Спасибо а то я думал с другого ресурса качать -------------------- |
 
|
|
12.08.2015, 17:42
Сообщение
#10
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Заметил что сталкер использует расширение функциональности Boost который по копирайту
Цитата Copyright © 2001-2003 не обновлялся с 2003 гада может попробовать обновить ее? Там же есть и использование потоков и тайминг короче корни для оптимизации тянутся оттуда.
-------------------- |
 
|
|
12.08.2015, 18:05
Сообщение
#11
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Stalker_Monolit, думаешь после обновления вызовы потоков, тайминги и корни сами вырастут из воздуха?
А и обнови, кстати. Хорошая задачка для начала. |
 
|
|
12.08.2015, 18:27
Сообщение
#12
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Stalker_Monolit, думаешь после обновления вызовы потоков, тайминги и корни сами вырастут из воздуха? Вангую что сначала все поломается и куча времени будут потрачена на то чтобы "вернуть все как было" -------------------- |
 
|
|
12.08.2015, 18:32
Сообщение
#13
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Совсем нет. Поломается, но не прямо уж все Вот луабинд обновить...
Кстати, в ЛА-исходниках не новый разве буст? Сообщение отредактировал abramcumner - 12.08.2015, 18:34 |
 
|
|
12.08.2015, 19:06
Сообщение
#14
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Вот luabind как раз и поломается. Он кажется зависит от темплейта удаленного в последних версиях
По сути boost используется только luabind'ом |
 
|
|
14.08.2015, 12:43
Сообщение
#15
|
|
Продвинутый геймер Репутация: 22 Группа: Участник Сообщений: 234 Награды: 3 Регистрация: 27.10.2010 |
Я обновил boost, только теперь сам не знаю зачем
Разве что опыт Сообщение отредактировал -StalkMen- - 14.08.2015, 12:43 |
 
|
|
14.08.2015, 13:18
Сообщение
#16
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
-StalkMen-, многоядерность поперла?
Теперь луабинд на очереди Сообщение отредактировал abramcumner - 14.08.2015, 13:18 |
 
|
|
14.08.2015, 13:39
Сообщение
#17
|
|
Заслуженный Мастер Игры Репутация: 196 Группа: Забанен Сообщений: 1606 Награды: 3 Регистрация: 11.07.2009 |
Теперь луабинд на очереди Запилить бы визуальное программирование, подгрузку текстур, продвинутую систему LOD, лицевую анимацию, PhysX или Havok и пожалуй Scaleform. -------------------- |
 
|
|
14.08.2015, 14:01
Сообщение
#18
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Теперь луабинд на очереди Запилить бы визуальное программирование, подгрузку текстур, продвинутую систему LOD, лицевую анимацию, PhysX или Havok и пожалуй Scaleform. А может ещё и удобный WYSIWYG редактор? Это уже будет -------------------- |
 
|
|
14.08.2015, 15:20
Сообщение
#19
|
|
Продвинутый геймер Репутация: 22 Группа: Участник Сообщений: 234 Награды: 3 Регистрация: 27.10.2010 |
Теперь луабинд на очереди Я их одновременно обновлял С луабиндом гораздо больше заморочек, начиная от переписываниЙ© в xrGame, заканчивая переписыванием скриптов многоядерность поперла? От обновления boost'а?.. PhysX Пилю потихоньку Пока всё нравится, правда мануалов на Русском мало Начал с замены xrCDB (для компиля) |
 
|
|
14.08.2015, 15:24
Сообщение
#20
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
Текстовая версия | Сейчас: 19.04.2024, 05:26 |