Понедельник, 25 Ноября 2024, 22:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Шифрование изображений и их дешифрование.
Abel399Дата: Воскресенье, 19 Мая 2013, 12:10 | Сообщение # 1
Surpass your limits. Right now.
Сейчас нет на сайте
Всем привет)

Используемая версия Game Maker: 8 Pro

Столкнулся с проблемой с шифрованием изображений в Game Maker (изображения лежат в директории игры\cache\....). Зачем мне это надо? Да, у меня игра будет не супер-пупер нагибатель WoW, WF, CS и тому подобных, но все-таки хотелось бы защитить некоторые ресурсы. Как картинка к нам попадает? Во-первых, это скин игрока -> игрок его сам нарисовал через мой специальный софт и потом это загрузил на сайт. Так же, этот софт зашифровал картинку и сохранил в Username.|какой-то там формат|. Во-вторых, когда другой игрок будет играть с этим игроком (который загрузил себе свой нестандартный скин), то он скачает его себе. В-третьих, когда игрок со своим скином и другой игрок будут играть вместе, то другой игрок загрузит себе чужой скин, расшифрует его и назначит его как скин игрока со скином.

В общем, вопросы:
1. Как зашифровать изображение, а потом его загрузить, расшифровать и использовать? (Пробовал открывать через file_bin_open(); и потом шифровать при помощи xor, но видимо я его не до-конца понял, потому что расшифрованное изображение было просто ужасным.)
2. Если можно, то предоставьте наглядный пример или алгоритм.
3. Всем спасибо, буду надеяться на помощь и понимание. happy


Ninja Slayer - 2D Physics Puzzle [cancelled]
GameMixДата: Воскресенье, 19 Мая 2013, 16:53 | Сообщение # 2
старожил
Сейчас нет на сайте
Abel399, урок от LunarPixel, который поможет тебе. Если нужно, то программно изменяй (шифруй) числа в файле и потом при загрузке обратно заменяй их на исходные.


Steel Standoff - 2D аркада.
Мои статьи
YellowAfterlifeДата: Воскресенье, 19 Мая 2013, 19:33 | Сообщение # 3
Сейчас нет на сайте
Цитата (GameMix)
Abel399, урок от LunarPixel, который поможет тебе.

Стоит заметить что чтение файлов (а так же попиксельное рисование) в GameMaker проходит слишком медленно для того чтобы это можно было хоть как-то использовать для средних и крупных изображений.
Реалистичными для выполнения в самом ГМ (без внешних длл) методами являются шифрование заголовка файла (без знания размерности и файлового формата пользователь вряд ли что-то сделает) и "перемешивание" содержимого изображений (текущие версии GMObfuscator предоставляют такой функционал).
Второй вариант не дает "настоящего" шифрования, но из перемешанной пиксельной каши восстановить исходное изображение пользователь, скорее всего, не сможет.

Еще одним интересным вариантом было бы использование стандартного формата .gmspr (что может быть быстро загружен через sprite_add_sprite), но возможности сохранять его из игры нет, и никакой документации по формату мне пока находить не доводилось.


Abel399Дата: Четверг, 23 Мая 2013, 08:46 | Сообщение # 4
Surpass your limits. Right now.
Сейчас нет на сайте
GameMix, Все то, что было нужно) Теперь можно только разложить на байты и ксорить цвета, а потом их обратно возвращать. Казалось бы просто, но в то же время гениально)
YellowAfterlife, Благодарю за предложенные варианты шифрования. Учту)
Всем большое спасибо. happy

Добавлено (20.05.2013, 14:59)
---------------------------------------------
GameMix, Извиняюсь за назойливость, но можно ли как-нибудь каждый пиксель из файла объединить в картинку/спрайт, который потом можно использовать как обычную картинку, а не отрисовывать все время каждый пиксель? Если да, то каким способом? Просто дело в том, что мне придется этот спрайт еще и поворачивать на определенный угол, а высчитывать каждый пиксель, во-первых, часто очень проблематично. Во-вторых, это очень большая нагрузка на Game Maker и оптимизация потом будет очень сложной в выполнении.

