Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

4 страниц V   1 2 3 > »   
Тема закрытаНачать новую тему
> [ТЧ,ЧН,ЗП] Многоядерность, Используем два и более ядер
Stalker_Monolit
сообщение 10.08.2015, 17:08
Сообщение #1


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Перед прочтением прошу сильно не ругать если что это моя первая тема тут unsure.gif
Перед история поиска или как я нашел строчку - это можно прочесть по желанию.
Начну с того что я как я любитель билдоман и уже вошла в привычку моя поисковая сноровка, и она меня не подвила laugh.gif я начал свой день с того что мне захотелось найти в исходниках 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;
}

Немного посмотрев на них я подумал может это ограничение использование видео памяти но после того как я тут отписался меня в этом переубедили laugh.gif Пост но главное суть я понял. Немного полистав в глубь 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% ЦП УРА!!! Можно танцевать!!! laugh.gif

Как использовать два и более ядер
Немного загуглив я нашел некую информацию как использовать больше ядер но для этого нужно пере-собирать исходники заново потому что я эту цифру 1 рядом с GetCurrentThread в пысовском движке так и не вцепил через HEX-Editor может это кому то другому удастся.

Строка в коде x_ray.cpp
Код
    // Use CPU
    SetThreadAffinityMask        (GetCurrentThread(),1);


Что можно подставить - спасибо другу asdandgamer
Код
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


--------------------

Перейти в начало страницы
 
cjayho
сообщение 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 - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
Stalker_Monolit
сообщение 10.08.2015, 18:24
Сообщение #3


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(cjayho @ 10.08.2015, 17:53) *
Но только учтите, что многоядерности от этого не появится

Почему это? blink.gif Не может мне компьютер наврать что он два процессора не юзал.


--------------------

Перейти в начало страницы
 
jamakasi
сообщение 10.08.2015, 18:39
Сообщение #4


Доктор Игровых Наук
*******************

Репутация:   544  
Группа: Участник
Сообщений: 3657
Награды: 9
Регистрация: 12.07.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Stalker_Monolit, многоядерность будет но совсем не та что нужна laugh.gif
Перейти в начало страницы
 
Cossack-HD
сообщение 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
Перейти в начало страницы
 
Stalker_Monolit
сообщение 10.08.2015, 20:39
Сообщение #6


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Cossack-HD @ 10.08.2015, 19:20) *
Снижение time_factor до 0.5 приводит в ощутимому увеличению FPS, что какбэ намекает, что даже в LA с её ЗПподобной "многоядерностью" на одном ядре висит не только графон, но и куча всего типа логики, физики, звука и анимаций (их апдейт замедляется и у ядра остаётся больше времени на отрисовку графонов - вырастает FPS).
Если оставить логику, физику, скрипты и анимации на одном ядре, а рендер почти полностью перенести на другое, то производительность должна улучшиться.

blink.gif А сорцы LA разве уже в сети плавают?
Если это так то можно было это сделать как и разрабы сделали, только дописать пару кусочков кода в нужные dll-ки меняя при этом какой проц будет юзатся.

Сообщение отредактировал Stalker_Monolit - 10.08.2015, 20:41


--------------------

Перейти в начало страницы
 
jamakasi
сообщение 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
Перейти в начало страницы
 
Stalker_Monolit
сообщение 11.08.2015, 21:43
Сообщение #9


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Билдоман @ 11.08.2015, 01:18) *
Stalker_Monolit,

Плавают, более того, лежат в отдельной теме. http://www.gameru.net/forum/index.php?show...p;#entry1553432

Спасибо а то я думал с другого ресурса качать smile.gif


--------------------

Перейти в начало страницы
 
Stalker_Monolit
сообщение 12.08.2015, 17:42
Сообщение #10


Опытный Геймер
*******

Репутация:   17  
Группа: Участник
Сообщений: 161
Награды: 3
Регистрация: 08.03.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Заметил что сталкер использует расширение функциональности Boost который по копирайту
Цитата
Copyright © 2001-2003
не обновлялся с 2003 гада может попробовать обновить ее? Там же есть и использование потоков и тайминг короче корни для оптимизации тянутся оттуда.


--------------------

Перейти в начало страницы
 
abramcumner
сообщение 12.08.2015, 18:05
Сообщение #11


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Stalker_Monolit, думаешь после обновления вызовы потоков, тайминги и корни сами вырастут из воздуха?

А и обнови, кстати. Хорошая задачка для начала.
Перейти в начало страницы
 
