Недавно мне пришла в голову возродить свой старый каталог 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. Видеоэкскурсия по сайту


Комментарии (5)


  1. na9ort
    13.05.2019 11:39
    +1

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


    1. Newbilius Автор
      13.05.2019 12:07

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


  1. liss8608
    14.05.2019 09:31

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


    1. Newbilius Автор
      15.05.2019 10:45

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


  1. Tremere
    14.05.2019 21:29

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