
0x5ce3c
-
Публикаций
11 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные 0x5ce3c
-
-
5 часов назад, KREPATURA сказал:Привет 0x5ce3c. Попробовал установить твой фикс на сборку Аномали-медиум. Та сборка просто распаковывается и играется, без Мод-оргонайзера (его нет в корне игры). Соответственно замена папок "геймдата и бин" не помогла, игра не запускается. Подскажи пожалуйста, что мне надо сделать. Уж больно интересна идея поиграть в многоядерном режиме игры. Заранее спасибо.
KREPATURA Приветствую! Хотелось бы уточнить: какая версия сборки, так как автор предлагает 2-ю и 3-ю, и были ли в папке gamedata файлы требующие замену? Что касается запуска, можно попробовать заменить только файлы AnomalyDX*.exe из папки bin и запустить так. Если проблема все равно происходит, то надо делать совместимость.
-
ForserX Хотелось бы, но нагрузка (при старте локации или загрузке сохранения после запуска игры) может быть как в стандартной Anomaly, потому что создание потоков я не менял, оно работает в цикле, но затем потоки распределяются по ядрам процессора, в зависимости от того какое ядро нагружено меньше всех.
Дополнено 4 минуты спустяВ 09.06.2025 в 01:07, LVutner сказал:круто. а где сорсы?
Если движковые правки покажут хорошие результаты у игроков с абсолютно разной конфигурацией длительное время, то когда-нибудь выложу.
-
1
-
-
-
Наверное все, кто играл в Anomaly замечали, что стать в игре зомби можно только со старта игры, нажав в стартовом меню на клавишу Z или с помощью чит-режима через F7.
Возле лаборатории x16 на Янтаре бывают зомби, что логично объясняет влияние пси-поля на сталкеров, а наш игрок помирает с черным экраном и звуком выстрела.
При входе в главный зал лаборатории X16, где находится колба с мозгом, игрок опять помирает.
При входе в лабораторию X10 на Радаре, у игрока с ненастроенным и настроенным шлемом включается один и тот же таймер, по истечению которого игрок опять помирает.
В зоне пси-аномалий происходит таже ситуация.
Аддон налецен исправить эти абсурдные ситуации с влиянием пси-поля на игрока.
Аномалии:
Игрок находящийся в зоне пси-поля может стать зомби, если его пси-здоровье практически на нуле.В лаборатории x16:
Без шлема - игрок станет зомби, даже если он каким-то чудом пробежал до входа.
С плохим шлемом - игрок не будет помирать в главном зале где мозг, вместо этого включится таймер на 2 минуты, после отключения защиты игрок мгновенно станет зомби.
С настроенным шлемом - таймер 4 минуты.В лаборатории X10:
В отличии от X16 в X10 таймер включается при входе в лабораторию.
Без шлема - игрок станет зомби.
С плохим шлемом - 2 минуты 30 секунд.
С настроенным шлемом - 5 минут.Контролёр так же сделает игрока зомби.
Во время сна после пси-шторма пси-здоровье не будет отниматься.Установка:
Папку gamedata переместить в папку с Anomaly с заменой файлов.
Скачать(Яндекс Диск)-
1
-
-
Суть проблемы:
По умолчанию номер потоков неправильно захватывался, так же все создаваемые потоки принудительно присваивались на 1 логический процессор(1 ядро).
Это 'веселье' вы можете увидеть во вкладке "Производительность" в Диспетчере Задач во время запущеной игры 1-е ядро будет загружено на 100%, а при попытке задать сходство для процесса Anomaly, нагрузка перейдет для 2-го ЛП(второго ядра) и так по кругу.
Особенные особенности:- Модифицированный движок в аддоне modded_exes для Anomaly 1.5.2 и 1.5.3 с поддержкой многоядерности и оптимизацией многопоточности исправляет данную проблему.
- Полная совместимость с стандартной Anomaly и со всеми сборками модов!
- Благодаря модернизации движка для игроков со слабыми ПК восстановлены старые методы освещения и детализации.
- Загрузка локаций, инвентаря, КПК и игровой процесс происходит заметно стабильнее и быстрее.
DirectX 11 Доступен!
Минус:
DirectX 9 По прежнему кривой, по крайней мере может быть стабильная ошибка с указанием функции создания текстуры (D3DXCreateTexture)!СпойлерСуть проблемы:
По умолчанию номер потоков неправильно захватывался, так же все создаваемые потоки принудительно присваивались на 1 логический процессор(1 ядро).
Как увидеть данную проблему?:
1) Открываем Диспетчер задач, далее вкладка Производительность, нажимаем на ЦП(справа будет график), нажимаем правой кнопкой мыши на него, выбираем "изменить график", выбираем "логические процессоры", Это и будут наши ядра процессора.
2) Запускаем игру на самом слабом рендере, DirectX 8, с режимом отладки(debug mode).
3) В меню игры нажимаем на F2, после загрузки тестового уровня, смотрим в диспетчер задач.
Разберём проблему более подробно в коде с момента запуска игры:
Спойлерvoid xrCore::_initialize(LPCSTR _ApplicationName, LogCallback cb, BOOL init_fs, LPCSTR fs_fname) { xr_strcpy(ApplicationName, _ApplicationName); if (0 == init_counter) { #ifdef XRCORE_STATIC _clear87(); _control87(_PC_53, MCW_PC); _control87(_RC_CHOP, MCW_RC); _control87(_RC_NEAR, MCW_RC); _control87(_MCW_EM, MCW_EM); #endif // Init COM so we can use CoCreateInstance // HRESULT co_res = Params = xr_strdup(GetCommandLine()); xr_strlwr(Params); if (!strstr(Params, "-editor")) CoInitializeEx(NULL, COINIT_MULTITHREADED); string_path fn, dr, di; // application path GetModuleFileName(GetModuleHandle(MODULE_NAME), fn, sizeof(fn)); _splitpath(fn, dr, di, 0, 0); strconcat(sizeof(ApplicationPath), ApplicationPath, dr, di); #ifndef _EDITOR // xr_strcpy(g_application_path, sizeof(g_application_path), ApplicationPath); #endif #ifdef _EDITOR // working path if (strstr(Params, "-wf")) { string_path c_name; sscanf(strstr(Core.Params, "-wf ") + 4, "%[^ ] ", c_name); SetCurrentDirectory(c_name); } #endif GetCurrentDirectory(sizeof(WorkingPath), WorkingPath); // User/Comp Name DWORD sz_user = sizeof(UserName); GetUserName(UserName, &sz_user); DWORD sz_comp = sizeof(CompName); GetComputerName(CompName, &sz_comp); // Mathematics & PSI detection CPU::Detect(); Memory._initialize(strstr(Params, "-mem_debug") ? TRUE : FALSE); DUMP_PHASE; InitLog(); _initialize_cpu();//Интересующая нас функция // Debug._initialize (); rtc_initialize(); time_t _time = time(NULL); tm* time = localtime(&_time); april1 = time ? (time->tm_mday == 1 && time->tm_mon == 3) : false; xr_FS = xr_new<CLocatorAPI>(); xr_EFS = xr_new<EFS_Utils>(); //. R_ASSERT (co_res==S_OK); //Load cmd line from file if it exists std::ifstream cmdlineTxt; char path_A[MAX_PATH]; strcpy(path_A, Core.ApplicationPath); strcat(path_A, "\\..\\commandline.txt"); cmdlineTxt.open(path_A); if (!cmdlineTxt) { cmdlineTxt.close(); strcpy(path_A, Core.WorkingPath); strcat(path_A, "\\commandline.txt"); cmdlineTxt.open(path_A); } if (cmdlineTxt) { Msg("Found commandline file!"); std::string line; char temp[2048]; sprintf(temp, Params); strcat(temp, " "); while (std::getline(cmdlineTxt, line)) { strcat(temp, line.c_str()); strcat(temp, " "); } Params = xr_strdup(temp); } cmdlineTxt.close(); } if (init_fs) { u32 flags = 0; if (0 != strstr(Params, "-build")) flags |= CLocatorAPI::flBuildCopy; if (0 != strstr(Params, "-ebuild")) flags |= CLocatorAPI::flBuildCopy | CLocatorAPI::flEBuildCopy; #ifdef DEBUG if (strstr(Params, "-cache")) flags |= CLocatorAPI::flCacheFiles; else flags &= ~CLocatorAPI::flCacheFiles; #endif // DEBUG #ifdef _EDITOR // for EDITORS - no cache flags &= ~CLocatorAPI::flCacheFiles; #endif // _EDITOR flags |= CLocatorAPI::flScanAppRoot; #ifndef _EDITOR #ifndef ELocatorAPIH if (0 != strstr(Params, "-file_activity")) flags |= CLocatorAPI::flDumpFileActivity; #endif #endif FS._initialize(flags, 0, fs_fname); Msg("'%s' build %d, %s\n", "xrCore", build_id, build_date); // demonized: Print modded exes version Msg("Modded exes: \nAuthor original version:\nthemrdemonized - github rep: https://github.com/themrdemonized\n"); // BLUE ECLIPSE: Print modified version Msg("This version modified by 0x5CE3C | Blue Eclipse Team | LDU: 18.05.25 | all rights reserved\n"); Msg("Game started: %s\n", timeInDMYHMSMMM().c_str()); Msg("MainThread_id: %d\n", get_thread_id()); EFS._initialize(); #ifdef DEBUG #ifndef _EDITOR Msg("Process heap 0x%08x", GetProcessHeap()); #endif #endif // DEBUG } SetLogCB(cb); init_counter++; }
Здесь нас интересует функция _initialize_cpu(); //Которая отвечает за инициализацию нашего процессора, перейдем к ней.
Спойлер//------------------------------------------------------------------------------------ void _initialize_cpu(void) { Msg("* Detected CPU: %s [%s], F%d/M%d/S%d, %.2f mhz, %d-clk 'rdtsc'", CPU::ID.model_name, CPU::ID.v_name, CPU::ID.family, CPU::ID.model, CPU::ID.stepping, float(CPU::clk_per_second / u64(1000000)), u32(CPU::clk_overhead) ); // DUMP_PHASE; if (strstr(Core.Params, "-x86")) { CPU::ID.feature &= ~_CPU_FEATURE_MMX; CPU::ID.feature &= ~_CPU_FEATURE_3DNOW; CPU::ID.feature &= ~_CPU_FEATURE_SSE; CPU::ID.feature &= ~_CPU_FEATURE_SSE2; CPU::ID.feature &= ~_CPU_FEATURE_SSE3; CPU::ID.feature &= ~_CPU_FEATURE_SSSE3; CPU::ID.feature &= ~_CPU_FEATURE_SSE4_1; CPU::ID.feature &= ~_CPU_FEATURE_SSE4_2; }; string256 features; xr_strcpy(features, sizeof(features), "RDTSC"); if (CPU::ID.feature & _CPU_FEATURE_MMX) xr_strcat(features, ", MMX"); if (CPU::ID.feature & _CPU_FEATURE_3DNOW) xr_strcat(features, ", 3DNow!"); if (CPU::ID.feature & _CPU_FEATURE_SSE) xr_strcat(features, ", SSE"); if (CPU::ID.feature & _CPU_FEATURE_SSE2) xr_strcat(features, ", SSE2"); if (CPU::ID.feature & _CPU_FEATURE_SSE3) xr_strcat(features, ", SSE3"); if (CPU::ID.feature & _CPU_FEATURE_SSSE3) xr_strcat(features, ", SSSE3"); if (CPU::ID.feature & _CPU_FEATURE_SSE4_1)xr_strcat(features, ", SSE4.1"); if (CPU::ID.feature & _CPU_FEATURE_SSE4_2)xr_strcat(features, ", SSE4.2"); if (CPU::ID.feature & _CPU_FEATURE_HTT) xr_strcat(features, ", HTT"); Msg("* CPU features: %s", features); Msg("* CPU cores/threads: %d/%d\n", CPU::ID.n_cores, CPU::ID.n_threads); Fidentity.identity(); // Identity matrix Didentity.identity(); // Identity matrix pvInitializeStatics(); // Lookup table for compressed normals FPU::initialize(); _initialize_cpu_thread(); g_initialize_cpu_called = true; }
Получили информацию о процессоре. Теперь важный момент! При получении информации о процессоре вызывается функция DWORD ttapi_Init(_processor_info* ID) в файле ttapi.cpp:
СпойлерDWORD ttapi_Init(_processor_info* ID) { if (ttapi_initialized) return ttapi_workers_count; // System Info ttapi_workers_count = ID->n_cores; SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); DWORD i, dwNumIter; volatile DWORD dwDummy = 1; LARGE_INTEGER liFrequency, liStart, liEnd; QueryPerformanceFrequency(&liFrequency); // Get fast spin-loop timings dwNumIter = 100000000; QueryPerformanceCounter(&liStart); for (i = 0; i < dwNumIter; ++i) { if (dwDummy == 0) goto process1; _mm_pause(); } process1: QueryPerformanceCounter(&liEnd); // We want 1/25 (40ms) fast spin-loop ttapi_dwFastIter = (DWORD)((dwNumIter * liFrequency.QuadPart) / ((liEnd.QuadPart - liStart.QuadPart) * 25)); //Msg( "fast spin-loop iterations : %u" , ttapi_dwFastIter ); // Get slow spin-loop timings dwNumIter = 10000000; QueryPerformanceCounter(&liStart); for (i = 0; i < dwNumIter; ++i) { if (dwDummy == 0) goto process2; SwitchToThread(); } process2: QueryPerformanceCounter(&liEnd); // We want 1/2 (500ms) slow spin-loop ttapi_dwSlowIter = (DWORD)((dwNumIter * liFrequency.QuadPart) / ((liEnd.QuadPart - liStart.QuadPart) * 2)); //Msg( "slow spin-loop iterations : %u" , ttapi_dwSlowIter ); SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS); // Check for override from command line char szSearchFor[] = "-max-threads"; char* pszTemp = strstr(GetCommandLine(), szSearchFor); DWORD dwOverride = 0; if (pszTemp) if (sscanf_s(pszTemp + strlen(szSearchFor), "%u", &dwOverride)) if ((dwOverride >= 1) && (dwOverride < ttapi_workers_count)) ttapi_workers_count = dwOverride; // Number of helper threads ttapi_threads_count = ttapi_workers_count - 1; // Creating control structures if ((ttapi_threads_handles = (LPHANDLE)malloc(sizeof(HANDLE) * ttapi_threads_count)) == NULL) return 0; if ((ttapi_worker_params = (PTTAPI_WORKER_PARAMS)malloc(sizeof(TTAPI_WORKER_PARAMS) * ttapi_workers_count)) == NULL) return 0; // Clearing params for (DWORD i = 0; i < ttapi_workers_count; i++) memset(&ttapi_worker_params[i], 0, sizeof(TTAPI_WORKER_PARAMS)); char szThreadName[64]; DWORD dwThreadId = 0; DWORD dwAffinitiMask = ID->affinity_mask; DWORD dwCurrentMask = 0x01; // Setting affinity while (! (dwAffinitiMask & dwCurrentMask)) dwCurrentMask <<= 1; //SetThreadAffinityMask(GetCurrentThread(), dwCurrentMask); if(bMaskCalc == true) _SetThreadAffMask(GetCurrThreadHandle(), GetCalcMask()); //Msg("Master Thread Affinity Mask : 0x%8.8X" , dwCurrentMask ); // Creating threads for (DWORD i = 0; i < ttapi_threads_count; i++) { // Initializing "enter" "critical section" ttapi_worker_params[i].vlFlag = 1; if ((ttapi_threads_handles[i] = CreateThread(NULL, 0, &ttapiThreadProc, &ttapi_worker_params[i], 0, &dwThreadId) ) == NULL) return 0; // Setting affinity do dwCurrentMask <<= 1; while (! (dwAffinitiMask & dwCurrentMask)); //SetThreadAffinityMask(ttapi_threads_handles[i], dwCurrentMask); if(bMaskCalc == true) _SetThreadAffMask(GetCurrThreadHandle(), GetCalcMask()); //Msg("Helper Thread #%u Affinity Mask : 0x%8.8X" , i + 1 , dwCurrentMask ); // Setting thread name sprintf_s(szThreadName, "Helper Thread #%u", i); SetThreadName(dwThreadId, szThreadName); } ttapi_initialized = TRUE; return ttapi_workers_count; }
Здесь мы видим целый ряд проблем:
1) DWORD dwCurrentMask = 0x01; Код маски процессора равен нулю, это означает что функция SetThreadAffinityMask будет всегда использовать 0-ое ядро, т.е. 1-ое ядро нашего процессора.
2) функция создания потока CreateThread работает в цикле, будет постоянная нагрузка на процессор, сильные лаги\фризы в приложении, возможна рассинхронизация потоков после чего возможен вылет при сильной нагрузке в любой момент времени, так же количество потоков, которые может создать процесс, ограничено доступной виртуальной памятью индивидуально для каждого ПК.
3) Все потоки присваиваются на 1-е ядро в цикле, что сильно снижает производительность.
Простое решение:
1) Передать управление потоками планировщику потоков в системе Windows, закомментировав\удалив функцию //SetThreadAffinityMask
или
Сложное решение:
2) Сделать свою функцию расчёта нагрузки на логические процессоры и таблицу масок процессора для распределения потоков(нагрузки) по ядрам процессора в зависимости от того, какое ядро свободнее через SetThreadAffinityMask.
(такая функция работает у меня, в противном случае управление предоставляется системе).
Теперь вернёмся к файлу _math.cpp, там есть очень интересная функция связанная с потоками:
Спойлерtemplate<typename func, class ... args_types> void beginThreadex(func f, args_types ... args) { std::thread* out = new std::thread(std::bind(f, args...)); } void thread_spawn(thread_t* entry, const char* name, unsigned stack, void* arglist) { Debug._initialize(false); THREAD_STARTUP* startup = xr_new<THREAD_STARTUP>(); startup->entry = entry; startup->name = (char*)name; startup->args = arglist; //_beginthread(thread_entry, stack, startup);//было beginThreadex(thread_entry, startup);//Стало }
Функция thread_spawn создает внутриигровые потоки для различных игровых событий таких как:
загрузка текстур, локаций(игрового уровня), создания матриц, игровой паузы, создание скриншотов и сохранений, и т.д.
Здесь важно обратить внимание на функцию _beginthread, которая была заменена на кастомную, после чего повысилась вся производительность внутриигровых потоков.
Последняя основная проблема заключается в задержках Sleep по всему коду движка, данный способ задержки останавливает игровой поток, тем самым создавая фризы\лаги при: сохранениях, спавне объектов\NPC, различных событий. Планируется другой способ создания задержек без видимого эффекта кроме игровой паузы.
Характеристики и описание функций(вся информация взята из интернета, описание функций и характеристик ниже с сайта Microsoft, характеристики дополнены информацией из различных интернет-форумов, исходя из опыта разных программистов):=============================
функция SetThreadAffinityMask:
Смысл функции SetThreadAffinityMask заключается в том, что она задаёт маску сходства процессора для указанного потока.
Маска сходства потоков — это битовый вектор, в котором каждый бит представляет логический процессор, на котором разрешено выполнять поток.
Установка такой маски может привести к тому, что потоки получат меньше времени процессора, так как система не сможет запускать потоки на определённых процессорах.
минусы SetThreadAffinityMask:Снижение производительности. Установка маски сходства может привести к тому, что потоки получат меньше времени процессора, так как система ограничена в запуске потоков на определённых процессорах.
Ошибки при использовании. Функция может задерживать переход на новое ядро или продолжать работу с текущим ядром до конца временного отрезка. В первом случае это снижает скорость работы программы, во втором — делает бесполезными данные профилирования.
Опасные ситуации. При изменении сходства процесса может возникнуть ситуация, когда поток не сможет работать ни на одном процессоре.
Проблемы с переносимостью. Функция может вызывать сложности при использовании на компьютерах с разным количеством сокетов, ядер и гиперпотоков.
Примеры последствий:
Ограничение выбора процессора. Например, если в маске SetThreadAffinityMask указан только один процессор, а система выбирает для выполнения другой поток, первый не получает время процессора в течение этого периода.
Затрата времени ожидания. Если один процессор свободен, но система выбирает его для выполнения другого потока, первый поток должен ждать, пока процессор станет доступен снова.
=============================
Функция _beginthread имеет несколько минусов, которые связаны с проблемами с обработкой исключений и дескрипторами потоков:Проблемы с обработкой исключений
Отсутствие явной обработки исключений. Функция _beginthread устанавливает фрейм исключения, но не вызывает обработчик. Если в потоке возникает необработанное исключение, система завершает всё приложение целиком.
Некорректное поведение в некоторых версиях. Например, в некоторых реализациях функции _beginthread исключение в потоке не обрабатывается должным образом, что может привести к сбоям в работе программы.
Проблемы с дескрипторами потоков
Автоматическое закрытие дескриптора. Дескриптор потока, созданный с помощью _beginthread, автоматически закрывается при завершении потока. Это может привести к тому, что вызывающий поток получит недопустимый дескриптор, который система может назначить другому потоку.
Некорректная работа с функциями ожидания. Wait-функции( например функция Sleep) могут некорректно работать с дескрипторами потоков, созданных с помощью _beginthread, из-за автоматического закрытия дескриптора.=============================
В совокупности всех проблемных участков получается следующее:- Использование потоков только на одном логическом процессоре (ядре) может привести к снижению производительности. Это связано с тем, что ресурсы процессора, которые обычно используются для параллельного выполнения нескольких потоков, остаются недоступными для одного потока.
- Из-за рассинхронизации потоков мы можем ловить редкий "баг потери управления" - когда не работают клавиши кроме, ESC, возможен вылет при попытке загрузить сохранение.
- Из-за бесконечного создания потоков в цикле на 1 ядре процессора(речь про функцию CreateThread вместе с SetThreadAffinityMask) вылет на ровном месте при любой сильной нагрузке, по перегрузке памяти, не имеющей никакого отношения к скриптовой части.
СпойлерAnomalyDX8.exe | MD5 hash: 86897f24de2399d58964c58b0325eeed
AnomalyDX9.exe | MD5 hash: 2f0c2e38b51b0a2fc6cecd011cf18398
AnomalyDX10.exe | MD5 hash: 2b3cb973bc0a733f3cf67202c22872c3
AnomalyDX11.exe | MD5 hash: a07bbe4f09a1c75b953a0ec199a1c808СпойлерАвтор оригинального аддона: themrdemonized - репозиторий на гитхабе: тык
Автор модификации аддона: 0x5CE3C
Помимо этого ссылки на авторские права указываются прямо при запуске в лог файле:
Log
Описание Лог Файла:
1) Номер сборки и дата компиляции.
2) Авторских права оригинальной модификации с ссылками на репозиторий github.
3) LDU — это Последняя Дата Обновления(Last Date Updated).
4) Авторские права измененного мода.
5) Функция, которая выводит идентификатор главного потока внутри активного процесса Anomaly(На данный момент удобный инструмент для детальной отладки ошибок движка и разработки 3d-прицелов\Дополнительных внутренних потоков: например, 3d-КПК).Спойлер- Вырезан Решейд для DirectX 8 из-за несовместимости с некоторыми сборками.
- На данный момент система распределения ресурсов отлично работает на DirectX 8 (AnomalyDX8.exe). От выбранного DirectX это не зависит (разница только в нагрузке из-за более современных технологий освещения: частиц, наложения визуальных эффектов и обработке данных).- Исправлены функции создания множества потоков вместе с объектом, но после использования потока объект не удалялся, что со временем приводило к неизбежному вылету на любом ПК с пустым stack trace в логе.
- Заменен метод захвата тактов процессора на современный, что значительно сокращает время вычислительных процессов(будет заметно быстрее грузится локация).
- Исправлена функция SetThreadAffinityMask, которая отвечает за распределение нагрузки на разные логические процессоры внутри текущего процесса.- Обновлен метод резервирования свободной памяти на SSD и Жестких дисках при нехватке памяти на более современный аналог, улучшен код для более быстрого доступа к кластерам L1, L2, L3 кэша процессора.
- Система распределения нагрузки работает в двух режимах:
1) Режим Одного Ядра - актуален для ПК с 1-2,4 ядрами(стандартный режим Anomaly), оптимизация достигается за счет многопоточности.2) Многоядерный режим(использование функции SetThreadAffinityMask) - актуален для ПК с 4 и более ядрами. Второй режим включается автоматически, но можно принудительно включить с помощью задания параметра запуска "-max-threads" к вашему процессу Anomaly. Так же это действие можно сделать открыв файл commandline.txt, дописав "-max-threads" в новой строке.
пример:
-nointro
-noramtex
-dbg
-max-threads
- Изменения в DirectX11:- Изменён способ отражения света от объектов из-за чего криво рассеивалась тень, отражения от света, тени от объектов были с неправильным углом.
- Немного улучшен стандартный метод рисования кадров(немного ускоряет прогрузку динамических кадров, эффектов и частиц).
Спойлерmodded_exes_patched.zip | Yandex Disk
modded_exes_patched.zip | Google Disk
Установка чистую Anomaly:
Папку gamedata и папку bin скопировать в папку с игрой с заменой файлов.
Установка на сборку модов:
1) Папку bin в папку с игрой с заменой файлов.
2) Создайте в Мод Органайзере пустой мод(папку в каталоге с модами сборки) и скопируйте туда папку gamedata.
3) Перезапустите Мод Органайзер(если был запущен), переместите ваш мод в самый низ.-
1
-
1
-
1
-
1
-
Предыстория:
Как-то мне было нужно быстро проверить параметры запуска Anomaly или очистить Логи в папке с игрой, но каждый раз тыкать в проводник надоело и стандартный лаунчер не предоставляет такой возможности. Дело было вечером, делать было нечего, решил написать свой лаунчер, который позволит быстрее взаимодействовать с игрой.
Представляю вашему вниманию Anomaly Launcher Extended:
СпойлерСпойлерСпойлерСпойлерAnomaly Launcher Extended - Специальный лаунчер с расширенными параметрами запуска и функциями.
Особенности:- высокая скорость работы.
- простой и понятный интерфейс. (Интерфейс написан на DirectX 9 с использованием графической библиотеки ImGui( вы могли её видеть в Решейдах ).
- почти у каждой опции имеется подробное описание.
- проверяются права контроля пользователя(UAC) при запуске. (полезно для стримеров использующих chaos tricks или когда не создаётся user.ltx из-за отсутствия прав администратора у игры).
- параметры запуска выводятся на экран в режиме реального времени, а так же путь к игре.
- подключена звуковая библиотека bass.dll.
- простая установка(инсталлятор \ деинсталлятор(создается в папке с игрой) )
- полная совместимость с Мод Органайзером и разными сборками.( учтите, что с Мод Органайзером у лаунчера будут свои настройки, а без него другие )
Описание разделов:
Общие - содержит основные параметры такие как тип Рендера, Размеры теней, а так же если ваш процессор поддерживает AVX, то будет доступна кнопка для включения данной технологии. (часто бывает, что AVX поддерживается, но он может быть выключен по умолчанию в BIOS)
Оптимизация - содержит параметры для улучшения стабильной работы игры.
Дополнительно - содержит кнопки для быстрого взаимодействия с папкой игры. (открытие папки с лаунчером, логами, сохранениями, удаление сохранений, шейдер кэша, логов, восстановление user.ltx )
Отладка - инструменты для разработчиков.
Разное - интернет радио(вещает музыку из радио в сборке Blue Eclipse).
Логи - Содержит события лаунчера, а так же выводит название треков в радио.-
1
-
2
-
-
Все проблемы со скачиванием, установкой решены, перезалил на dropmefiles, теперь в виде репака.
-
Cosmic_dancer , можно отключать без последствий. у секретного артефакта по прежнему будет деградация, новая игра не требуется.
-
2
-
-
Здравствуйте уважаемые пользователи сталкерского моддинга!
Представляю вашему вниманию свою сборку на Anomaly 1.5.2 | Blue Eclipse Team.
В обновлениях ссылок на скачивание больше нет необходимости, установить игру, мод менеджер и сборку можно прямо в нашем специальном лаунчере с помощью системы докачки при сканировании целостности файловой структуры.
В сборке по умолчанию предустановлен графический аддон для слабых ПК, если у вас в игре 'мыльные' или '2D' текстуры пола, стен и т.д. - удалите файлы: Classic Foliage.db0, Classic Terrain.db0, Classic Textures.db0 по пути: папка_с_игрой\db\mods\
Внимание!!! после выключения мода на 'магазины к оружию' новая игра не требуется, но учтите что магазины которые были у вас в инвентаре удалятся, и при следующем включении мода - магазины придется докупать или находить!СпойлерОписание:
Сборка позволяет улучшить систему боевых действий игрока, а так же поведение NPC в бою и добиться некоего "реализма", по новому ощутить мир исследования Чернобыльской Зоны Отчуждения, где каждый шаг может стать решающим.
Основные характеристики, отличные от других сборок на Anomaly:
Стартовое снаряжение:
Перед началом новой игры в зависимости от выбранной группировки, сложности игры и экономики предлагается уникальный ассортимент снаряжения(чем севернее находится её база, тем лучше снаряжение - исключение "Военные"), например:
за Одиночек на Кордоне можно взять: ТОЗ, АК, ПМ, ТТ, легкую курточку и набор первой помощи.
за Ученых на старте хороший автомат, пистолет, но только 2 магазина и полное отсутствие патронов у торговцев.
за Монолит: Миниган М134, гранатомет, автоматы, дробовики, уникальную "робу фанатика" дающую 300 кг веса, 3 слота под артефакты, но почти без брони и уникальный анальгетик "Возрождение" со следующими характеристиками:
Описание:
"Препарат содержит раствор из частиц артефактов с положительными свойствами. Первый эффект этого мощнейшего вещества - ощущение гигантского прироста сил. Применение: ввести иглу автоинъектора в руку.
По неточным данным, такой препарат создают самые элитные бойцы группировки «Монолит»."
здоровье 58%
радиация -432 мЗв.сек
насыщение 936 ккал экв.
силы +980 мкг адрен.
заживление 7500 мл.мин
радиозащита 120 мЗв
пси защита 82 mТ
Хим.защита 1094%
вес +50 кг
время действия 1500 сек.
- медикамент
- здоровое питание
- быстрое использование
- помогает выжить в схватке с превосходящими силами противника
Но вы не можете есть и пить всё это время.
Данный препарат очень сложно изготовить т.к. нужны очень редкие артефакты и инструкция.
Купить возможно только у торговцев монолита с максимальным уровнем торговли и процент появления очень мал, как и количество.
Немного увеличена денежная сумма.
Рюкзаки:
Рюкзак является основным и важным элементом экипировки, от его вместимости, типа рюкзака и прокачки зависит количество предметов, которое можно в него сложить и унести благодаря системе распределения веса(немного уменьшается вес предмета).
Торговля:
У каждого торговца свой уникальный ассортимент. Некоторые торговцы будут покупать определенные вещи значительно дороже, а некоторые дешевле. Такая же ситуация с продажей. Некоторые уникальные предметы можно найти только у единственного торговца.
У обычных сталкеров теперь тоже много денег, зависит от группировки и ранга.
Оружие и Броня:
Состояние оружия, это уровень его загрязнения. Общее состояние деталей внутри и уровень загрязнения определяет - будет оно стрелять или каждый раз будет клинить. Почистить оружие можно у техников, а вот детали придется чинить вручную купив необходимые инструменты или найти у врага.
Вся броня у разных группировок полностью переработана, разная броня теперь необходима в разных условиях, уникальная броня не исключение. Все шлемы, противогазы и маски можно разбирать.
Артефакты:
Все артефакты приобрели различные полезные и отрицательные свойства, и имеют деградацию при использовании на поясе(настраивается).
У артефактов отображается уровень и месторождения(тип аномальных полей) кроме уникальных.
Окружение:
На каждой локации свои уникальные особенности и аномалии, и аномальные поля чаще всего после выбросов могут менять своё расположение случайным образом, тем самым после сна аномалии могут перекрыть проход в определенные места, и игроку придется искать другой путь. Такая же ситуация с пси-аномалиями после пси-штормов.
Пси-излучение, контролёр и пси-аномалии вместо черного экрана и смерти гг, превращают его в зомбированного.
Редких мутантов, в том числе и вырезанных можно встретить случайно в любом месте. Фактор день \ ночь по прежнему действует.
Монолит по прежнему охраняет излучатели и северные локации Зоны, но раз в игровую неделю, либо после нескольких выбросов или пси-штормов случайным образом атакуют базы враждебных группировок(если конечно выживут по дороге), всегда случайные размеры атакующего отряда 3-15 NPC с тяжелым вооружением.
Система боя с NPC(модификация пака аддонов AI_Combat_Pack мелкими правками):
NPC в зависимости от группировки и ранга умнее используют окружающую местность для ведения боя, более правильно используют все виды гранат и подствольные гранатометы.
NPC смогут отступать, прятаться, или вовсе убежать если силы с противником не равны и наоборот(кроме монолита).
NPC хорошо стреляют, все снайперами не будут, всё зависит от оружия и установленных на нём прицелов и модулей.
Вы и NPC на равных условиях, урон от оружия при стрельбе в NPC и по вам одинаковый, разница только в типе оружия, калибре оружия, броне и вашей подготовке к определенным ситуациям.
Гранаты могут значительно решить исход боя. Характеристики приближены к настоящим. Светошумовые ослепляют и оглушают на время некоторых мутантов и NPC. Если дымовую гранату бросить прям под ноги, она нанесет небольшой термический урон.
Лут и тайники:
Снаряжение выпадающее с NPC более целое и крутое, и увеличено количество выпадающих патронов(всё это зависит от ранга NPC).
Некоторые типы боеприпасов не всегда и не везде получится купить, но можно создать, разобрав аналогичные.
В тайниках можно найти больше полезных вещей.
Редко на локациях можно найти валяющееся на земле оружие.СпойлерМоды у которых имеются настройки будут присутствовать в разделе "моды" в главном меню.
где + , мод включен по умолчанию, где - выключен.
==============================================================
+1.0 ОСНОВНОЙ МОД_separator - раздел включает в себя список модификаций, отключать которые не рекомендуется во избежание конфликтов, багов и прочих проблем.
+1.1 Меню Кофигураций Модов - добавляет меню, позволяющее изменять настройки различных модов поддерживающих MCM- меню, переименовано в "Моды".
+1.2 Alternate_Fake_Start - заменена тестовая локация в режиме отладки на более хорошую для всевозможных тестов(если нужно на неё попасть, потестить что-либо, то перед запуском в лаунчере поставьте галочку в чекбоксе "debug menu" и в главном меню нажмите клавишу F2, клавиша F7 открывает дебаг меню). Может пригодиться стримерам для теста интерактива chaos tricks.
+1.3 Ножи и пистолеты можно использовать в слоте бинокля - тут всё должно быть понятно.
+1.4 Главное Меню и Интерфейс - замена интерфейса на более современный вариант.
+1.5 Return_Menu_Music - возвращает музыку в главное меню на esc.
+1.6 global_map_rework - более детализированная карта,
с логичной отрисовкой дорог и местности в местах переходов и за локациями.
+1.7 Паркур мод - позволяет зацепляться за выступы объектов выше головы вашего персонажа и залезать на них.
+1.8 Backpack WorkShop + hotfix 8 - позволяет использовать верстак, с помощью рюкзаков, где угодно.
+1.9 Upgrade Backpack - Прокачка рюкзаков. (Все рюкзаки полностью переработаны мной, от вида рюкзака зависит переносимый вес, количество дополнительных магазинов к оружию.)
+2.0 Anomaly_Open_backpack - Теперь рюкзаки работают как настоящие, можно открывать и складывать туда ненужные вещи и запихивать в другие тайники, или рюкзаки в рюкзаки, так же проработана формула имитирующая распределения веса, то-есть если мы положим в рюкзак предмет, его вес немного уменьшится. Таким образом в рюкзак складывать вещи выгоднее чем таскать всё в инвентаре.
+2.1 Анимации Предметов - объяснение не требуется.
+2.2 Anomaly_Open_backpack + FDDA Patch - патч вылета при открывании рюкзаков.
+2.3 Asnens_and_Groks_Better_Cigarettes_Animations.2 - улучшение анимации курения сигарет (работают быстрее)
+2.3.1 Аккумуляторы для экзоскелетов 2.36 - теперь ко всем экзоскелетам требуются аккумуляторы. (ставятся вместо рюкзака, придется выбирать, поскольку экзоскелеты и так дают хороший прирост веса.)
+2.4 Weapon Parts Overhaul - нашли крутое оружие, а будет ли оно стрелять зависит от состояния деталей и загрязнения(общего состояния), детали оружия можно вытаскивать из другого оружия, заменять у своего, сами детали необходимо чинить и смазывать(всё необходимое продается у техников).
+2.5 Boomsticks and Sharpsticks - Оружейная составляющая с последним обновлением 24 года.
+2.6 Barry's_Better_Knives - Добавляет много холодного оружия.
+2.7 тело от первого лица - а чо, реализм же)
+2.8 РАДИО МОЯ МУЗЫКА - замена всего плейлиста радио, страйк на канал за неё не прилетит, но могут выдать авторские права(все треки есть на Ютубе или Исполнитель разрешает использовать контент).
+2.9 Магазины на оружие - есть инструкция в самой игре в КПК в разделе СПРАВОЧНИК, скажу лишь что добавлять магазины в разгрузку можно с помощью зажатия клавиши левый Alt и тыкаем по магазину, обращайте внимание на размер магазина и на максимальное количество магазинов в костюме(показывается при наведении на костюм).
+3.0 Анимации Одевания Противогазов.
+3.1 ZVER HUD Compact - минималистичный и удобный интерфейс в левом нижнем углу + отображает состояние брони.
+3.2 T.H.A.P._Rework_2.1.1 - заменяет руки ГГ на более качественные.
+3.4 Blindsides Reanimation Pack Loner_ver 7 - реанимации и ребалансировки стандартного оружия.
+3.5 Artefact_renovation_1_5_1_v2_1 - полная переработка всех артефактов, теперь это не мусор.
+3.6 New_Knifes_Devices_Sounds_Hands_Grenades_and_Icons - ещё новые ножи, устройства, звуки, ручные гранаты, и иконки.
+3.7 iTheon-PDA-Taskboard-master - добавляет раздел "Объявления" в кпк, можно брать задания на расстоянии.
+3.8 Reners_PDA_Renewed_v1.3 - новые модели кпк, звуки.
+3.9 PDA_Hacking - взлом найденых с трупов кпк с помощью флешек со специальными программами. (флешки можно купить к техников). так же добавляется инструкция в самой игре в кпк в разделе СПРАВОЧНИК, после покупки или поднятия флешки(если кпк заблокируется, можно сбросить у техника).
+4.0 PDA_hacking_RUS.4 - руссификатор для мода выше.
+4.1 PDA_reanimated - новые анимации кпк.
+4.3 Remove_BaS_Labelv091022 - удаление надписей BaS в названии оружия.
+4.5 Новые Звуки - Главный Аддон - Cracks + Impacts Patch. - добавляет в основном новые звуки оружия.
+4.6 3DPDA_Crosshair_hideRC18 - скрытие нарисованного прицела при использовании кпк.
+4.7 Lootboxes + BaS patch - добавляет кейсы, чехлы, сумки с оружием и снаряжением, документами. открываются с помощью определенного количества отмычек или скелетных ключей(ящики монолита).
+4.8 M134 Minigun + Mags Patch + NPC can use - тот самый шестиствольный пулемёт из терминатора 2, почему бы и нет.
+5.0 Ручные Немецкие Гранаты 2-ой мировой
+5.1 Ручная Граната M67 - американская.
+5.2 Светошумовые гранаты
+5.2.1 Светошумовые гранаты Апдейт
+5.3 Химический Источник Света - Палки + new devices patch
+5.4 Grok's Balanced Overhaul Of Ballistics System (GBOOBS) 1.7.1 - теперь от типа патронов зависит возможность пробития брони и расстояние на которое будет лететь пуля.
+5.5 Патч выпадения исправного снаряжения + стартовые вещи - моя правка, добавляет предметы из модов на старте и с трупов мусор будет падать пореже.
+5.6 Деградация Артефактов - артефакты и снаряжение на поясе будет изнашиваться, от этого зависит цена.
+5.7 Ammo_Icons - Иконки патронов ввиде пули в гильзе с подписями.
+5.8 ammo patch 02. patched weapon_ammo. - патч для мода 5.4. GBOOBS(не отображались иконки патронов).
+6.0 HarukaSkillSystem-v1.5.0 - система перков.
+6.1 Skills Expansion 2.1 - система навыков.
+6.2 Skills Expansion 2.1 RUS - руссификатор.
+6.3 AI_Combat_Pack - Improved Combat AI - NPC станут умнее, будут правильно использовать местность для ведения боя. моя правка - NPC теперь умеют правильно использовать все виды гранат и подствольных гранатометов.
+6.4 AI_Combat_Pack - Less NPC Dispersions - NPC смогут отступать, прятаться, или вовсе убежать если силы с противником не равны и наоборот(кроме монолита).
+6.5 AI_Combat_Pack - NPC Aim Fix - NPC научатся стрелять, все снайперами не будут, всё зависит от оружия и установленных на нём прицелов и модулей.
+6.7 ExoServoSounds-v.2.0 - новые звуки экзоскелетов.
+6.8 Weapon_Cover_Tilt_MAIN (Задирание ствола в упор у стен)
+6.8.1 Weapon_Cover_Tilt_PATCH_BaS
+6.8.2 Weapon_Cover_Tilt_PATCH_BaS_Update
+6.8.3 Weapon_Cover_Tilt_PATCH_Blindsides
+6.8.4 Weapon_Cover_Tilt_PATCH_PP19_AUG_L96_Reanim
+6.8.5 Weapon_Cover_Tilt_PATCH_RPG-7_Bizon_Reanim
+6.9.1 Levels_0.52 новые локации (требуется новая игра) - добавляет 3 новые локации: Мрачный лес, Промзона, посёлок "Южный" и 2 подземных.
+6.9.2 Camera Reanimation Project - I.N.E.R.T.I.A. V1.2 - анимации(инерция) камеры игрока.
+6.9.3 Crook's Faction Identification UI - при прицеливании в NPC(не мутанта), в левом нижнем углу будет выводится его группировка и ранг.
+6.9.4 OPT01. Small Patches Display - мелкие патчи для моды выше.
+6.9.5 LootRebalance Glowsticks+WPO patch - ребаланс лута на локациях, в тайниках + патч хим. источников света + патч для мода 2.4.
+6.9.7 Arrival - новые аномалии.
+6.9.9 Devices of Anomaly Redone - ещё больше устройств(более вписываются в атмосферу).
+6.9.9.0 Campfires_placeable_0.22 - позволяет размещать костры где угодно.
+6.9.9.1 Hideout Furniture - Aoldri - позволяет обустраивать свою базу, отлично сочитается с модом выше.
+6.9.9.1.1 Hideout Furniture Expansion - добавляет еще больше предметов обустройства базы.
+6.9.9.2 NPC movement speeds addon - NPC передвигаются теперь чуть быстрее.
+6.9.9.3 Perk_Based_Artefacts_LITE - к артефактам добавятся перки дающие уникальные способности главному герою(артефакт люцифер больше не убивает гг, а удаляется(мешало прохождению сюжетной линии), но проклятие гг по прежнему работает).
+6.9.9.4 Duxs_Innumerable_Character_Kit.28 - добавляет красивые модели NPC.
+6.9.9.4.1 Dux's Innumerable Character Kit Voices Pack - добавляет много случайных озвученных фраз для NPC.
+6.9.9.5 Dynamic Icon Indicators - добавляет для предметов индикаторы свойств, полезно для быстрой навигации в инвентаре.
+6.9.9.6 Arszi_Task_Pack - пак квестов.
+6.9.9.7 BaseGame_Task_Pack - пак квестов.
+6.9.9.8 community-task-pack - пак квестов.
+6.9.9.9 Замена Хип(Уникальный Отряд Монолита).
+6.9.9.9.1 Even More Hideout Furniture2.2 - добавляет больше размещаемых предметов.
+6.9.9.9.2 Even_More_Hideout_Furniture_RU_translation.3(by Stalker_Boss) - Русификатор аддона выше.
+6.9.9.9.3 ReDone Night Campfires 1.0 (19.00 - 6.00) - сталкеры сидят у костров с 19 до 6 утра.
+6.9.9.9.4 ambientmusicpack2.9 + custom themes - добавляет эмбиент на каждую локацию.
+6.9.9.9.5 1.5.2_Banjajis_Nutcracker_Mayhem_v2.0 - Выпадение оружия у NPC при получении урона.
+6.9.9.9.6 bullet-shell-sounds-update-3-1.1 - звук падающих гильз.
Далее идут опциональные моды, которые вы можете включать и выключать, в любом порядке, и без вреда сборке.
7.1 Осенний пак текстур
7.2 Более зеленая трава - полезно для стримеров(не пикселит на ютубе).
7.3 Более красивая земля
7.4.0 Зимний Аддон(Ниже погодные пресеты - выбрать что-то одно)
7.4.1 Зимний Аддон - пресет без осадков
7.4.1 Зимний Аддон - пресет для мощных ПК
7.4.1 Зимний Аддон - пресет для слабых ПК
7.4.1 Зимний Аддон - пресет для средних ПК
7.4.2 Зимний Аддон - dx8 fog fix (поставить обязательно если вы играете на dx8)
7.4.3 Система Холода - Замерзания
8.1 текстуры для слабых пк 10-14 года.
8.2 Больше тумана - больше фпс.
8.3 Больше тумана - урезание дистанции видимости.
+99.1.1 Реалистичный Урон от Падений
+99.1.2 Реалистичный Обыск тел
+99.1 PayPal в зоне (Автозавершение квестов и выдача награды удалённо)
99.2 Скрыть иконку игрока на карте
+99.4 прицелы на экране(Настраивается в настройках игры)
99.5 Переключение прицельных сеток - только для directx 10-11
+99.7 Новая Озвучка Персонажа Монолит.
+99.8 Чистые Приборы Ночного Видения. - убирает черные пятна по углам.
+99.9.1.1 Всплывающие Сообщения (Anomaly Popup Messages). - замена всплывающих сообщений при подборе предметов.
99.9.2.1 скрытие сообщений ПДА на экране
99.9.3.1 Изменение освещения на локациях - добавляет настройки освещения на локациях в раздел Моды.
+99.9.4.1 Исправление Зрения NPC сквозь кусты. - добавляет материал кустам, из-за чего NPC не будут простреливать через кусты, актуально для локации "Болота".
+99.9.5.1 Проверка патронов в магазине.
99.9.6.1 Магазины на оружие
+99.9.6.1 Физика гильз.
+99.9.7.1 Анимации Одевания Брони.
Вместимость тайника 35кг
Вместимость тайника 50кг
Вместимость тайника 70кг
Вместимость тайника 100кг
Колесо использования предметов(QAW)
Точки мертвых тел на картеСпойлерЗа музыку в меню страйка не будет(куплены права у Исполнителя на трек), за радио - Бан не прилетит (может быть только АП, все треки есть на Ютубе или Исполнитель разрешает использовать контент), главное в КПК разделе "Радио" не включать Плеер(находится в самом низу), если все таки включили, следите за тем, что играет, там есть запрещенная музыка типа Rammstein.
Если боитесь, в разделе: главное меню -> настройки -> звук -> "Радио Зоны" можно отключить сняв галочку.
Трава стандартной Anomaly может сильно искажать картинку на стриме и видео.
Решение: поставить "осенний пак текстур" (только для мощных и средних пк) или "Более зеленая трава"(эта трава исправляет пиксели от травы на видео и стриме) и "Более красивая земля".СпойлерAnomaly BE Launcher/Updater - Специальный лаунчер для сборки Blue Eclipse с расширенными параметрами запуска и системой обновления.
Все Действия лаунчера сохраняются в лог, который находится рядом в папке с лаунчером в отдельной папке AnomalyBELauncher, если вы случайно удалили папку настроек лаунчера, она восстановится, но придется настроить его заново. Сетевая часть работает на библиотеке Curl(libcurl.dll), звуковая часть на библиотеке bass(bass.dll).
Если вы хотите использовать звуки, то скопируйте файлы в папку с настройками.Особенности:
- высокая скорость работы даже на самых слабых пк.
- простой и понятный интерфейс. (Интерфейс написан на DirectX 9 с использованием графической библиотеки ImGui( вы могли её видеть в Решейдах ).
- почти у каждой опции имеется подробное описание.
- проверяются права контроля пользователя(UAC) при запуске. (полезно для стримеров использующих chaos tricks или когда не создаётся user.ltx из-за отсутствия прав администратора у игры).
- параметры запуска выводятся на экран в режиме реального времени, а так же путь к игре.
- подключена звуковая библиотека bass.dll.
- простая установка(инсталлятор \ деинсталлятор(создается в папке с игрой) )
- полная совместимость с Мод Органайзером и разными сборками.( учтите, что с Мод Органайзером у лаунчера будут свои настройки, а без него другие )
-
Имеет два встроенных сканера файловой структуры(реального времени и ручной):
Сканер реального времени после запуска постоянно проверяет наличие файлов и каталогов. Если например отсутствует какой-то файл или каталог в Anomaly, то кнопка "Играть" заблокируется, а в разделе "Модули" будет сообщение, о том какой модуль был повреждён.
Ручной сканер(раздел "Сканер") необходим для получения\сравнения хэш-сумм, поскольку в реальном времени считать хэш-суммы затратная задача. - Может скачивать файлы напрямую с Яндекс Диска за счет встроенного конвертера ссылок.
Недостатки:
- Не может считывать кириллицу с имен файлов внутри zip-архивов при распаковке, приложение крашится.
- Не может считывать пробелы имена zip-архивов с кириллицей перекодированные в base64 Яндексом, файлы скачиваются, но не может распаковать, приложение крашится.
- Некоторые архивы не может нормально распаковать, предполагаю что это из-за количества файлов в архиве или проблема в формате ogg, приложение крашится именно на этих файлах.
Содержание вкладок:
Общие - основные параметры такие как тип Рендера, Размеры теней, а так же если ваш процессор поддерживает AVX, то будет доступна кнопка для включения данной технологии. (часто бывает, что AVX поддерживается, но он может быть выключен по умолчанию в BIOS). Кнопки для быстрого взаимодействия с папкой игры. (открытие папки с лаунчером, логами, сохранениями, удаление сохранений, шейдер кэша, логов, восстановление user.ltx )
Оптимизация - опции параметров запуска для улучшения стабильной работы игры, у каждой опции при наведении есть подробное описание.
Отладка - различные инструменты для разработчиков(включение дебаг меню, истории загрузки\выгрузки текстур).Помощь - будет содержать информацию о всех багах Anomaly и способы устранения прямо в лаунчере, а так же опции устранения проблем с запуском самой игры.
Сборка BE - элементы контроля интернет радио(добавлено 68 станций на разный вкус), выводит название песни которая играет на радио, кнопки быстрого перехода в телеграм канал и в тему сборки на ap-pro во внешнем браузере по умолчанию.
Обновления - будет содержать информацию о предыдущих и будущих обновлениях разных модулей.
Модули - кнопка включения автоматического обновления лаунчера, статусы всех модулей(условный термин для разделения игры, менеджера модов и сборку модов на части, и миничасти).Листы - отображает список подмодулей(по простому - это файлы и папки игры, менеджера модов, сборки), список файлов и каталогов каждого из модулей, список внутренних задач(удаление, перемещение, переименование файлов и каталогов), которые будут происходить до установки обновлений(патчей), список конфигураций игрока(это лист с помощью которого игрок сможет заархивировать свои индивидуальные настройки модов, игры, сохранения в zip-архивы, затем в любой момент восстановить просто скачав с Яндекс Диска, архивы распакуются в указанные пользователем каталоги с заменой файлов.) Внутри списков встроен фильтр для быстрого поиска.
Максимально простой формат списков подмодулей и файлов(синтаксис похож на Python):
Разбор файловой структуры modules_list.txt:
Пример для файла:#комментарий
#submodulelist[] = номер "имя zip-архива" "имя модуля" "ссылка на скачивание"
#filelist[] = номер "имя файла" "папка где должен находиться файл" "имя модуля" "указываем что это именно файл или каталог" "хэш-сумма"
submodulelist[] = 14 "AnomalyDX8.zip" "anomaly" "ссылка на ЯД"
filelist[] = 14 "AnomalyDX8.exe" "bin" "anomaly" "file" "e0ab5a3d18bbf7ad7b6b30a03f934e81" #modded exes
Пример для каталога:
#в архиве configs.zip папка configs, архив скачивается, и распаковывается в папку db в каталоге с лаунчером, после распаковки удаляется.
filelist[] = 2 "configs" "db" "anomaly" "dir" "" #хэш сумму писать не нужно
submodulelist[] = 2 "configs.zip" "anomaly" "ссылка на Яндекс Диск"
Сканер - кнопки для получения\сравнения хэш-сумм на совпадение, если не указанно нужной хэш суммы в аргументе списка файлов, разработчик может таким образом получить её в лог файле лаунчера и быстро заполнить список.
Консоль - вывод всех событий происходящих в лаунчере, имеет встроенный командный процессор, клавишу очистки консоли, фильтр текста.СпойлерЛаунчер > Скачать(Яндекс Диск)
Ответ на вопрос: "Что за модули и подмодули?" - Это условный термин дабы разделить игру, менеджер модов и сборку на части, и миничасти. Так игроку легче восстановить файловую структуру, выполнить нужные файловые операции перед установкой следующих патчей, обновлений, вместо полного скачивания.
Установка для тех, кто уже имеет старую сборку, заново ничего качать не обязательно(Это важно!):
1) полностью удалите папку mods и profiles в папке Мод Органайзера и файл ModOrganizer.ini в папке MO2.
2) включите в разделе "Модули" систему докачки файлов, и нажмите на Кнопку "Проверить целостность файлов" на модуле Mod Organizer 2, если первый раз устанавливаете, кнопки может не быть , то эти кнопки есть в разделе "Сканер".
После полной докачки, модуль отобразится зеленым цветом, это означает, что он целый.
Нажмите кнопку "Пропатчить ModOrganizer.ini" 1 раз.
Патч изменит пути в файле конфигурации Mod Organizer'a на ваши и установит менеджер модов в портативный режим автоматически, что изолирует от других сборок и другого Mod Organizer'a.
Кто первый раз ставит, таким же образом ставим Anomaly(нажимаем 'Проверить целостность файлов' в разделе Модули)
Anomaly 1.5.2 и Мод Органайзер установлены и настроены!
Внимание!!!
Все моды были переименованы на английский язык из-за проблем распаковщика zip-архивов(библиотека которую я использовал в написании экстрактора, оказалось, она не может работать с кириллицей и из-за этого не может распознавать файлы с русскими символами, и не может учитывать пробелы в названиях zip-архивов, конвертация в различные кодировки так же не помогают).
Поэтому рекомендуется заранее 'открыть папку с лаунчером'(можно прямо в лаунчере во вкладке Общие нажать клавишу).
Проблема с распаковкой, проявляется только при установке модуля Blue Eclipse, поэтому при закрытии(вылете) лаунчера без вашего ведома - в каталоге AnomalyBELauncher есть файл с логами всех событий и там в самом конце отображается какой последний мод распаковывался. Смотрите номер мода, так легче найти.
В каталоге MO2/mods находим проблемный каталог мода, удаляем его и повторяем сканирование. Если проблема повторяется, то можно скачать этот мод по ссылке в файле modules_list.txt(файл автоматически загружается каждый запуск лаунчера, поэтому ссылки всегда актуальны). Таких модов не много, у меня насчиталось 4 штуки, я в modules_list.txt разместил их в самом низу, чтобы быстрее найти.
3) установите сборку Blue Eclipse так же с помощью докачки.
ДЛЯ ТЕХ, КТО СТАВИТ ПЕРВЫЙ РАЗ, выполняются те же пункты с 1-3, так же стоит обращать на 3-ий пункт внимание, это единственная проблема!
4) далее делаем ярлык на наш ModOrganizer.exe и в свойствах файла в разделе "Совместимость" ставим галочку "Запускать эту программу от имени администратора" -> "Применить" -> "OK".
На этом моменте сборка установлена!ЕСЛИ ВЫ ТОЛЬКО ПЕРЕУСТАНОВИЛИ WINDOWS и игра не запускается, установите(так же можно это сделать прямо в лаунчере в разделе "Помощь"): https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe
СпойлерСпойлерранние изменения:
- добавлен аддон на фикс стрельбы NPC сквозь кусты.
- исправление количества денег у обычных NPC, теперь они не бомжи.
- исправление количества денег на старте.
- добавлена "проверка патронов" в мазагине, настройки аддона появятся в разделе "Моды".
- исправлен весь бесконечный спавн NPC в сюжетном режиме, теперь работает почти так же как в войне группировок, но с небольшими правками.
- исправлены все найденные мной ранее вылеты в том числе, которые были на стримах, а так же просадки фпс.
- фикс рюкзаков, исправлена формула распределения веса при перегрузе.
- исправления в меню "моды", и перевод некоторых модов.
- аномалии жгучий пух(урон и эффекты отрубил, теперь это просто трава).
- за монолит не выдаются патроны для ножа.
- уникальный отряд монолита спавнится там же где Фантом и бежит к стадиону.
- восстановлена система прокачки, теперь полностью работает, и стали доступны перки(около 40 уровней прокачки каждого скилла)
- частота на рации теперь отображается на правильном месте.
- Секретный артефакт теперь не убивает гг(было невозможно дальше пройти сюжет), а удаляется из инвентаря при 0-вом состоянии.
- исправлено взятие стартовых вещей(нельзя было взять некоторые вещи на старте(фонарик, кпк, батарейки)).
- добавлены полезные советы по выживанию в Зоне включая информацию по некоторым новым механикам сборки в загрузочные экраны.
- перевод "клавиши устранения клина" в моде WPO (в меню настроек модов).
- аддон Weird_Tasks_Framework( добавит много квестов и динамики на каждую локацию в игровой процесс(в сборке для него заранее присутствуют настройки и патч исправляющий вылет при взятии некоторых квестов на мутантов)).
добавлены опциональные аддоны:
- +99.9.6.1 Физика гильз.
- +99.9.7.1 Анимации Одевания Брони.
Патч от 30.10.24:- исправлен вылет при переходе с 'мертвого города' в 'Мрачный лес'.
- исправлен вылет и спавн на локации 'Юпитер', необходимо запускать сохранение до перехода на локацию, либо новая игра.
- добавлена опциональная вместимость в тайниках.
- магазины к оружию теперь опциональные.
- добавлен аддон 'отметки тел на карте'.
-
добавлены недостающие анимации и поправлены для следующих препаратов:
Эпинефрин(adrenalin) <- анимация взята от анальгетика 'возрождение'
Хлортетрациклин(antibio_chlor) <- добавлены
Антирад(antirad) <- изменены
Цистамин(antirad_cystamine) <- добавлены
Антидот(drug_antidot) <- изменены
- добавлен аддон Quick Action Wheel Колесо быстрого действия(QAW).
- добавлен зимний аддон.
- добавлено больше предметов и мебели в размещаемые объекты.
- добавлен аддон чтобы сталкеры ночью не бродили, сидели у костра(с 19 зажигают костры до 6 утра).
- добавлена систему холода / замерзания.
- маскхалат меняется на зимний вариант при включении зимнего аддона.
- изменен весь эмбиент на каждой локации.
- зимние загрузочные экраны включаются при включении зимнего аддона.
- физика гильз (будет заметно если подойти к стене , повернуться влево, то гильзы будут отскакивать и т.д.)
- добавлен аддон 'анимации одевания брони'(опционально).
- изменен аддон "Чистые приборы ночного видения"(поправлены анимации и убраны шумы).
- добавлен небольшой фикс исправляющий ремонт и замену деталей(ремкомплектом детали чинятся от 5% до 60%, а детали заменяются не причиняя вреда оружию).
- у каждого артефакта теперь указывается уровень и тип аномалий месторождения.
- с курткой туриста теперь можно носить рюкзак.
- вся мебель в крафте перенесена в отдельный раздел.
- В крафте добавлен раздел "Специальное", в котором можно создавать кустарные аналоги анальгетика возрождение с помощью некоторых артефактов.
СпойлерСпойлер======================= (В-)опрос | (О-)твет =======================
В - Не могу убить Фантома с помощью оружия, гранатами, даже с пулемета, у него быстро восстанавливается здоровье.
О - Его можно убить, но нужно вызвать сильное кровотечение, винтовка гаусс нужна, так же на стадионе стоит новый персонаж, убив которого, вы найдете вещи, которые облегчат дуэль. (так было задумано, исходя из описания Фантома в сюжетных диалогах)=== ДАЛЕЕ ОПИСАНЫ ВСЕ ВОЗМОЖНЫЕ БАГИ СТАНДАРТНОЙ ANOMALY И СПОСОБЫ РЕШЕНИЯ ( Актуально для других сборок ) ===
В - вылет при убийстве или смерти механика, торговца, медика.
О - Понижайте настройки графики (расстояние и количество травы, отключайте тень от солнца, эффекты в самом низу в главном меню -> настройки -> видео -> расширенные).
ВЫЛЕТ В СБОРКЕ ИСПРАВЛЕН, но рекомендации пусть будут.
=======================================================================================В - потеря управления ГГ, не работают клавиши кроме, ESC.
О - Это редкий баг стандартной Anomaly, Решение: сохраниться и загрузить сохранение. (изменено)=======================================================================================
В - Вылет вида "Can't open section 'string_table' или "1040 invalid parameter" или "Dest string less than needed".
О - Удалить папку gamedata из оригинальной аномали и заного установить патч до 1.5.2.
=======================================================================================В - Странная сеткарябь по всему экрану вне помещений.
О - Отключить настройку "Объёмный свет" и "Солнечные лучи" или сменить рендер dx9 на любой другой.
=======================================================================================В - Желания Монолита вызывают вылет(что делают)?
О - ПОЯСНЕНИЕ: "Бессмертие" и "Богатство" в данный момент (1.5.1) работают некорректно.
"Уничтожить Зону" - закрывает игру, в логе указывает причину "ЖЕЛАНИЕ ИСПОЛНЕНО".
"Люди злы и мелочны" - постепенно заменяет спавн нпс мутантов на контроллеров.
"Мир во всем мире" - удаляет из Зоны всех нпс.
=======================================================================================В - Вылет при разговоре с квестовым персонажем по основному сюжету (В логи ошибка типа Description : No available phrase to say, dialog ).
О - ПРИЧИНА: Данная ошибка возникает если в процессе прохождения сюжета игрок менял группировку или загадывал у Монолита "бессмертие". Откатывайтесь до этих действий и не совершайте их.
=======================================================================================В - У персонажа безостановочно накапливается радиация.
О - проверьте артефакты на излучение радиации, ещё возможно в настройках игры включена опция "Дневная радиация". Так же существует артефакт "аномальный хлеб", он тоже фонит, но не определяется фильтрацией инвентаря как артефакт, возможно он у вас есть.
=======================================================================================В - Персонаж умирает при входе в главный зал в Х-16.
О - ПРИЧИНА: в актуальной версии (1.5.1) неоткалиброванный шлем не дает пройти Х-16. ( УЖЕ ИСПРАВЛЕНО, но пусть будет )
=======================================================================================В - Фонарик не достается на кнопку фонарика!
О - РЕШЕНИЕ: Ручной фонарик считается устройством и достается на клавишу "устройства" (по умолчанию - О), клавиша фонарика в настройках (по умолчанию - L) отвечает за включение налобного фонарика.
=======================================================================================В - Механик не отдает вещи!
О - ПРИЧИНА: "Длительный ремонт" начинает работать некорректно при сдаче нескольких вещей или сне во время починки. ( ИСПРАВЛЕНО! )
=======================================================================================В - В сюжете "Операция Послесвечение" после нахождения Шва и Бродяги у Стрелка нет продолжения квеста.(очень редкий баг).
О - РЕШЕНИЕ:Включить в лаунчере Debug mode
В игре нажать F7, потом 0, потом в строке "Выполнить функцию" вписать
db.actor:give_info_portion("lttz_oa_rogue_done") (можно скопировать и вставить)
Нажать "Выполнить"
=======================================================================================В - Лесник не пускает к себе! ДВЕРЬ ЗАКРЫТА!
О - ПРИЧИНА: Дверь не открывается для враждебных Одиночкам группировкам. Используйте маскировку(одеть бронежилет чужой группировки не срывая нашивку и желательно, чтобы никто не видел).
=======================================================================================В - Квест "А топи здесь тихие.." не продолжается после посещения станции, трупа снайпера на вышке НЕТ.
О - Пояснение: из за уборщика трупов тело пропадает через некоторое время и на определенной дистанции. РЕШЕНИЕ: Загрузится до взятия и после взятия квеста СРАЗУ бежать на станцию.
=======================================================================================В — Не переходит на другую локацию, экран темнеет, но загрузка не начинается! — В Х-18 не открывается вторая дверь после ввода кода!
О - ОБЩЕЕ РЕШЕНИЕ: сохраниться, загрузиться.
=======================================================================================В — mvcp140.dll и vcruntime140.dll не обнаружены!
О - РЕШЕНИЕ: Скачать и установить MICROSOFT VISUAL C++ 2015, есть в разделе "Установка", на всякий случай ссылка: https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe (актуально после переустановки windows)
=======================================================================================В — Ошибка вида "D3DXCreateTexture"
О - РЕШЕНИЕ: заходим в Anomaly\appdata и в файле user.ltx меняем строку r_no_ram_textures on на r_no_ram_textures off (решение так же исправляет черный экран и вылеты на рендере directx 9)
=======================================================================================В — После прохождение сюжета не открылась группировка для старта Новой Игры за неё.
О - РЕШЕНИЕ: на экране создания новой игры ввести на клавиатуре код открытия группировки (RENEGADE для ренегатов, GREH для греха и UNISG для ииг, для зомби нажать клавишу Z).
=======================================================================================-
1
-
1
Anomaly Engine modded_exes addon | Патч многоядерности | Modified by Blue Eclipse Team
в Дополнения
Опубликовано
Коропасий Возможно вы невнимательно прочли первый абзац темы, а именно:
Суть проблемы:
По умолчанию номер потоков неправильно захватывался, так же все создаваемые потоки принудительно присваивались на 1 логический процессор(1 ядро).
Даже если вы задаете через диспетчер задач сходство, нагрузка всё ровно перейдёт на следующее ядро!!! Проблема кроется внутри самой программы AnomalyDX*.exe, потоки принудительно задаются на 1-е ядро через внутренний планировщик потоков, функция SetThreadAffinityMask, в то время как, вы через внешнюю программу, Диспетчер задач, по простому, отключаете видимость определенных ядер для процесса AnomalyDX*.exe.