Могли бы вы сделать отдельную версию с минимальным набором функционала на основе РБ и инжекта в саму карту, чтобы все работало без дополнительных ресурсов?
Можно сделать, но только без графических фишек, в том числе без отрисовки нового интерфейса, так как хук на direct3d нужно ставить при инициализации игры, а с помощью РБ библиотеку можно подгрузить только при инициализации карты. Я уже выкладывал карту на РБ, которая внедряла мою библиотеку с widescreen fix'ом:
раскрыть
awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.
Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
Vitalik8, в данный момент работаю только над экспериментальной версией, добавляю пост-эффекты, дорабатываю шейдер освещения. Последняя неделя выдалась крайне продуктивной:
сегодня реализовал туман (линейный и два вида экспоненциального (в варкрафте они не работали корректно), завтра собираю добавить ещё один способ расчёта тумана, основного на высоте) и Туман Войны (позже ещё доработаю);
вчера реализовал сглаживание (SMAA) и Film Grain;
в начале недели добавил поддержку точечных источников света, теперь и они используют попиксельное освещение;
ранее улучшил качество теней, реализовал HDR Rendering, улучшил качество SSAO, добавил Lens Flares, LUT Color Correction и поддержку sRGB.
Нужно ещё много всего реализовать и улучшить то, что уже есть. Самое главное - оптимизировать способ отлова информации о моделях, которую я использую для рендеринга теней, так как именно этот этап самый прожорливый во всём pipeline'е.
Скоро выложу экспериментальную версию, мне понадобятся добровольцы с ПК различной мощности для тестирования мода на производительность.
А основную версию, думаю, не выложу пока не исправлю вылеты при запуске карт, которые используют функции отрисовки текста из RenderEdge. К этому времени, может быть, перенесу GUI систему на шейдеры.
Это происходит из-за per-vertex освещения. От подобных визуальных артефактов очень сложно избавиться, но можно немного замаскировать их, подкорректировав модели освещения (например, немного уменьшить интенсивность diffuse освещения и увеличить ambient):
Последний скрин заставляет плакать... свечение у меча пропало
Дело в том, что я пока не реализовал нормальный фильтр моделей на сцене, которые сохраняю для дальнейшего рендеринга в карту теней и для обычной отрисовки на сцену, используя свой шейдер. Свечение героев не должно перехватываться, я пока сделал фильтр на прозрачность, но это глупо, так как таким образом можно пропустить другие полупрозрачные модели. Но у меня пока вообще нет идей, как это сделать :(
Объекты двоятся из-за того, что я пока добавил самую простую реализацию SSAO, но и с помощью неё уже можно добиться неплохих результатов (об этом чуть ниже).
да и в целом картинка стала блеклой и мыльной какой-то :(
Для достижения наилучшего результата нужно подстраивать значения переменных, используемых в пост-эффектах (тонирование, блюм и т.д.), отдельно для каждой сцены.
На скрине карта окружения не очень подходит для этой сцены, я использовал старую, так как лень было рендерить сцену в новую. Дальше хочу сделать автоматическую генерацию нескольких кубических карт, расставленных на некотором расстоянии друг от друга по всей карте, при запуске. Более того, уже сейчас можно динамически рисовать сцену в кубическую текстуру, и использовать её для динамических отражений.
Скачиваешь этот файл: xgm.guru/files/100/179980/comments/336580/War3Patch.txt
Далее открываешь архив War3Patch.mpq в редакторе mpq (например Ladik's MPQ Editor) и используешь файл в качестве listfile.
Модель будет лежать по этому пути: Units\Creeps\HeroTinker\HeroTinker.mdx
awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.
Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
Вот, что ответили Karaul0v'у (работает над DLL для доты) в Авасте на счёт ReturnBug:
It took a while cause our Threat Lab studied the case in details.
Also, it would be almost impossible to create a static detection for this type of exploit as the script engine in the game allows direct memory access and the attacker/malware author could easily obfuscate/change the script to achieve the same result rendering the detection useless.
И ещё:
In the end, we decided that we will not scan Warcraft III maps due to lack of prevalence. After all, the game is already old (released about 2002) and only lives due to community of people. Moreover, the MPQ format itself is dying, Blizzard decided to move to CASC storage format for their games in 2014. So nowadays, Warcraft III is the only game that is being played.
xZUKMANx, да, она уже давно решена. Но я пока не знаю, стоит ли выкладывать текущую версию или нужно добавить ещё несколько возможностей (тени, пост-эффекты).
Пока реализовано следующее, осталось реализовать то, что помечено восклицательными знаками:
v0.1.1a
! 1.27a patch support;
* Direct3D9 support;
! Windows XP support;
! HDR Rendering;
! Post Process Effects: ;
* Блокировка функции CtrlGetFromPoint, если игра на паузе;
* Показ GUI только после завершения загрузки карты;
* Исправлена проблема, связанная с тем, что ширина и высота текстуры были перепутаны;
* Исправлен слишком большой FoV камеры при использовании Windescreen Fix;
* Fixed an issue where it was not possible to launch the application on the first try;
! Исправлены вылеты во время загрузки карты;
* Updated FreeType to 2.7;
* Launching more than one instance of war3.exe;
* RenderEdge.dll optimization;
* Fixed safety issues;
* Updated project logo and app icon;
* Improved debug log.
quq_CCCP, всё работает, я проверял. Просто вставь пример со сменой урона из карты BaHeK, в scope Test. Steal nerves, нужно скачать последнюю версию pJass, а в редакторе отключить cJass.
Заработало, просто отредактировал typecast'ы и добавил ещё одну переменную для типкаста массива. Я и до этого пробовал переделать функции-типкасты, только забыл о массиве. Скачать (vJass)
BaHeK, работает. Попробовал пересохранить карту, добавив //# +nosemanticerror перед некоторыми функциями, в итоге карта не запускается, просто выкидывает в главное меню.
Может ты используешь другой pJass компилятор? Можешь скинуть свой? Хотя у меня всё хорошо работало с этим кодом: www.hiveworkshop.com/threads/accessing-memory-from-the-script-it...
karaulov, да, некоторые баги ещё остались (те же чёрные полосы на ландшафте). Тени на камне отображаются, это очень хорошо видно, когда над ним пролетает феникс. "Кусок тряпки" - это портрет выделенного юнита, который просто рисуется не в том месте) Просто я пока не понял, как определить, что рендерится именно портрет.
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» WarCraft 3 / Запуск двух редакторов
» WarCraft 3 / Ошибка при конвертации
Ред. ENAleksey
» WarCraft 3 / Там 1.27b вышел
Ред. ENAleksey
» WarCraft 3 / Проблема с освещением
Ред. ENAleksey
» WarCraft 3 / Проблема с освещением
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Screen Space Ambient Occlusion
Интерфейс скрыт для наглядности.
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Screen Space Ambient Occlusion
» WarCraft 3 / Проверка направления взгляда.
Простая работа с векторами, а функции для получения координат юнита и нападения взгляда, думаю, и так знаете.
Ред. ENAleksey
» WarCraft 3 / mpq
Далее открываешь архив War3Patch.mpq в редакторе mpq (например Ladik's MPQ Editor) и используешь файл в качестве listfile.
Модель будет лежать по этому пути: Units\Creeps\HeroTinker\HeroTinker.mdx
Ред. ENAleksey
» WarCraft 3 / Хак на память Warcraft3
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
Ред. ENAleksey
» WarCraft 3 / Проблема с важной программой
Ред. ENAleksey
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Ред. ENAleksey
» WarCraft 3 / Хак на память Warcraft3
Ред. ENAleksey
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Проблемы с новым Retrun Bug
» WarCraft 3 / Проблемы с новым Retrun Bug
» WarCraft 3 / Проблемы с новым Retrun Bug
» WarCraft 3 / Проблемы с новым Retrun Bug
Steal nerves, нужно скачать последнюю версию pJass, а в редакторе отключить cJass.
Ред. ENAleksey
» WarCraft 3 / Проблемы с новым Retrun Bug
Скачать (vJass)
Ред. ENAleksey
» WarCraft 3 / Проблемы с новым Retrun Bug
Может ты используешь другой pJass компилятор? Можешь скинуть свой? Хотя у меня всё хорошо работало с этим кодом: www.hiveworkshop.com/threads/accessing-memory-from-the-script-it...
» RenderEdge / [RenderEdge] Экспериментальная версия