Directx для гри crysis 3. Працюємо по "жорсткої" схемою

Проблема отстутсвія локалізації криється в наступному: в Crysis 2 є лише один архів gamecrysis2 \\ Localized \\ Russian.pak, в Crysis 3 їх уже два - Localization \\ Russian.pak і Localization \\ Russian_xml.pak

Працюємо по "жорсткої" схемою

качаємо програму PAK Manager (Pak Manager Tool), Вона потрібна для розпакування шифрованих * .PAK файлів гри, з офіційного сайту CryTek, Що поставляється в комплекті з Crysis 2 Mod SDK

Crysis 3 DX9 Project

Оновлене 22.03.2013 !
Після виснажливого копання в CryEngine 2 і CryEngine 3 було встановлено, що в останньому (з гри), присутні важливі настройки.
Серед них потрібно відзначити - r_Driver(CE3) приймає значення: DX11, AUTO і NULL.
Цитата з crysis3.exe "Sets the renderer driver (DX11 / AUTO / NULL)". А також дуже допомогла рядок: Specify in system.cfg like this: r_Driver \u003d "DX11". Specifies index of the preferred video adapter to be used for rendering (-1 \u003d off, loops until first suitable adapter is found). Виставлення r_Driver \u003d "DX9" призвело до зникнення частини об'єктів на картах і не знайдені промальовування персонажів (видно було тільки голова і зброя).

перевіряємо r_ShadersExport (0 off, 1 allow shader export during shader cache generation - Currently 360 only.), Тобто експортуємо оброблені ефекти в файли (Crysis3 \\ USER \\ Shaders \\ Cache).
І знову невдача, як було виявлено науковими дослідженнями, більшість команд, які були доступні в C2, тут або зафіксовані, або движок не реагує ніяк на їх зміну, хоча в коді часто проглядаються настройки для PS3 і Xbox 360, зокрема: r_ShadersPS3 і r_ShadersXenon. Взагалі кажучи, сам файл crysis3.exe містить багато сміття і непотрібної інформації, наприклад, можна знайти виклики і параметри компілятора, але то що потрібно відшукати так і не вдалося, на цій ноті вивчення CryEngine 3 було зупинено. Варто зазначити що в коді C3, проскакує вираз D3D9, Так що можливо, спочатку, CE3 створювався і під DX9 також, мабуть розробники зіткнулися з якоюсь незрозумілою проблемою і вирішили не напрягатся, зварганити по швидкому "новий" движок.

Чого вдалося досягти

Досвідченим шляхом було виявлено, що C3, відгукується на комманду в system.cfg, sys_spec (0-6), причому значення 5 для Xbox 360, а значення 6 для PS3! (Sys_spec \u003d 5). Мушу зауважити що в цьому випадку, гра починає використовувати весь ваш N-ядерний процесор без зупинки, навантажуючи його на 99%! Відео нижче демонструє основну проблему, в движку CE3 немає текстур низького дозволу, принаймні для персонажів. Крім того виявили можливість перекомпіляції текстур. Дивіться скріншоти нижче і дивіться ролик.


В даний момент команда ентузіастів HardWare Masters працює над цим, як закінчимо і протестуємо - викладемо!

Crysis 2 MOD SDK

Для установки пакета розробника від німців, потрібно C2 версії 1.9, якщо у Вас встановлена \u200b\u200bпіратка і SDK не встановлюється вивалюючись з помилкою: "Requires a full installation of the game Crysis 2, updated to Patch 1.9 ", То потрібно зробити наступне:
- перевірити ключ реєстру (для 32-бітових систем) HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Crytek \\ Crysis 2 ключ строкового типу Install Dir, Якщо такого запису немає в реєстрі або шлях вказано не вірно, то створити і прописати потрібний!
- для x64 систем, ключ реєстру лежить за адресою: HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Crytek \\ Crysis 2 , Дії аналогічні Попереднє пункту.

Корисні посилання

