Иллюстрированный самоучитель по созданию Flash-игр

Защита от копирования

Исходный файл: Copyprotection.fla.

Итак, как помешать кому-либо украсть вашу игру? Никак. Но вы можете помешать ему проигрывать игру с другого сайта, таким образом, украденная игра станет бесполезной.

Ключ к такой защите – свойство _url, которое возвращает строчку, содержащую весь путь к вашему swf-файлу. Если ролик располагается по адресу http://www.ktrnk.org/my.swf. именно эту строчку вернет свойство _url.

После того как вы ее получили, можете разбить ее на части и выделить имя основного домена. Например, в вышеприведенном адресе основной домен – ktrnk.org. Просмотрите следующий фрагмент программы Copyprotection l.fla:

// Показываем весь путь.
urlText = "This game is being loaded from: " + _url;
// Получаем строку, находящуюся между символами "://" и следующим символом "/".
c1 = _url.indexOf("://") + 3;
c2 = _url.indexOf("/", c1);
domain = _url.sunstring(c1, c2);
// Удаляем все символы перед первой точкой.
c3 = domain.lasrIndexOf(".") - 1;
c4 = domain.lastlndexOf(".", c3) + 1;
domain = domain.substring(c4, domain.length);
// Отображаем основной домен.
domainText = "The root domain is: " + domain;

Полученное имя основного домена вы можете сравнить с доменом, на котором находится ваш сайт. Основной домен, используемый в пути к вашей игре, для разных пользователей может выглядеть по-разному. Например, адреса http://ktrnk.org и http://www.ktrnk.org относятся к одной страничке, но свойство _url для них будет различным. Также в адресах некоторых сайтов перед доменом могут быть указаны не только символы типа "www.", например, www.games.ktrnk.org.

Если основной домен не соответствует тому, который ожидает программа, значит, игру украли. В этом случае вместо перехода к ролику игры программа может перейти к другому кадру, в котором, например, будет выводиться угрожающее сообщение.

Возможно, вы не захотите, чтобы сообщение было слишком угрожающим. Много раз я предоставлял клиенту лицензированную копию одной из игр для его сайта и забывал изменить код, чтобы игра шла на его сайте. Если вы попадете в такую ситуацию, мнение клиента о вас может измениться в худшую сторону.

Исходный файл: Copyprotection2.fla.

Далее следует фрагмент программы, сравнивающей свойство _url с тем доменом, на котором располагается ваша игра. Этот код вы можете посмотреть в файле Copyprotection2.fla.

// Получаем строку, находящуюся между символами "://" и следующим символом "/".
c1 = __url.indexOf("://") + 3;
c2 = _url.indexOf("/", c1);
domain = _url.sunstring(c1, c2);
// Удаляем все символы перед первой точкой.
c3 = domain.lasrIndexOf(".") - 1;
c4 = domain.lastlndexOf(".", c3) + 1;
domain = domain.substring(c4, domain.length);
// Переходим к соответствующей странице,
if (domain != "ktrnk.org ") {
    gotoAndPlay("stolen");
}
else {
    gotoAndPlat("start");
}

Вместо того чтобы ролик переходил к другому кадру, вы можете сделать так, чтобы он вызывал функцию getURL () с адресом HTML-страницы, на которой и будет находиться ваше гневное сообщение. Таким образом, не нужно будет помещать кадр с сообщением в каждый ролик, который вы создаете.

Как обойти защиту от копирования

Этот план зашиты от копирования не безупречен. Есть один простой способ, с помощью которого вор может обойти вашу защиту. Он может оставить игру на вашем сервере и создать свою собственную HTML-страницу, в которой параметр src тэгов OBJECT и EMBED указывает на swf-файл, расположенный на вашем сайте. Пользователь будет хранить у себя HTML, а вы – swf-файл. Свойство _url будет сообщать, что игра находится на вашем сайте, то есть зашита от копирования действовать не будет.

Однако это далеко не лучший способ кражи, потому что файл все равно остается под вашим контролем. Вы всегда можете его переименовать или переместить в другое место. Если вы обнаружили, что кто-то украл вашу программу подобным образом, вы можете "поиграть" с ним: переместить игру в другое место сайта, обновить свою HTML-страницу, чтобы путь к игре был верным, а затем заменить старый swf-файл файлом, в котором будет содержаться грозное сообщение для посетителей сайта вора.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.