Сайт состоит из одной единственной страницы и множества асинхронных запросов. То есть индексироваться поисковыми системами не будет, а значит предназначен не для рекламы проекта. И маленькая ссылка на мою рефералку с логотипа в левом верхнем углу пользы не приносит никакой. Что, кстати, можно отнести к минусам такой конструкции сайта.
Еще один минус - javascript. К сожалению ни один браузер не может похвастаться идеальным исполнением этого языка программирования. Чем больше и сложнее скрипт, тем больше шанс на глюки, подвисания и прочие неприятности, вызывающие попаболь. И даже тот же фейсбук, бывает, глючит.
К плюсам же стоит отнести его быстродействие (я сейчас не говорю о тех, для кого сервер с сайтом физически находится на другом континенте). Асинхронные запросы позволяют получить только самую нужную информацию с сервера, без лишних букаф, что позволяет избежать перезагрузки страницы.
Итак, о сервисах. Многие из них опираются на данные непосредственно с игрового сервера, что подразумевает их актуальность. Описания api можно найти здесь: http://forum.unit-online.ru/topic/158871
1. Онлайн игроков
Данные в формате json берутся с игрового сервера (http://api.unit-online.ru/online) и просто сортируются и приводятся в удобочитаемый вид. Итого получаем список всех, кто в игре, за исключением тех, у кого куплен "невидимка". Количество "невидимок" в игре, кстати, получаем оттуда же.
2. Рейтинги
Всё то же самое, что и с "онлайном игроков". Здесь у нас есть возможность выбирать какую именно информацию получать с игрового сервера - pvp-рейтинг, pve-рейтинг, сортировать по уровням и так далее.
3. Кланы
Всё аналогично. Хотя игровой сервер даёт нам информацию только о существющих кланах - их названиях, сайтах, составах и даже должностях. Данные о расформированных хранится уже у нас (о том, откуда они берутся у нас, чуть ниже).
4. Клановые зоны
Тут просто список - http://api.unit-online.ru/zones. Всё что нужно - привести в удобочитаемый вид.
5. Предметы
А именно оружие и броня, других данных игровой сервер пока не предоставляет, хотя в скором времени обещали. 15 октября, если быть точнее (http://forum.unit-online.ru/topic/158871?post=543e52650684db3a191c585b). Так вот, тут пришлось использовать "друхходовочку", которая делает целую кучу запросов к серверу, отчего эта страница загружается медленнее других. Сначала берём весь список оружия (или брони, или шлемов, или прочего), после чего берём ID каждого полученного предмета и делаем запрос к серверу, чтобы получить зарактеристики каждого конкретного предмета.
Например, сейчас в игре 479 разных видов оружия и чтобы получить весь список с характеристиками нужно сделать один запрос ко всему списку и 479 запросов, чтобы получить характекристики. Не айс, правда?
6. Поиск игрока
Наверное, самый короткий скрипт. Ищем игрока по нику и получаем http://api.unit-online.ru/online?type=user&name=Zion.
До этого момента сайт использовал только javascript и html, то есть мог работать на самом дерьмовом хостинге.
Далее упомяну уже мои "фичи".
7. Карта
Сама по себе карта, хоть и хорошего разрешения, бесполезна. Пришлось таки собрать информацию об NPC и сохранить их имена и координаты. А также названия и координаты заводов, локаций, терминалов и прочего. Для удобства также приделал проверку локаций на клановую принадлежность: если клан владеет данной локацией, то на карте это будет отображено.
8. Информация о персонаже
Где угодно на сайте нажав на ник персонажа откроется окно с его информацией. Открытых сервисов админитрация проекта для этого не предоставляет и тут приходится изобретать костыль. Обращаемся к игровой инфе персонажа (http://unit-online.ru/character?id=10482472), лично я использовал для этого curl. Находим следующиую строку:
Спойлер
Внутри массива flashvars в переменной data видим кучу букв и цифр. Это и есть вся информация о персонаже, правда в hex-представлении. Переводим из hex в нормальный вид и дело в шляпе.
Один недостаток: эта информация обновляется не очень-то часто, то есть не может быть абсолютно актуальной.
9. История событий
Перво-наперво понадобится cron, который будет собирать информацию об игроках, кланах и клановых территориях каждые пять минут. Идея простая: записать текущее состояние игрока - его уровень, клан и так далее. Через пять минут снова записать то же самое и сравнить с предыдущими данными - если отличаются, то записать "такой-то перешёл на такой-то уровень" или "сменил клан на такой-то". А дальше только выводить эти данные в читабельном виде и сделать возможность сортировки.
Этот же скрипт записывает время входа и выхода в игру каждого игрока. То есть на данный момент у меня дохрена данных и можно было бы составить график для каждого игрока... но благодарности за труды ждать бесполезно. Об этом, кстати, ниже.
10. API с историей событий
Собственно, изначальная идея создания сайта состояла именно в этом скрипте. Точнее говоря в том, чтобы сделать историю событий общедоступной, как и api-сервисы, предоставляемые разработчиками игры.
На данный момент назвать этот скрипт API, то есть application programming interface, можно с натяжкой. Тем не менее, свою основную функцию он исполняет.
Что именно выводит скрипт: информация об игроках - смена уровня, клана, никнейма; информация о кланах - регистрация, расформирование, смена названия; клановые зоны - смена владельца зоны.
Скрипт испольщует асинхронный запрос, что в разы упрощает уго использование: вставляем на сайт две строки кода и оно работает.
Спойлер
Как пример: этот скрипт сейчас используется у Царапычей (http://tcarapichi.ru).
Пара слов о платности на время новогодних праздников
Тут можно много и долго гнуть пальцы о жиде-разработчике и скупердяях-игроках. Или о жадности всего русского народа в целом :)
Я надеялся немного подзаработать и купить подарков персонажу, ведь я потратил немало времени, купил домен и хостинг. Я расчитывал так, что из 280 постоянных посетителей сайта - а именно столько их было к тому моменту - хотя бы человек 30-40 отдадут мне по штуке рублей, деньги-то небольшие. В итоге через систему регистрации прошли 131 человек, а я получил чуть меньше 10к рублей.
Опечалился.
В итоге
Реализация такого сайта оказалась даже проще, чем я представлял. JS, HTML, немного PHP и MySQL - вот и всё.
Для меня это хороший опыт в программировании и не очень хороший в маркетинге :)