Добавлено (20.05.2013, 16:28)
---------------------------------------------
Ого.. Не ожидал... Я вычисляя каждый пиксель, разбил его по одному символу, получил код asci и каждый проксорил. В результате на изображение размером в 64х64 пикселей получилось 1Гб пространства на диске... Хотя не смотря на то, что это была длительная операция, изображение было успешно расшифровано.... Ну, а так вопрос тот же - Как полученное изображение сделать как спрайт и использовать его, зная, что на практике придется оперировать несколькими изображениями.

Добавлено (23.05.2013, 08:46)
---------------------------------------------
Вопрос до сих пор актуален. Точнее он перерос в другой:
1. Можно ли как-нибудь каждый пиксель из файла объединить в картинку/спрайт, который потом можно использовать как обычную картинку, а не отрисовывать все время каждый пиксель?
2. Если да, то каким способом?
3. Благодарю за внимание.


Ninja Slayer - 2D Physics Puzzle [cancelled]

Сообщение отредактировал Abel399 - Понедельник, 20 Мая 2013, 14:29
cosferapsДата: Четверг, 23 Мая 2013, 11:26 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата
Еще одним интересным вариантом было бы использование стандартного формата .gmspr (что может быть быстро загружен через sprite_add_sprite), но возможности сохранять его из игры нет, и никакой документации по формату мне пока находить не доводилось.

В редактировании файла можно выбрать "сохранить как png", не упускай этого момента )))


GMS MC
GameMixДата: Четверг, 23 Мая 2013, 11:46 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата (Abel399)
Можно ли как-нибудь каждый пиксель из файла объединить в картинку/спрайт, который потом можно использовать как обычную картинку, а не отрисовывать все время каждый пиксель?

Да, можно.
К каком-либо моменте игры один раз проделываешь алгоритм:
1) Нарисовать каждый пиксель, образуя целую картинку.
2) Создать спрайт из получившейся картинки (sprite_create_from_screen()), записать в переменную его индекс.
3) Использовать при необходимости готовый спрайт.


Steel Standoff - 2D аркада.
Мои статьи
Abel399Дата: Четверг, 23 Мая 2013, 12:55 | Сообщение # 7
Surpass your limits. Right now.
Сейчас нет на сайте
Ну да) Я так тоже думал сделать... Но игроку придется видеть каждый спрайт... даже не знаю как это скажется на его психике) Ну раз уж это единственный вариант, то наверное выбирать не приходится. Спасибо)

Ninja Slayer - 2D Physics Puzzle [cancelled]
GameMixДата: Четверг, 23 Мая 2013, 15:50 | Сообщение # 8
старожил
Сейчас нет на сайте
Abel399, не придётся. Действие произойдёт всего за 1 шаг. 1 - секунда - 30 шагов (по умолчанию). Не проверял, но, наверное, пользователь не заметит появления этой картинки.

Steel Standoff - 2D аркада.
Мои статьи
Abel399Дата: Пятница, 24 Мая 2013, 04:01 | Сообщение # 9
Surpass your limits. Right now.
Сейчас нет на сайте
Ну тогда... Ладно ты меня уговорил) Я во всех своих играх выставляю 60 шагов (не знаю.. приелось как-то). Так что думаю у игрока психика не пострадает)
Благодарю от всей души happy


Ninja Slayer - 2D Physics Puzzle [cancelled]
VinchensooДата: Пятница, 24 Мая 2013, 20:13 | Сообщение # 10
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата (GameMix)
Abel399, урок от LunarPixel, который поможет тебе. Если нужно, то программно изменяй (шифруй) числа в файле и потом при загрузке обратно заменяй их на исходные.

Ломается левой пяткой.
Писать шифрование на самом ГМ- глупо и небюджетно.
Лучше написать dll на C\C++ или использовать готовые решения.


GameMixДата: Суббота, 25 Мая 2013, 04:02 | Сообщение # 11
старожил
Сейчас нет на сайте
Цитата (Vinchensoo)
Лучше написать dll на C\C++ или использовать готовые решения.

Vinchensoo, согласен, что у Game Maker слабая производительность. Но что ты можешь предложить сделать с изображением dll'кой, чего не может сделать GM? Если, конечно, ты имеешь в виду не размещение шифрованной информации внутри dll. Хотя тоже DLL декомпилировать можно.


Steel Standoff - 2D аркада.
Мои статьи
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг