Новая жизнь старых игр: максимально опенсорсный каталог source-портов (Java + PHP)

    Недавно мне пришла в голову возродить свой старый каталог source-портов и графических модификаций для старых игр. Новая версия должна была стать максимально опенсорсной и открытой, чтобы любой пользователь мог править как содержание сайта, так и его код, а мне бы оставалось заниматься только премодерацией изменений. Если вам интересно, что из этого вышло, как я создал самому себе проблемы и как потом их решал — добро пожаловать под кат.



    Краткое ТЗ на сайт


    • На сайт будет выкладываться информация о модификациях для игр (фанатские патчи, наборы текстур, source-порты и т.д.), улучшающие графику, упрощающие какие-то аспекты управления, а также переносящие её на другую операционную систему или платформу. Пример подобных модов — добавление в Dune 2 рамочки для выбора юнитов или текстур высокого разрешения для Doom
    • На сайте будет только информация, но не сами файлы модификаций и портов. На старой версии сайта я старался поддерживать и заливать к себе свежие копии файлов, и времени это жрало порядочно
    • Сайт должен быть удобно использовать как с десктопа, так и с планшета или телефона
    • Любой пользователь должен иметь возможность добавить на сайт игру, модификацию и так далее, а также отредактировать любую информацию, уже добавленную на сайт
    • Любой пользователь должен иметь возможность редактировать код и вёрстку сайта
    • У владельца сайта должна быть возможность премодерации любых изменений
    • Должна быть возможность добавлять дополнительных модераторов
    • Должны быть кнопки для шаринга в социальные сети

    Решение


    А давайте разместим все данные на гитхабе, и по этим данным будем генерировать статический сайт? Сплошные плюсы же!


    • GitHub уже предоставляет веб-интерфейс для изменения или добавления файлов и отправки изменений в виде pull request
    • Pull Request — отличная система премодерации изменений и просмотра диффов
    • Нужны новые модераторы? Добавляем в проект на гитхабе пользователей, не нужно думать над системой прав
    • Статический сайт можно разместить на абсолютно любом хостинге, включая GitHub Pages
    • Всякие активности типа комментариев, шаринга или блока «случайная модификация» можно реализовать на клиенте с помощью JS и готовых решений типа Disqus
    • Для простоты и скорости вёрстки используем Bootstrap

    Тем более, что я давненько хотел поупражняться в написании генерации статического сайта на Java. Решено! В одном репозитории храним данные, во втором — генератор статического сайта. Поеха… Хотя нет, стоп, сначала нужно принять ещё одно решение.


    В каком формате хранить информацию?


    Хранить описания игры или модификации в файлах формата «JSON/XML/впишите свой вариант» — идея вроде и замечательная, но у нас же в требованиях стоит “… любой пользователь...”, а какой-нибудь JSON может и напугать. Ну ладно, фигня вопрос — давайте хранить данные в пачке текстовых или Markdown-файлов. Один файл — одна сущность, у MD-файлов на github есть превью — лепота! А чтобы ещё упростить ситуацию, подробно распишем в документации, что за что отвечает. Часть этой информации:



    И что я хочу сказать — редактировать уже имеющуюся информацию в таком режиме действительно довольно удобно. Но есть один нюанс...


    Добавление новой информации


    Редактировать данные оказалось удобно, а вот заводить новую модификацию — не очень, потому что было необходимо за один раз создать от 4 до 14 файлов. И делать это с помощью интерфейса гитхаба чертовски неудобно. Первой мыслью было накидать многошаговые инструкции, описывающие добавление новой информации от и до.



    Увы, вердикт пользователей сайта был однозначен: неудобно! А если пользователям неудобно на сайте, который должен жить за счёт пользовательской активности… сами понимаете, проекту кирдык.


    PHP спешит на помощь


    Ну что поделать, решение было в общем то очевидным: написать формочки для заведения новой информации путём создания пулл-реквеста со всеми необходимыми файлами, а также для загрузки скриншотов к уже существующим описаниям. По старой памяти, из-за желания запустить проект поскорее, а так же из-за того, что PHP уже был на хостинге — для этих формочек был использован PHP.



    Взлетело?


    После добавления удобных формочек процесс пошёл: первые недели после размещения информации о сайта в своём видеоблоге и на сайте Old-Games.RU новые моды и порты добавляли с такой скоростью, что я просто не успевал заниматься премодерацией!



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


    Одной из частых претензий стал внешний вид сайта — и это понятно, ведь я задействовал дефолтную тему Bootstrap 4 с мыслью «это же временно, потом натяну красивый скин». Шутку про "нет ничего более постоянного, чем временное" даже воспроизводить не хочется.


    Потом активность конечно пошла на спад, но какое-то количество активных пользователей на сайте всё ещё есть и сайт продолжает наполнять информацией. На момент старта в середине февраля на сайте было 227 модов к 86 играм, а на момент этой публикации — 323 мода к 130 играм.


    И зачем ты это сюда написал?


    Во-первых, рассказать очередную историю с очевидной моралью «интерфейс удобный и приятный программисту совсем не обязательно будет удобен пользователю сайта». Не смотря на банальность тезиса — его стоит периодически напоминать.


    А во-вторых — позвать любителей покопаться в коде или порисовать и поверстать интерфейсы. Может быть быть вас заинтересует тематика сайта и вы захотите немного помочь в его развитии ;-)


    Если вам это интересно, то весь исходный код сайта живёт на гитхабе.


    P.S. Видеоэкскурсия по сайту


    • +16
    • 4,2k
    • 7
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      +1
      Крутота! Как раз в поисках опенсорсного проекта: хочется попробовать свои силы в чём то серьёзном, но чтобы не ынтырпрайз. Вы же не будете против?)
        0

        Я только за ;-)

        0
        Дмитрий, ты как всегда молодец. Может стоит после переговоров с OG.RU ввести перекрестные ссылки? Например на ОГ я нахожу дум, и в закладке «Файлы» вижу — модификации, тыкаю и перехожу на страницу revival посвященной думу. Ну и собсно наоборот. Думаю выгодно будет всем.
          0

          А там такое даже есть, блок "Модификации для этой игры" внизу описания игры на Old-Games ведёт именно на GR ;-)

          0
          Класс, всегда жду новые видео от тебя, жаль не могу проголосовать за статью.
            +1
            для коментариев советую попробовать remark42.com
              0

              Но это же селф-хостед, а мне по задумке хотелось использовать сторонний сервис.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое