Интересует, по какому принципу производится удаления\восстановления поврежденных частей карты

Принятый ответ

Чтобы понимать процесс восстановления карты - нужно понимать процесс оптимизации карты
Вот процесс оптимизации/защиты карты:

Файлы редактора

В MPQ архиве карты есть файлы которые используются только редактором и при сохранении карты редактор записывает код из некоторых файлов в war3map.j
Файлы, которые удаляются оптимизаторами:
  1. war3mapUnits.doo (расположение созданных в WE юнитов на карте)
  2. war3map.wtg (код из редактора триггеров)
  3. war3map.wct (код из редактора триггеров)
  4. war3map.imp (информация о импорте в карте, редактору он нужен чтобы работать с импортированными файлами, варкрафт war3map.imp не использует)

Оптимизация скрипта

Скрипт карты оптимизируется так:
  1. Удаляются комментарии в скрипте и ненужные пробелы
2. Сокращаются названия функций и переменных
До:
function MyFunction takes nothing returns integer
	local integer MyInteger = 2+2
	return MyInteger
endfunction
После:
function a takes nothing returns integer
	local integer A = 2+2
	return A
endfunction
  1. Все действия функций инициализации объектов карты переносятся в функцию main

Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных

Архив карты

Это способы "защиты" карты, которые не относятся к оптимизации:
  1. Удаление файла (listfile), он содержит названия файлов в карте ((listfile) варкрафтом не используется)
  2. Манипуляции с заголовком архива карты

Оптимизация объектов

Объекты в данном случае - это предметы, юниты, способности и т.д
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
8
5 лет назад
Отредактирован pAxsIs
0
Я, конечно, не знаю как он точно устроен, но могу предположить, что работает по принципу.
Защищенная карта, это "скомпилированная карта", которая готова только для запуска из игры.
А "депротектор" он же "декомпилятор", получает код и объекты которые остались после компиляции, а другие объекты, которых не хватает, восстанавливает из стандартного набора.
6
18
5 лет назад
Отредактирован Hodor
6
Чтобы понимать процесс восстановления карты - нужно понимать процесс оптимизации карты
Вот процесс оптимизации/защиты карты:

Файлы редактора

В MPQ архиве карты есть файлы которые используются только редактором и при сохранении карты редактор записывает код из некоторых файлов в war3map.j
Файлы, которые удаляются оптимизаторами:
  1. war3mapUnits.doo (расположение созданных в WE юнитов на карте)
  2. war3map.wtg (код из редактора триггеров)
  3. war3map.wct (код из редактора триггеров)
  4. war3map.imp (информация о импорте в карте, редактору он нужен чтобы работать с импортированными файлами, варкрафт war3map.imp не использует)

Оптимизация скрипта

Скрипт карты оптимизируется так:
  1. Удаляются комментарии в скрипте и ненужные пробелы
2. Сокращаются названия функций и переменных
До:
function MyFunction takes nothing returns integer
	local integer MyInteger = 2+2
	return MyInteger
endfunction
После:
function a takes nothing returns integer
	local integer A = 2+2
	return A
endfunction
  1. Все действия функций инициализации объектов карты переносятся в функцию main

Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных

Архив карты

Это способы "защиты" карты, которые не относятся к оптимизации:
  1. Удаление файла (listfile), он содержит названия файлов в карте ((listfile) варкрафтом не используется)
  2. Манипуляции с заголовком архива карты

Оптимизация объектов

Объекты в данном случае - это предметы, юниты, способности и т.д
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
Принятый ответ
0
32
5 лет назад
0
Восстановление - ну как создание файлов пустышек вместо файлов редактора, с минимум инфо и деслк оптимизацией если она была.
Код до состояния исходников восстановить практически невозможно, кроме явно гуишных триггеров. Разумеется коментарии и описание работы систем вы тоже чудесным образом не восстановите изучая код можно сделать выводы о наличии тех или иных распространенных наработок. Кароче все делается руками и требует наличие немалого опыта.
0
8
5 лет назад
0
Не знаю, чем не устроило тех, кто мне влепил "-", но прикол в том, что такой принцип у всего подобного. Возьмите игры, которые собирают после написания кода с автоматической оптимизацией (что и делает ваш протектор). Иногда для защиты игр (карт варкрафта) возможно применение технологии чтения кода с помощью шифрования, тем самым весь написанный код шифруется, а чтение происходит через отдельную программу, которая дешифрует отдельные куски кода, которые уже скомпилированы для чтения их (это уже более сложные механизмы защиты, и вряд ли они существуют для Warcraft 3). Однако подобное распространено для всего, что имеет защиту в сфере IT, поэтому и написал, что депротектор работает по той же схеме, если не вдаваться в детали его работы.
Почитайте: Декомпиляция
0
32
5 лет назад
0
pAxsIs, эмм а ниче что Jass скриптовый язык, который ни компилируется а интерпретируется? Никакой компиляции в картах варкравта нет, правильно влепили. Скрипт карты не шифруется и может быть только War3map.j, хоть в мпк можно каждому файлу в отдельности указать тип сжатия и шифрования, это не может работать когда дело доходит до совместимости, т.к игра использует один единственный механизм, заложенный разработчиками а не ваш, и прочитать вашу зашифрованную карту никак не сможет.
0
8
5 лет назад
Отредактирован pAxsIs
0
Вы хорошо разбираетесь в тонкостях world editor'a, я не буду с вами спорить в этом предмете, я не претендую на того, кто все знает тут, но будьте повнимательнее пожалуйста

quq_CCCP:
pAxsIs, эмм а ниче что Jass скриптовый язык, который ни компилируется а интерпретируется?
Я и не писал, что он компилируется.
pAxsIs:
с автоматической оптимизацией (что и делает ваш протектор).

quq_CCCP:
Скрипт карты не шифруется
pAxsIs:
Иногда для защиты игр (карт варкрафта) возможно ... шифрование, ... это уже более сложные механизмы защиты, и вряд ли они существуют для Warcraft 3.

Попросили описать принцип работы программ
типа "Дептротекторов"
Я описал принцип, без подробностей реализации.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.