RedMagic
сообщение 12.08.2015, 18:27
Сообщение #12


Высший Игровой Бог
************************

Репутация:   1747  
Группа: Супермодератор
Сообщений: 12594
Награды: 15
Регистрация: 05.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 12.08.2015, 18:00) *
Stalker_Monolit, думаешь после обновления вызовы потоков, тайминги и корни сами вырастут из воздуха?

Вангую что сначала все поломается и куча времени будут потрачена на то чтобы "вернуть все как было" biggrin.gif


--------------------
Перейти в начало страницы
 
abramcumner
сообщение 12.08.2015, 18:32
Сообщение #13


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Совсем нет. Поломается, но не прямо уж все smile.gif Вот луабинд обновить...

Кстати, в ЛА-исходниках не новый разве буст?

Сообщение отредактировал abramcumner - 12.08.2015, 18:34
Перейти в начало страницы
 
Tron
сообщение 12.08.2015, 19:06
Сообщение #14


Игровой Эксперт
***************

Репутация:   407  
Группа: Участник
Сообщений: 2394
Награды: 5
Регистрация: 19.01.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Вот luabind как раз и поломается. Он кажется зависит от темплейта удаленного в последних версиях
По сути boost используется только luabind'ом
Перейти в начало страницы
 
-StalkMen-
сообщение 14.08.2015, 12:43
Сообщение #15


Продвинутый геймер
********

Репутация:   22  
Группа: Участник
Сообщений: 234
Награды: 3
Регистрация: 27.10.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Я обновил boost, только теперь сам не знаю зачем laugh.gif
Разве что опыт biggrin.gif

Сообщение отредактировал -StalkMen- - 14.08.2015, 12:43
Перейти в начало страницы
 
abramcumner
сообщение 14.08.2015, 13:18
Сообщение #16


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


-StalkMen-, многоядерность поперла?

Теперь луабинд на очереди smile.gif

Сообщение отредактировал abramcumner - 14.08.2015, 13:18
Перейти в начало страницы
 
Samaritan
сообщение 14.08.2015, 13:39
Сообщение #17


Заслуженный Мастер Игры
*************

Репутация:   196  
Группа: Забанен
Сообщений: 1606
Награды: 3
Регистрация: 11.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 14.08.2015, 14:13) *
Теперь луабинд на очереди

Запилить бы визуальное программирование, подгрузку текстур, продвинутую систему LOD, лицевую анимацию, PhysX или Havok и пожалуй Scaleform.


--------------------
Перейти в начало страницы
 
RedMagic
сообщение 14.08.2015, 14:01
Сообщение #18


Высший Игровой Бог
************************

Репутация:   1747  
Группа: Супермодератор
Сообщений: 12594
Награды: 15
Регистрация: 05.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(lambdist @ 14.08.2015, 13:34) *
Цитата(abramcumner @ 14.08.2015, 14:13) *
Теперь луабинд на очереди

Запилить бы визуальное программирование, подгрузку текстур, продвинутую систему LOD, лицевую анимацию, PhysX или Havok и пожалуй Scaleform.

А может ещё и удобный WYSIWYG редактор? biggrin.gif Это уже будет totstalkir.gif


--------------------
Перейти в начало страницы
 
-StalkMen-
сообщение 14.08.2015, 15:20
Сообщение #19


Продвинутый геймер
********

Репутация:   22  
Группа: Участник
Сообщений: 234
Награды: 3
Регистрация: 27.10.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 14.08.2015, 13:13) *
Теперь луабинд на очереди

Я их одновременно обновлял rolleyes.gif
С луабиндом гораздо больше заморочек, начиная от переписываниЙ© в xrGame, заканчивая переписыванием скриптов sad.gif

Цитата(abramcumner @ 14.08.2015, 13:13) *
многоядерность поперла?

От обновления boost'а?.. o_O.gif

Цитата(lambdist @ 14.08.2015, 13:34) *
PhysX

Пилю потихоньку wink_old.gif Пока всё нравится, правда мануалов на Русском мало sad.gif
Начал с замены xrCDB (для компиля)
Перейти в начало страницы
 
abramcumner
сообщение 14.08.2015, 15:24
Сообщение #20


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(-StalkMen- @ 14.08.2015, 15:15) *
От обновления boost'а?.. o_O.gif

Конечно, его же именно для этого предлагалось обновить smile.gif
Перейти в начало страницы
 

4 страниц V   1 2 3 > » 
Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.03.2024, 23:10