ENAleksey #1 - 1 неделю назад 0

» WarCraft 3 / Столкновение с краем карты

Darknessay, GetCameraBoundMaxX, то же самое и для Y и минимальных границ.
Или GetWorldBounds, возвращает rect.
ENAleksey #2 - 1 неделю назад (отредактировано ) 0
ENAleksey #3 - 2 недели назад 0

» WarCraft 3 / Как убрать "черноту" на большой высоте

darkowlom, а мне попадалось ;) Да, с помощью Memory Hack это сделать не сложно, но сейчас проверить не смогу, проблемы с компьютером
ENAleksey #4 - 3 недели назад 0

» RenderEdge / [RenderEdge] Экспериментальная версия

Каждая тень, по хорошему, должна иметь градиент
Такого эффекта можно добиться при помощи SSAO, я сделал так, чтобы затенение объектов у основания было только в тени.
DemonoiD:
тени для декораций будут просчитываться заранее
Так и сделаю, ещё думаю над тем, чтобы модифицировать .MDX формат моделей и добавить дополнительные параметры: флаги для запекания теней, пути к normal map, specular map, ambient occlusion map, emissive map. Кстати, реализовал простой PBS Specular, далее, может быть, добавлю Fresnel и отражения.GF RaiseD:
как дела с камерой?
Над этим я пока даже не работал, и, скорее всего, не буду. Если сделать так, чтобы объекты не исчезали при их выходе за пределы главного фруструма камеры, то произойдет падение производительности, хотя, я ещё подумаю над добавлением occlusion culling'а.
ENAleksey #5 - 3 недели назад (отредактировано ) 3

» RenderEdge / [RenderEdge] Экспериментальная версия

Теперь я понял, что не так с освещением и почему не работают стандартные шейдеры. Всё дело в том, что в варкрафте рассчитываются только нормали, а для получения качественного bump и parallax mapping'а нужно проводить вычисления в tangent space, для этого нужны тангенты и бинормали.
Я уже давно пробовал это реализовать, но была одна проблема - сильная потеря производительности, если в кадре находится очень много объектов. Метод, который находится по ссылке выше, позволяет производить расчёт касательного пространства прямо в шейдере, это значительно быстрее, но и менее корректно.
ENAleksey #6 - 3 недели назад (отредактировано ) 13
ENAleksey #7 - 4 недели назад 0

» WarCraft 3 / Возможность кликать и ходить под декорацией

Lotus101, попробуй запустить на какой-то из версии патча 1.24.
ENAleksey #8 - 4 недели назад (отредактировано ) 0
ENAleksey #9 - 1 месяц назад (отредактировано ) 0

» RenderEdge / [RenderEdge] Основная версия

DemonoiD, нет, это их проект, для начала нужно спросить разрешение у них самих. Они работают над своей версией библиотеки и я им иногда помогаю. Как только я закончу работу над RenderEdge, выложу исходники в открытый доступ, кто захочет, сможет модифицировать код и использовать у себя в проектах.
ENAleksey #10 - 1 месяц назад (отредактировано ) 3

» RenderEdge / [RenderEdge] Основная версия

хотел бы я глянуть как можно так просто моделькиами сделать)
Команда Warcraft 3 Reborn так и делала:
как понять, какой игрок нажал на клавишу?
Данные, возвращаемые функциями GetTriggerKey, TriggerRegisterKeyEvent, будут действовать для каждого игрока по отдельности. С их помощью не получится узнать, какую кнопку нажал другой игрок, но можно отправлять данные на сервер или просто синхронизировать, например, с помощью юнитов (при нажатии клавиши создаём юнита с рав-кодом, зависящим от нажатой клавиши). Если вы имели ввиду, как сделать так, чтобы функции срабатывали только у определённого игрока, то просто сравниваем с GetLocalPlayer().
прикреплены файлы
ENAleksey #11 - 1 месяц назад (отредактировано ) 13

» RenderEdge / [RenderEdge] Основная версия

Были бы тени, немного "мыльца" и нормальное небо, я бы не узнал в нем war3
Так? :)
Сглаживание плохо работает с хроматическими аберрациями, вот скриншоты без них:
А вот туман:
Могли бы вы сделать отдельную версию с минимальным набором функционала на основе РБ и инжекта в саму карту, чтобы все работало без дополнительных ресурсов?
Можно сделать, но только без графических фишек, в том числе без отрисовки нового интерфейса, так как хук на direct3d нужно ставить при инициализации игры, а с помощью РБ библиотеку можно подгрузить только при инициализации карты. Я уже выкладывал карту на РБ, которая внедряла мою библиотеку с widescreen fix'ом:
» раскрыть
awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.

Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
прикреплены файлы
ENAleksey #12 - 1 месяц назад (отредактировано ) 5

» RenderEdge / [RenderEdge] Основная версия

Vitalik8, в данный момент работаю только над экспериментальной версией, добавляю пост-эффекты, дорабатываю шейдер освещения. Последняя неделя выдалась крайне продуктивной:
  • сегодня реализовал туман (линейный и два вида экспоненциального (в варкрафте они не работали корректно), завтра собираю добавить ещё один способ расчёта тумана, основного на высоте) и Туман Войны (позже ещё доработаю);
  • вчера реализовал сглаживание (SMAA) и Film Grain;
  • в начале недели добавил поддержку точечных источников света, теперь и они используют попиксельное освещение;
  • ранее улучшил качество теней, реализовал HDR Rendering, улучшил качество SSAO, добавил Lens Flares, LUT Color Correction и поддержку sRGB.
Нужно ещё много всего реализовать и улучшить то, что уже есть. Самое главное - оптимизировать способ отлова информации о моделях, которую я использую для рендеринга теней, так как именно этот этап самый прожорливый во всём pipeline'е.
Скоро выложу экспериментальную версию, мне понадобятся добровольцы с ПК различной мощности для тестирования мода на производительность.
А основную версию, думаю, не выложу пока не исправлю вылеты при запуске карт, которые используют функции отрисовки текста из RenderEdge. К этому времени, может быть, перенесу GUI систему на шейдеры.
ENAleksey #13 - 2 месяца назад 0

» WarCraft 3 / Запуск двух редакторов

Можно сделать приложение, которое сможет запускать неограниченное количество worldedit.exe, но так ли это необходимо?
ENAleksey #14 - 2 месяца назад 0

» WarCraft 3 / Ошибка при конвертации

Чем конвертируешь? Вот NeoDex, с ним не должно быть проблем при экспорте в mdx.
ENAleksey #15 - 2 месяца назад (отредактировано ) 1

» WarCraft 3 / Там 1.27b вышел

Что это?
That button simply pops up 2 error messages at the bottom of the screen about missing files.
Based on the button name VALIDATE_MAP_TRIGGERS, looks like its going to be some syntax checker? It's totally bugged now anyways!
прикреплены файлы
ENAleksey #16 - 3 месяца назад (отредактировано ) 1

» WarCraft 3 / Проблема с освещением

Изменить глобальное освещение с помощью данной функции:
call SetDayNightModels("...","...")
Хотя вряд ли поможет избавиться от артефактов.
ENAleksey #17 - 3 месяца назад (отредактировано ) 1

» WarCraft 3 / Проблема с освещением

Это происходит из-за per-vertex освещения. От подобных визуальных артефактов очень сложно избавиться, но можно немного замаскировать их, подкорректировав модели освещения (например, немного уменьшить интенсивность diffuse освещения и увеличить ambient):
ENAleksey #18 - 3 месяца назад (отредактировано ) 9

» RenderEdge / [RenderEdge] Экспериментальная версия

Скажи, не занимался ли ты еще текстурами и их разрешением? Я прост на лесенку смотрю, и плакать хочется :(
Нет, этим занимается команда Warcraft 3 Reborn, я только иногда помогаю им кодом.
alexprey:
Последний скрин заставляет плакать... свечение у меча пропало
Дело в том, что я пока не реализовал нормальный фильтр моделей на сцене, которые сохраняю для дальнейшего рендеринга в карту теней и для обычной отрисовки на сцену, используя свой шейдер. Свечение героев не должно перехватываться, я пока сделал фильтр на прозрачность, но это глупо, так как таким образом можно пропустить другие полупрозрачные модели. Но у меня пока вообще нет идей, как это сделать :(
» Пока делаю так
if (currentRenderStage == STAGE_UNIT)
{
	DWORD fogenable, zwrite, destblend;
	m_pDevice->GetRenderState(D3DRS_FOGENABLE, &fogenable);
	m_pDevice->GetRenderState(D3DRS_ZWRITEENABLE, &zwrite);
	m_pDevice->GetRenderState(D3DRS_DESTBLEND, &destblend);

	if ((fogenable != 0 && zwrite != 0 && destblend != 2) && stride == 32 && type == 4 && FVF == 274 && ((DWORD)state == 256 || (DWORD)state == 17 || (DWORD)state == 16 || isComplexMesh(state, numVertices, primCount)))
	{
		if (curUnits < maxUnits)
			meshesUnits[curUnits].GetMesh(m_pDevice, g_pStreamData9, g_pIndexData9, currentTexture, type, baseVertexIndex, minIndex, numVertices, startIndex, primCount);
		curUnits++;

		return D3D_OK;
	}
}
некоторые объекты двоятся
Объекты двоятся из-за того, что я пока добавил самую простую реализацию SSAO, но и с помощью неё уже можно добиться неплохих результатов (об этом чуть ниже).
да и в целом картинка стала блеклой и мыльной какой-то :(
Для достижения наилучшего результата нужно подстраивать значения переменных, используемых в пост-эффектах (тонирование, блюм и т.д.), отдельно для каждой сцены.

Screen Space Ambient Occlusion

На примере карты Melissa Tale About Taiga's Adventure.
Интерфейс скрыт для наглядности.
Без текстур:
С текстурами:
На скрине карта окружения не очень подходит для этой сцены, я использовал старую, так как лень было рендерить сцену в новую. Дальше хочу сделать автоматическую генерацию нескольких кубических карт, расставленных на некотором расстоянии друг от друга по всей карте, при запуске. Более того, уже сейчас можно динамически рисовать сцену в кубическую текстуру, и использовать её для динамических отражений.
прикреплены файлы
ENAleksey #19 - 3 месяца назад (отредактировано ) 16
ENAleksey #20 - 3 месяца назад 1

» WarCraft 3 / Проверка направления взгляда.

Скалярное произведение векторов.
Простая работа с векторами, а функции для получения координат юнита и нападения взгляда, думаю, и так знаете.
ENAleksey #21 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / mpq

Скачиваешь этот файл: xgm.guru/files/100/179980/comments/336580/War3Patch.txt
Далее открываешь архив War3Patch.mpq в редакторе mpq (например Ladik's MPQ Editor) и используешь файл в качестве listfile.
Модель будет лежать по этому пути: Units\Creeps\HeroTinker\HeroTinker.mdx
прикреплены файлы
ENAleksey #22 - 3 месяца назад (отредактировано ) 1

» WarCraft 3 / Хак на память Warcraft3

awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.

Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
прикреплены файлы
ENAleksey #23 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Проблема с важной программой

У меня всё устанавливается. Переходишь по ссылке, нажимаешь на большую зелёную кнопку Free Download, устанавливаешь, регистрируешь продукт.
ENAleksey #24 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Хак на память Warcraft3

Вот, что ответили 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.
ENAleksey #25 - 3 месяца назад 2

» WarCraft 3 / Хак на память Warcraft3

Интересно было бы почитать как эта штука работает
Только в новой версии добавили возможность разблокировать память на запись. И на гитхабе есть описания к функциям.
ENAleksey #26 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Хак на память Warcraft3

darkowlom, передачу данных можно реализовать с помощью экспортируемых функций в dll.
__declspec(dllexport) unsigned int __stdcall SendValueToDll(int key, int value)
{
	// Сохраняем полученные значения
	return true;
}
И в карте:
function SendValueToDll takes integer key, integer value returns integer
    local integer hHandle = GetModuleProcAddress("MyDll.dll", "SendValueToDll")
    if hHandle != 0 then 
        return CallStdcallWith2Args(hHandle, key, value)
    endif 
    return 0
endfunction
ENAleksey #27 - 3 месяца назад (отредактировано ) 9

» RenderEdge / [RenderEdge] Основная версия

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.
ENAleksey #28 - 3 месяца назад 0

» WarCraft 3 / Хак на память Warcraft3

l_Avenger_l, Кет, ошибок быть не должно, ни одной. Просто выключи cJass.
ENAleksey #29 - 3 месяца назад 0

» WarCraft 3 / Проблемы с новым Retrun Bug

quq_CCCP, может создашь ресурс с переводом темы с хайва, чтобы не нужно было искать всю информацию на других сайтах?
ENAleksey #30 - 3 месяца назад 0

» WarCraft 3 / Проблемы с новым Retrun Bug

У меня всё работает, просто прописываю эти нативки в коде самой карты, вот карта, здесь и урон изменяется.
Чтобы typecast работал в JNGP нужно создать аж 3 переменных!
Какие три? Я только две использую:
integer array l__A
integer A
прикреплены файлы
ENAleksey #31 - 3 месяца назад 0

» WarCraft 3 / Проблемы с новым Retrun Bug

BaHeK, всё работает, но не сохраняется.
ENAleksey #32 - 3 месяца назад 0

» WarCraft 3 / Проблемы с новым Retrun Bug

quq_CCCP, всё работает, я проверял. Просто вставь пример со сменой урона из карты BaHeK, в scope Test.
Steal nerves, нужно скачать последнюю версию pJass, а в редакторе отключить cJass.
ENAleksey #33 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Проблемы с новым Retrun Bug

Заработало, просто отредактировал typecast'ы и добавил ещё одну переменную для типкаста массива. Я и до этого пробовал переделать функции-типкасты, только забыл о массиве.
Скачать (vJass)
прикреплены файлы
ENAleksey #34 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Проблемы с новым Retrun Bug

BaHeK, работает. Попробовал пересохранить карту, добавив //# +nosemanticerror перед некоторыми функциями, в итоге карта не запускается, просто выкидывает в главное меню.
Может ты используешь другой pJass компилятор? Можешь скинуть свой? Хотя у меня всё хорошо работало с этим кодом: www.hiveworkshop.com/threads/accessing-memory-from-the-script-it...

Хотя не надо, уже нашёл. Тоже не работает.

Кажется, начинаю догадываться, в чём проблема. Буду завтра пробовать.
ENAleksey #35 - 3 месяца назад 1

» RenderEdge / [RenderEdge] Экспериментальная версия

karaulov, да, некоторые баги ещё остались (те же чёрные полосы на ландшафте). Тени на камне отображаются, это очень хорошо видно, когда над ним пролетает феникс. "Кусок тряпки" - это портрет выделенного юнита, который просто рисуется не в том месте) Просто я пока не понял, как определить, что рендерится именно портрет.
ENAleksey #36 - 3 месяца назад (отредактировано ) 12

» RenderEdge / [RenderEdge] Экспериментальная версия

DEMO

tobyfat50's Asian Garden
Тени, конечно, не удалось показать во всей красе, позже постараюсь выложить ещё несколько скриншотов, а потом и версию для скачивания.

Здесь можно получше разглядеть тени

прикреплены файлы
ENAleksey #37 - 3 месяца назад (отредактировано ) 6

» RenderEdge / [RenderEdge] Экспериментальная версия

karaulov, выложу, как только выпущу версию 1.0, а для этого мне нужно реализовать все пункты, которые я указал для основой версии, кроме карт нормалей.
А по поводу вышеописанной проблемы мне уже объяснили, что я не так делал, завтра буду исправлять.

Готово!
ENAleksey #38 - 4 месяца назад (отредактировано ) 0

» Пещера Платона / Внутриигровая камера и управление (опрос)

Оказалось там не все функции для работы с входными данными присутствуют, нужно будет писать свою библиотеку, либо ждать новую версию библиотеки Александра.
ENAleksey #39 - 4 месяца назад (отредактировано ) 0

» Пещера Платона / Внутриигровая камера и управление (опрос)

Что насчёт камеры от третьего лица и вращения камеры мышкой (можно сделать постоянное вращение, либо только при зажатой кнопке мыши) + перемещение на WASD? Очень хотелось бы увидеть именно такое управление. Всё это можно реализовать с помощью Return Bug.
Все нужные функции реализованы здесь: xgm.guru/p/wc3/179146#lastpost
ENAleksey #40 - 4 месяца назад (отредактировано ) 9

» RenderEdge / [RenderEdge] Экспериментальная версия

alexprey, уже учитывается, он сам на себя тоже может откидывать тени.
Вот немного подправил перехват объектов и тени (теперь точно мягкие):
Но забыл восстановить стандартный цвет источника света, можно заметить по различию освещения скелета дракона
Подправил освещение, но всё-ещё не учитываются точечные источники света.
Но на данный момент существует одна очень серьёзная проблема, не позволяющая переносить тени в основную версию:
прикреплены файлы
ENAleksey #41 - 4 месяца назад (отредактировано ) 1

» Пещера Платона / Главная страница

Скрины чем-то зацепили (наверно проникся скрином бескрайнего моря :D), только небо портит картину. Советую попробовать вот это.
Или поискать в сети текстуры скайбоксов, например, эта неплохо бы смотрелась: www.keithlantz.net/wp-content/uploads/2011/10/skybox_texture.jpg
ENAleksey #42 - 4 месяца назад (отредактировано ) 7

» RenderEdge / [RenderEdge] Экспериментальная версия

Кристофер, конечно регулируется.
Bornikkeny:
С glow фонарем что-то не то... :D
Просто не восстановил прозрачность перед рендерингом, потом исправлю.
так получается на стандартных моделях не будет работать?
Сейчас уже ничего самостоятельно прописывать не надо, просто расставляете любые декорации и юниты, даже с нестандартными моделями, на сцене и запускаете игру, все эти модели будут откидывать тени.
ENAleksey #43 - 4 месяца назад 2

» WarCraft 3 / Псс, нужно немного мемхака?

Ого, можно даже динамически модель юнита менять?
ENAleksey #44 - 4 месяца назад 0

» WarCraft 3 / Псс, нужно немного мемхака?

Здорово! Только запости ещё и сюда.
ENAleksey #46 - 4 месяца назад 0

» WarCraft 3 / Проблема с важной программой

Используй GMax, тот же самый 3ds max, только бесплатный.
ENAleksey #47 - 4 месяца назад 9

» RenderEdge / [RenderEdge] Экспериментальная версия

Shadow Mapping Test

Не обращайте внимание на FPS, он такой низкий только при записи, на самом деле он не отпускается ниже 60.
ENAleksey #48 - 4 месяца назад (отредактировано ) 4

» RenderEdge / [RenderEdge] Основная версия

16GB, 60 fps. Но это пока без улучшения графики, хотя, если постараться, то можно и после добавления шейдеров оптимизировать так, чтобы fps не уменьшился.
Простите, удалил, так как не туда запостил
ENAleksey #49 - 4 месяца назад (отредактировано ) 11

» RenderEdge / [RenderEdge] Основная версия

Кстати, вот пример того, как выглядит моя старая карта после переноса на RenderEdge (пока без графических улучшений и пост-эффектов) + демонстрация одной из предстоящих фичей:
прикреплены файлы
ENAleksey #50 - 4 месяца назад (отредактировано ) 2

» WarCraft 3 / Программы для просмотров реплеев Вар3 (w3g)

Bornikkeny, таких программ довольно много, лучше самостоятельно погуглить.
Вот что советуют на iCCup: Replay Seeker + Simple Camera