DirectX 11 Hook / Hack / Patch

Після маси проведеного часу у вивченні движка від гри Crysis 2, на думку спала ідея емуляції / обходу API викликів DirectX 11. Власне ідея не нова, якщо згадати стару утиліту від німецького автора, під назвою 3D Analyze, Яка дозволяла емулювати версію шейдеров і налаштовувати кожен додаток практично під будь-яку відео карту, то цей метод вирішення є більш швидким і надійним. Ми відправили Thomas"У повідомлення, але і самі вже почали працювати в цьому напрямку. Патч / Хак / Утиліта представлятиме себе або прямий патч (.dll) або універсальний (модифікувати пам'ять процесу).

В результаті досліджень EXE-файлу було вирішено зробити "свою" бібліотеку d3d11.dll, щоб функції в бібліотеці повертали потрібні параметри без участі драйверів. Також в процесі дослідження технології DirectX був знайдений дуже цікавий ряд деталей, наприклад те, що будь-яку модель з ефектами DX11, можна отрендеріть практично на будь-який відеокарти. Власне виникла підозра, що все "плюшки" DX10 / 11 і т.д., це надбудови над DX9, і підтримка соотв API, криється тільки в драйверах. Адже яка різниця що відправляти на чіп? Зрештою все одно машинний код відправляється на чіп, для прикладу, Тесселяція - за фактом, додає ще кілька каркасів до вже наявної моделі. У підсумку ми бачимо на власні очі весь сучасний маркетинг, тобто, для продажу нових чіпів придумали нові фішки, які і на більш ранніх моделях (8600GT / Radeon 4000 серія ...) можна також відтворити. Наприклад якщо в DX9 опуклість можна побудувати 9 командами, то в DX11 лише 3мя, це просто для прикладу, на виході все одно графічний чіп буде навантажувати однаково). Ще один момент, навіть якщо Ви зробите модель тільки для 11 версії шейдеров, Вам все одно доведеться встановлювати "опуклості і освітлення" руками. Саме з цього в Crysis 3 шейдери для моделей вже лежать в самій грі). За фактом все блоки стоять в драйверах і в бібліотеках (спасибі MS, NV і AMD - все монополісти). Нижче відео, демонструє в який бік потрібно копати, а також наочно показує вірність мого твердження.
Що Ми хочемо зробити? Замінити бібліотеки DX11, аналогами, тобто кожен виклик фунції API 11.0 / 11.1, буде завжди успішним;).
Трохи згадавши історію ... Наприклад як довго народ сидів на XP, і всіх все влаштовувало, а також провал Vista (основна фішка псевдо DX10), а потім повільний перехід на Seven (вилазити віста і псевдо-новий DX11), ще раз доводить вірність затвердження.

Підготовка до хаку

Альтернативна бібліотека DirectX 11 - концепт

Після поверхневого дослідження гри на предмет виконання функцій DirectX, до завантаження меню, були знайдені дві: D3D11CreateDevice і. Відкривши базу знань Мікрософтвера (MSDN) було виявлено, що розбіжностей не так вже й багато, за винятком кількості аргументів.

оголошення функції D3D11CreateDevice

HRESULT D3D11CreateDevice (_In_ IDXGIAdapter * pAdapter, _In_ D3D_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ const D3D_FEATURE_LEVEL * pFeatureLevels, _In_ UINT FeatureLevels, _In_ UINT SDKVersion, _Out_ ID3D11Device ** ppDevice, _Out_ D3D_FEATURE_LEVEL * pFeatureLevel, _Out_ ID3D11DeviceContext ** ppImmediateContext );

оголошення функції D3D10CreateDevice

HRESULT D3D10CreateDevice (_In_ IDXGIAdapter * pAdapter, _In_ D3D10_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ UINT SDKVersion, _Out_ ID3D10Device ** ppDevice);

оголошення функції D3D11CreateDeviceAndSwapChain

