Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Шрифт:
Полученное имя основного домена вы можете сравнить с доменом, на котором находится ваш сайт. Основной домен, используемый в пути к вашей игре, для разных пользователей может выглядеть по-разному. Например, адресаиотносятся к одной страничке, но свойство _url для них будет различным. Также в адресах некоторых сайтов перед доменом могут быть указаны не только символы типа «www.», например, www.games.garyrosenzweig.com. Если основной домен не соответствует тому, который ожидает программа, значит, игру украли. В этом случае вместо перехода к ролику игры программа может перейти к другому кадру, в котором, например, будет выводиться угрожающее сообщение.
Совет
Возможно, вы не захотите, чтобы сообщение было слишком угрожающим.
Исходный файл: Copyprotection2.fla Далее следует фрагмент программы, сравнивающей свойство _url с тем доменом, на котором располагается ваша игра. Этот код вы можете посмотреть в файле Copyprotection2.fla.
// Получаем строку, находящуюся между символами «://»
// и следующим символом "/".
c1 = _url.indexOf("://"+3;
c2 = _url.indexOf("/", c1);
domain = _url.sunstring(c1, c2);
// Удаляем все символы перед первой точкой.
c3 = domain.lasrIndexOf(".")-1;
c4 = domain.lastIndexOf(".", c3) +1;
domain = domain.substring(c4, domain.length);
// Переходим к соответствующей странице.
if (domain != "garyrosenzweig.com") {
gotoAndPlay("stolen");
} else {
gotoAndPlat("start");
}Вместо того чтобы ролик переходил к другому кадру, вы можете сделать так, чтобы он вызывал функцию getURL с адресом HTML-страницы, на которой и будет находиться ваше гневное сообщение. Таким образом, не нужно будет помещать кадр с сообщением в каждый ролик, который вы создаете.
Как обойти защиту от копирования
Этот план защиты от копирования не безупречен. Есть один простой способ, с помощью которого вор может обойти вашу защиту. Он может оставить игру на вашем сервере и создать свою собственную HTML-страницу, в которой параметр src тэгов OBJECT и embed указывает на swf-файл, расположенный на вашем сайте. Пользователь будет хранить у себя HTML, а вы – swf-файл. Свойство _url будет сообщать, что игра находится на вашем сайте, то есть защита от копирования действовать не будет.
Однако это далеко не лучший способ кражи, потому что файл все равно остается под вашим контролем. Вы всегда можете его переименовать или переместить в другое место. Если вы обнаружили, что кто-то украл вашу программу подобным образом, вы можете "поиграть" с ним: переместить игру в другое место сайта, обновить свою HTML-страницу, чтобы путь к игре был верным, а затем заменить старый swf-файл файлом, в котором будет содержаться грозное сообщение для посетителей сайта вора.
Другие методы защиты
Если вы обнаружили, что кто-то украл вашу игру, то независимо от того, вы ли не поставили защиту или вор смог ее обойти, все равно можно предпринять некоторые шаги.
Во-первых, следует связаться с этим человеком по электронной почте. В конце концов, многие люди не хотят кому-либо навредить, они сразу же извинятся и уберут игру со своего сайта.
Если человек не ответит или связаться с ним нет никакой возможности, попробуйте написать электронное письмо его Internet-провайдеру. Если адрес сайта этого человека имеет адресвы можете просто зайти на сайти найти там адрес. Если у него свой собственный домен, обратитесь к страничке Network Solutions (Решения по вопросам сети), расположенной по адресуи с помощью сервиса Who is (Кто...) попробуйте получить информацию о владельце сайта. На сайте NetworkSolutions в списке провайдеров обычно можно найти того, кто владеет интересующей вас страничкой, и связаться с ним по электронной почте после посещения его сайта.
Хотя Джо Вор (Joe Thief) может вам не ответить или не пожелает убрать игру со своего сайта, скорее всего, его провайдер предпримет некоторые действия, чтобы предотвратить нарушение закона.Список лучших игроков
В большинство Flash-игр играют через Internet. Это значительно увеличивает число желающих сыграть. Самый простой способ воспользоваться преимуществами коллективной игры – это включить в игру список лучших игроков. Сервер будет вести счет очков, набранных участвующими в игре людьми, а они, в свою очередь, смогут увидеть лучшие результаты.
Однако добавить к игре список лучших игроков – не простая задача. Навыков только Flash-программирования будет недостаточно, потому что подобная
Как работает список лучших игроков
Список победителей можно создать разными способами. Один из них – написать программу на основе языка Java с использованием XML Socket, с которой ваша Flash-игра могла бы поддерживать связь через объект XML. Другой вариант – разместить на связанной с сервером Web-странице вашу Flash-игру, которая посылает и получает количество очков с помощью языка сценариев на основе Java.
Наиболее простым способом вести учет очков будет использование языка Perl, ориентированного на работу в сети. Именно об этом и пойдет сейчас речь. Значит, вам придется познакомиться с языком Perl и работой CGI-сценариев.
Сценарии CGI (Common Gateway Interface – общий шлюзовой интерфейс) – это программы, которые выполняются на стороне сервера по запросу клиента. Язык Perl (Practical Extraction and Report Language) – это язык программирования, схожий с языком ActionScript, но предназначенный для использования на Web-серверах. Обычно программы, написанные на языке Perl, имеют расширение. pl или. cgi, а не. html, которое характерно для простой Web-страницы. Когда пользователь просматривает программу, написанную на языке Perl, то, в отличие от текста программы, сохраненной как HTML-страница, ее команды воспринимаются сервером как команды языка Perl. Если Perl-программа получает какой-либо результат, он отсылается обратно на Web-сервер или, как в данном случае, передается Flash-ролику.
Совет
Язык Perl достаточно сложен, и его рассмотрению стоит посвятить отдельную книгу (и не одну). В действительности о Perl написано гораздо больше книг, чем о Flash. Если вы хотите получить более подробную информацию о Perl, идите в ближайший книжный магазин и выбирайте подходящую книгу.
В данном примере для составления списка лучших игроков используются две программы на языке Perl. Первая – Submitscore.pl – отвечает за получение нового результата игры из ролика Flash. Вторая программа, Getscores.pl, отбирает 10 лучших результатов и отсылает обратно во Flash-ролик. Каждой из этих программ необходимо иметь доступ к небольшой базе данных, где будут храниться заработанные игроками очки. CGI-программы обычно обращаются к базе данных, находящейся на сервере, например СУБД MySQL. Однако в нашем примере используется более простой вариант – обычный текстовый файл.
Каждая строка этого текстового файла содержит отличный от других строк результат игры. Каждая запись включает: имя игрока, набранные им очки и время, когда данный результат был занесен в базу данных. Имя игрока и его очки заносятся в программу Submitscore.pl из Flash-ролика, а время программа вводит самостоятельно.
Программа Getscores.pl просматривает текстовый файл с результатами игры и выполняет две функции. Во-первых, она анализирует каждую запись и переписывает текстовый файл, убирая результаты, слишком долго находящиеся в базе данных. Это позволяет периодически обновлять список лучших игроков. Во-вторых, программа Getscores.pl размещает десять лучших результатов по порядку и затем отправляет их обратно во Flash-ролик. Именно этот список демонстрируется игрокам.
Совет
Мне нравится идея исключать из базы данных устаревшие записи. Это не дает возможность одному или нескольким рекордам лидировать в списке лучших результатов на протяжении нескольких лет. Кроме того, подобный подход побуждает хороших игроков вновь и вновь возвращаться к игре, чтобы снова побороться за право называться победителем.
Программы на языке Perl
Программы Submitscore.pl и Getscores.pl, написанные на Perl, можно загрузить с Web-страницы поддержки книги. Чтобы эти программы работали на вашем сервере, понадобится загрузить эти файлы и отладить их. Если вы прежде этим не занимались, проконсультируйтесь с администратором сети или Internet-провайдером. Учтите, что не все серверы могут выполнять программы, созданные с помощью CGI. Если вы пользуетесь услугами дешевого хостинга или ваш провайдер предоставляет бесплатное Web-пространство для своих пользователей, будьте готовы к тому, что CGI-программы не будут работать на вашем сервере.