Есть идея сделать онлайн-каталог актуальных игр всех платформ.
В каталоге помимо алфавитного списка игр, будет ещё поиск и разбивка по платформам, можно сделать и разбивку по жанрам. Цель каталога - дать возможность авторам ознакомиться с тем, что уже написано и выбрать название будущей игре, которое ещё не использовалось. А игрокам и тем, кто только знакомится с ИЛ - дать больший выбор игр.
Но если делать такой каталог, то надо получать данные об играх напрямую с сайтов платформ. Поэтому я обращаюсь к администраторам сайтов QSP, URQ, Quest-book и Instead, RTADS и Русский Информ с предложением сделать выгрузку своих библиотек в формате JSON.
Конечно, надо сформировать общий стандарт выгрузки, можно использовать тот, который применяется у нас на Гиперкниге, например, вот данные по конкретной игре:{"books":[{"title":"Silent school","version":"6","author":"Роман Островерхов 'Ulrick'","updated":"16.01.14","passages":"215","rating":"4","id":"13854938204668"}]}
Вот её описание:{"title":"Silent school","version":"6","author":"Роман Островерхов 'Ulrick'","updated":"16.01.14","passages":"215","rating":"4","subtitle":"Обычная школа захолустного российского городка превращается в смертельную западню. Накрывший город утренний туман превращает людей в тупых и кровожадных тварей, охотящися за свежей плотью. Учитель истории, тихо спивающийся робкий интеллигент, и не подозревает, что настал день, который полностью изменит его жизнь...","beta":"0"}
А вот список игр определённого жанра:{"books":[{"title":"Арена","version":"8","author":"Борис Семёнов (Morych)","updated":"30.12.13","passages":"85","rating":"5","id":"13764029087384"},{"title":"Mysteriis memoria","version":"4","author":"Moredhel","updated":"01.07.13","passages":"122","rating":"5","id":"13709457675609"},{"title":"Шапка Мономаха","version":"2","author":"Автор - Константин Таро, программирование - Ergist...","updated":"28.11.12","passages":"163","rating":"4","id":"13531794082906"},{"title":"Гражданка Готье","version":"2","author":"Юрий Павленко","updated":"22.03.13","passages":"416","rating":"4","id":"1352989652918"}]}
Сделать это несложно, а польза для популяризации ИЛ очевидна.
Данные, полученные с сайтов, будут кешироваться и обновляться, например, раз в сутки. Все игры включать в каталог или только отобранные - решать владельцам сайтов платформ. Можно выгружать скриншоты игр, если они есть.
Как вам эта идея?
P.S. Идея каталога не пересекается с архивом РИЛ. В нём будут только актуальные ссылки на актуальные игры, краткое описание игр и простой удобный интерфейс. Ещё мы сделаем виджет, который можно будет легко вставить на любой сайт.
Отредактировано DoubleDragon (11.04.2014 20:13)
Неактивен
Одобряю и поддерживаю.
На QSP выгрузку однозначно сделаем. Я всегда поддерживал интеграцию сервисов и объединение текстовых платформ, даже сделал объединённую новостную ленту.
Формат выгрузки проработайте хорошенько. Чем чётче опишете, тем лучше. Составьте спецификацию. От кодировки до формата полей.
Заодно, хорошо бы какую-нибудь утилиту или веб-интерфейс для тех, у кого нет возможности автоматизировать выгрузку. Чтобы можно было при отсутствии БД заполнить список вручную. Да ещё и обновить позже при необходимости - добавить новую игру.
Помимо Рилархива, есть ещё два кроссплатформенных каталога - ифвики и Джуманджевский ресурс. С ними тоже нужно синхронизироваться.
Интересно, в чём оценивается "актуальность" игры?
Отредактировано Nex (11.04.2014 20:37)
Неактивен
DoubleDragon написал:
Про утилиту автоматизации - сделаем. Пишите, что от неё надо.
Ну как - запускаешь, заполняешь список игр.
В поле "Название" вводишь название игры, в поле "Автор" вводишь автора, и т.д.
Нажимаешь кнопку "Сохранить" - выгружается в JSON-файл.
Всё, файл можно выкладывать на сайт.
Впоследствии, если понадобилось добавить игру, запускаешь, открываешь JSON-файл, добавляешь игру, сохраняешь.
Неактивен
Кстати о рейтинге. Я полагаю, рейтинг в общем каталоге должен быть свой собственный, а не из выгрузки.
Так как игра, может быть, например, "10 из 10" на платформе "Клейстер", а в сравнении с играми платформы "Полено" она лишь "выше среднего".
Или у нас, например, на QSP вообще нет оценок для игр. Только лайки.
Неактивен
Ну уж на это давно решение есть. Авторизация через ВКонтакте - этого будет достаточно. Не зарегистрированных ВКонтакте пользователей русскоязычного интернета пренебрежительно мало.
Хотя мы вот без оценок прекрасно живём. У нас лайки есть.
То есть статус игры не "хорошая-плохая", а "популярная-непопулярная".
Отредактировано Nex (11.04.2014 21:16)
Неактивен
Лучше в отдельную тему выделить.
url
Ссылка на запуск/скачивание игры
Либо разделять на два разных параметра - ссылка на скачивание, ссылка на запуск, либо вводить ещё один параметр:
playInBrowser (1|0)
Т.к. для одних игр будет нужно показывать пользователю ссылку "Скачать", для других - "Запустить".
title
Название игры
Нужно добавить, что версия игры в title не должна присутствовать.
subtitle, по-моему, лучше переименовать в "description". Во всяком случае для меня это слово всегда обозначает субтитры к видео.
genre (необязательно)
Номер жанра игры
Может быть указано несколько номеров жанров через запятую. Список жанров утвердим позже.
Сам каталог будет назначать какие-то жанры, а на сайтах платформ придётся встраивать список? Это неудобно.
Предлагаю сделать набор тегов (categories).
Пример с урки:
готовая
akurq1.28pre6
ЗОК
интерактивный рассказ
мистика
романтика
Беларусь
veresk
Какие теги проставлены в игре - такие и выводятся в выгрузке. Далее, при импорте уже сам каталог может по белому списку отфильтровать. Заодно админ каталога легко соберёт статистику, какие теги наиболее востребованы и подлежат выделению в жанр и занесению в белый список.
А ставить ли игре теги, которые обеспечат её попадание в опрделённый жанр в каталоге, будет решать сам автор.
Нужно добавить необязательные поля:
author_url
URL автора (личный сайт, визитка, страничка ВКонтакте, и т.д.)
author_email
Email автора
icon
Иконка (миниатюра). Есть иконка - использовать в качестве миниатюры её, нет иконки - использовать уменьшенный скриншот.
Добавить обязательные поля:
created
Дата и время создания игры (дата и время добавления в каталог платформы). В отличие от времени последнего изменения, это может пригодиться, например, для вывода списка "новинок". При этом понятно, что исправленная версия старой игры новинкой не является.
Соответственно "date" переименовать в "modified".
guid
Уникальный идентификатор игры, который не меняется никогда. То есть вообще никогда.
Стандартное поле для любых RSS-подобных форматов. Несёт важную функцию: если изменится поле "url", игру в новой выгрузке уже нельзя будет однозначно связать с игрой из старой выгрузки, если не будет GUID. Если есть GUID - можем при необходимости менять url, и при этом ничего не теряется, никуда не пропадает, не появляется дубликатов.
Ещё несколько технических деталей.
Версии стандарта выгрузки нужно обязательно нумеровать и указывать в файле выгрузки. По каждому изменению начиная с первой версии. Менять, само собой, как можно реже, чтобы не пришлось всё время подправлять скрипты выгрузки. При этом, при вводе новой версии, старая версия должна какое-то время поддерживаться, хотя бы два месяца, чтобы было время всё обновить.
Дату формирования файла выгрузки тоже хорошо бы добавить. Пригодится, чтобы отследить, когда что-то поломается.
Ещё надо подумать, как пришить комментарии в каталог, чтобы всем было удобно.
Прикрутить любой сервис комментариев. Рекомендую SV Kament. В наш век это делается легко и непринуждённо.
Отредактировано Nex (13.04.2014 15:18)
Неактивен
DoubleDragon написал:
Можно и так, хотя проще, конечно, по расширению файла определять, если оно есть. Очевидно, что .php - это не ссылка на скачивание.
В обоих случаях ссылка может быть какая угодно.
Реальный пример: http://qsp.su/index2.php?option=com_sob … ormat=html
Это ссылка на скачивание zip-архива игры из нашего каталога. Скачивание засчитывается и сохраняется в БД, далее выполняется редирект.
DoubleDragon написал:
Надо ещё подумать. Хочется, чтобы посетителю было понятно и удобно. 10 жанров понятнее, чем 100500 похожих тегов, типа "фентези", "фэнтези", "средневековая фантастика" и т. д.
Так в том-то и дело, что мой вариант абсолютно никак не повлияет на удобство каталога. Ты сделаешь в каталоге то, что хотел.
Ты точно так же сможешь определить набор жанров, и если этот жанр указан среди тегов, помещать игру в нужную категорию. Я же написал: фильтр по белому списку тегов при импорте, на стороне каталога. Ты, как хозяин каталога, сам определяешь, какие теги должны соответствовать жанрам.
Мой вариант избавляет администраторов платформ и авторов от геморроя с внешне назначаемым списком.
DoubleDragon написал:
По иконке - можно пример иконок? Имеются ввиду иконки исполняемого файла или какие?
Иконка игры. Имеется в виду та самая миниатюра, которую ты собираешься делать уменьшением скриншота. Как правило, скриншот текстовой игры в уменьшенном виде выглядит неприглядно. Это касается даже иллюстраций. Поэтому хотелось бы, чтобы была возможность назначить миниатюру самостоятельно, с хорошей картинкой. С картинкой, которая специально сделана так, чтобы хорошо смотрелось в малом размере. Если её не предоставили - тогда делать из скриншота.
DoubleDragon написал:
По created. На Гиперкниге, например, такого нет. Только modified.
Ну так и modified у кого-то может не быть. Сделайте. Или пишите в created дату создания самого каталога.
Это осмысленное значение, я уже привёл пример, когда оно может понадобиться. То, что в каталоге Гиперкниги ему ещё не нашли применения, меня мало волнует. Мы ведь новый ресурс создаём, а не продолжение Гиперкниги.
DoubleDragon написал:
По guid. Согласен, что нужно. Можно просто id назвать. Но на всех ли платформах он есть? Если генерить его на сервере каталога, тогда смысл в выгрузку включать?
ID может поменяться. GUID не меняется никогда.
GUID не генерируется на сервере каталога. GUID создаётся при первой загрузке игры на сайт платформы и не меняется никогда.
Это не локальный идентификатор игры в каталоге. Это глобальный идентификатор обновляемого блока информации в интернете.
Смысл его в том, чтобы обеспечить идентификацию конкретной игры в глобальном пространстве. То есть, это поле всегда однозначно соответствует конкретной игре на конкретном сайте.
Чаще всего это неизменяемый URL с ID записи. Либо псевдо-URL, так как GUID не используется для загрузки чего-либо, а лишь является уникальным глобальным ключом. Он может совпадать с URL страницы игры, а может не совпадать, это совершенно не играет роли.
Примеры:
http://site.com/game?id=15
http://site.com/games/15
http://site.com/game-guid/15
Неизменность и глобальная уникальность GUID позволяет обновлять информацию по конкретной игре, не нарушая никакой целостности.
Любую информацию, вплоть до URL. То есть, даже если сайт платформы переедет на http://newsite.com, у игры останется прежний GUID - "http://site.com/games/15", и всё будет продолжать работать.
Без GUID, либо при каждом импорте будут удаляться все записи из каталога и заполняться заново, что сразу лишает любых возможностей комментирования, оценок, статистики, либо при изменении URL игры появляются дубликаты.
DoubleDragon написал:
Дату формирования файла выгрузки тоже хорошо бы добавить. Пригодится, чтобы отследить, когда что-то поломается.
Дату можно определять на сервере каталога по дате создания/изменения файла. Зачем она в выгрузке?
Уже написал:
Пригодится, чтобы отследить, когда что-то поломается.
Но это не принципиально. Не хочется - значит пусть без неё будет.
DoubleDragon написал:
Это понятно. Я имел ввиду, как пришить комменты, уже имеющиеся на сайтах платформ.
А их переносить и не следует. По той же причине, что и рейтинг. Пусть аудитория нового каталога сама составляет мнение об играх.
Неактивен
DoubleDragon написал:
Я согласен, что это поле (GUID) необходимо. Но если его просто нет на сайте платформы? А ссылки, как ты правильно указал, могут менятся. Генерить из названия?
Название тем более может измениться. На моей памяти, игры в нашем каталоге иногда переименовываются.
Если нет GUID, и нет возможности его создать на сайте платформы, то в это поле записывается URL с ID игры, то есть постоянная ссылка (т.н. permalink). URL в этом случае точно так же служит в качестве GUID. Просто у таких платформ будет немного меньше возможностей по обновлению (проблемы в момент переезда сайта).
Единственный вариант, когда у сайта платформы нет ни GUID, ни постоянной ссылки - это если контент не управляется CMS, а создаётся "вручную", каждая страница с игрой в HTML-редакторе типа FrontPage. Но в таких исключительных случаях можно в качестве GUID просто использовать URL страницы. Если у платформы так мало игр, и они так редко обновляются, что администратор довольствуется "ручной правкой", то уж проблемы с обновлением при изменении URL будут крайне редки.
Почему лучше GUID-ссылка с использованием ID игры, а не просто URL.
На сайте платформы, основным URL страницы игры может быть ссылка вида "http://site.com/games/my-epic-game". И если её переименуют из "My Epic Game" в "My Cool Game", URL изменится: "http://site.com/games/my-cool-game".
Поэтому такие проблемы с URL могут возникнуть и без переезда сайта. В случае, если в качестве GUID используется постоянная ссылка с ID, проблема отпадает.
Неактивен
Готово: http://qsp.su/dragon-api/1.0
Отредактировано Nex (17.04.2014 22:58)
Неактивен
А почему нет? И с какой стати "место" в выгрузке должно иметь значение?
Неактивен
Ты о чём? Какая конвертация? Это полностью корректный JSON. Любой декодер JSON должен его понимать. Или ты собрался делать какой-то кривой JSON импорт без поддержки эскейп-последовательностей?
Проблем нет с выгрузкой нет, прекрасно выгружает вот в таком виде.
Если по каким-то религиозным причинам тебе не хочется видеть их в файле (может тебе хочется открывать этот файл и читать его "как есть", не программными средствами), я бы мог отключить их. Но отключить их можно в PHP только начиная с версии 5.4. В более старых версиях, одна из которых установлена на нашем хостинге, добиться этого можно только нагородив костылей.
Я не вижу практического смысла налагать какие-то дополнительные ограничения к презентации символов, и отходить от стандарта JSON. Объясни, зачем тебе это.
Неактивен
Ну что за детский сад. Я уже объяснил, что не делаю специально никаких escape-преобразований. Это стандартная функция PHP, она генерирует абсолютно корректный JSON-формат.
Всем требованиям формата моя выгрузка полностью удовлетворяет. Зачем ты на ровном месте какие-то дополнительные ограничения придумываешь, я не понимаю.
У тебя JSON-декодер глючит? Ты хоть пробовал импорт сделать? Какой язык используется, какая платформа? PHP великолепно понимает escape-последовательности в JSON. Не нужно никаких дополнительных "процедур конвертации" или усложнений.
Стандарту JSON в июле исполнится 8 лет. Если ты откопал какой-то косячный декодер, который в 2014 году не может нормально читать JSON, не надо делать это моей головной болью.
Ещё раз. Жду разумного обоснования, а не просто "мне так не нравится".
Отредактировано Nex (18.04.2014 20:57)
Неактивен
С этого и надо было начинать. Что у тебя никакой поддержки стандартов JSON вообще не планировалось.
Тут всё довольно просто. Забудь про самописные декодеры.
Поставь пакет PEAR
pear install Services_JSON-1.0.3
и напиши маленькую обёртку: http://www.epigroove.com/blog/how-to-us … or-php-51x
Если нет возможности или желания пользоваться инсталлятором PEAR, можно просто скачать исходник пакета: http://download.pear.php.net/package/Se … -1.0.3.tgz
Там один php файл всего. Подключаешь, и оно работает.
Неактивен
Онлайн-игры логично было бы в новой вкладке открывать.
Неактивен
Согласен с Джуманджи, книги-игры не стоит включать в общий каталог. В первую очередь потому, что этого не поймут пользователи.
Вот полноценные интерактивные версии книг-игр, такие в которых программно реализован инвентарь и учёт игровых флагов (узнал секрет, был на таком-то параграфе), вот эти стоит добавить. Но как правило, они выпускаются под конкретную платформу.
Таким образом, книги-игры с QSP и Instead уже будут в каталоге. Прочие книги-игры целесообразно также подключать платформами. Например, платформу jsIQ, созданную специально для интерактивных версий книг-игр.
Неактивен
Ссылки на сайты подключенных платформ тоже лучше в новой вкладке открывать.
Неактивен
Квестер будет?
Там, говорят, очень много мусора. Но зато есть рейтинги: по-моему, все квесты со значком "К" одобрены модератором, и за положительные оценки присваиваются разные "коронки".
Вот можно было бы отобрать по этим параметрам и включить самые достойные работы в каталог.
Неактивен
Автоматическое обновление не работает? Зашёл и не увидел свежих игр с QSP.
Неактивен
Жаль. Неплохая штука была.
Неактивен