HRESULT D3D11CreateDeviceAndSwapChain (_In_ IDXGIAdapter * pAdapter, _In_ D3D_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ const D3D_FEATURE_LEVEL * pFeatureLevels, _In_ UINT FeatureLevels, _In_ UINT SDKVersion, _In_ const DXGI_SWAP_CHAIN_DESC * pSwapChainDesc, _Out_ IDXGISwapChain ** ppSwapChain, _Out_ ID3D11Device ** ppDevice, _Out_ D3D_FEATURE_LEVEL * pFeatureLevel, _Out_ ID3D11DeviceContext ** ppImmediateContext);

оголошення функції D3D10CreateDeviceAndSwapChain

HRESULT D3D10CreateDeviceAndSwapChain (_In_ IDXGIAdapter * pAdapter, _In_ D3D10_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ UINT SDKVersion, _In_ DXGI_SWAP_CHAIN_DESC * pSwapChainDesc, _Out_ IDXGISwapChain ** ppSwapChain, _Out_ ID3D10Device ** ppDevice);

Цей код лежить на сайті MSDN, Так що будь-хто може перевірити. Зокрема функція D3D11CreateDeviceAndSwapChain викликається лише два рази в грі до завантаження головного меню, власне швидше за все тест на перевірку фішок 11-ої версії DirectX на цьому і заснований, було вирішено підмінити бібліотеку d3d11.dll (помістив в папку з crysis3.exe), написавши її "клон" який в першу чергу буде перехоплювати всі виклики функцій з гри і записувати в ЛОГ-файл, по-друге завжди можна буде повернути потрібні Нам значення!

Скріншот нижче, не показує відмінностей між DX9 і DX11 ( Dragon Age 2), DX це просто програмний API для відео драйвера, драйвер в свою чергу створює набір команд (інструкцій) для графічного процесора. Фішки DirectX 11 це просто додаткові ефекти для DX9, DX10 / DX11 - просто маркетинг щоб продавати Windows Vista і інші операційки від Microsoft, а також щоб міняти відеокарту частіше через "нових" фішок, які по суті не що інше як просто програма. Якби у Вас була документація по відео адаптера (ми намагалися її отримати, але нам відповіли відмовою), наприклад GeForce 6600, Ви б могли легко зробити потрібний драйвер під будь-який API, який умів би створювати потік команд для накладення тих же ефектів DX11 на простенькій 6600 або на будь-якому іншому чіпі і адаптер!

файли

Важливо: для розпакування архіву, Вам потрібно використовувати архіватор з підтримкою формату 7z, наприклад, 7-zip (7-zip.org) або WinRAR (Rarlab.com).

Crysis 3 на Windows XP. Чи працює гра на DirectX 9 10

В інтернеті нерідко можна зустріти теми на форумі і питання зі змістом Чи працює Crysis 3 на Windows XP c DiretcX 9 і 10?

У цій статті ми нарешті поставимо крапку в обговореннях про те чи може працювати Crysis 3 на Windows XP, і пояснимо все нюанси.

Отже, Crysis 3 просто фізично НЕ МОЖЕ запуститися і працювати на Windows XP. Чи не тому що Windows XP надто стара операційна система для Crysis 3, а тому що максимально-підтримувана версія DirectX в XP це 9, в той час як самий МІНІМАЛЬНИЙ рівень DirectX необхідний для запуску і роботи Crysis 3 це 11.

Дійсно на Windows 7, 8 і Windows Vista Crysis 3 відчуває себе відмінно, тому що ці операційні системи можуть працювати з DirectX 11, під який створена гра.

Ще є нюанс, буває користувачі дивуються чому не працює Crysis 3 на Windows 7, 8, Vista адже вони підтримують DirectX 11. Це насправді дуже хороше запитання, на який є відповідь. Недостатньо щоб одна операційна система підтримувала DirectX 11, також необхідно щоб DirectX 11 підтримувався самої відеокартою. За допомогою програми GPU-Z, ви можете визначити чи підтримує ваша відеокарта DirectX 11 чи ні.

Ну а щодо Windows XP, Crysis 3 працювати на цій ОС не буде хоч як крути. Саме тому рекомендуємо вам не морочити голову питаннями "як запустити Crysis 3 на Windows XP" і ін, оскільки запустити ви її на даній операційній системі ніяк не зможете.

Зіставляти уніфіковану платформу (де все API заточені під 1 конфігурацію і все движки тисячу разів вилизані і оптимізовані під набір заліза ФІКСОВАНИЙ) і ПК марення, ще раз повторю.
Те, що бокс має залізо 8 років давності не показник того, що на всіх картах вище GF 7x00, все повинно літати з твоїх роздумів.

Андроїд теж все крутіше по залізу ніж аіфони і все лага чомусь. Може потомучто при дефрагментації такий всім тупо влом оптимізувати? І це зрозуміло в цілому. Намагатися робити під 5 деваісов і під 100500 тисяч різні речі.

Ось як писи уніфікують і буде 2-3 конфігурації і раз в 5 років будуть змінюватися, тоді зрозумів би твої батхерд, але не в поточний стан. Дотримуючись Твоєї логіці купивши комп з 8 ядрами 8 гігамі і 7770, його має вистачить рівно на стільки ж, наскільки і вистачить нових консолей, але ось правда заковика, розвиток на ПК йде швидко, дозволу ростуть і виявиться так, що 7770 та ж навіть вже Сеічас не видасть такий картинки як видасть той самий ПС4 або x1, тому що розробникам влом робити гру заточену під 1 карту, тим більше коли маячить фішечка впіндюріть підтримку якого-нить ефекту нового, 3D або дозволу 4k або новомодного згладжування прожираємо потужності. І 7770 не вистачить для макс налаштувань для цього.

Ти судиш з боку жмотского споживача який хоче все і відразу і не апгредітся по 10 років.

Треба об'єктивно міркувати, а не з боку мені все повинні. Ще раз повторюся якби мета була наживатися на картах, то щас всюди б вводили примусово волосся як у скрині крофт новоі або фізікс відключається. Так такого не відбувається, і навіть ссанимі 7750 за 3 тисячі тягне всі ігри нові. Напиши ще опус, що Q6600 рулить і все проц новеі купує лошн. По-моєму у тебе просто батхерд, що твоя топ карта 7 років давності вже не жжот напалмом, в боксі стоїть гірше і тягне все і це причина обідчевості.

ГТА5 коли виідет на ПК теж буде гальмувати на залізо не свіжому, коли як на Пс3 гра після гта4 графічно стала краще і спритно працює. А все чому ?? Тому-що залізо там не змінюється, оптимізувати можна все до Тютелька. І сидіти підкручувати движок заради НЕ топового заліза ніхто не стане. Є де-факто титан і 8 гигов і проц який нитка свіжий під них і разруліваєтся нормальна робота. Це ПК рак. Чи не хочете раку беріть приставку.

Далі сенсу не бачу це обговорювати, пов ще не торкався плюсів апаратного рендеринга в 3д пакетах, де старими картками точно ловити нєфіг, через їх кількості потокових процесорів. Спасибі, що таких мало, і у нас розвиток не стоїть не місці, зменшується техпроцес / жор нових карт і заліза і зростає продуктивність, а то так і грали б в тетріс. Спасибі нам лохам)

Я до речі і не заперечую бізнес фактора ніяк, але ... консолі мають гроші з ігор і з підписок і вендори клепають залізо по відкатів MS і Sony з такои бізнес моделі, а на пк вендорам нічого не капає, та й піратства в рази вище, стиму всякі нвідіі і АМД з ігор не оплачувати, було б так, може вектор насичення нові картками і спав би нанівець. Але тоді і ПК був би практично приставкою. І той же стімбокс був би актуальним. До цього мені здається коли нитка нехай прийде. Або все уідет в хмари типу Onlive, де взагалі не потрібна потужна картка.