Пятничные факты #391 — Итоги 2023


Оригинал статьи:
factorio.com/blog/post/fff-391

Привет,
Еще один год подошел к концу, от всех нас здесь мы желаем вам удачи в наступающем году.

Мод-портал подводит итоги 2023 года

Vinzenv

Наступил конец 2023 года, и, сюрприз, мы все еще подсчитываем количество загрузок модов. Хотя большинство из них загружается через встроенный менеджер модов, некоторые из вас любят автоматизировать установку Factorio с помощью скриптов загрузки или Docker-контейнеров.

Некоторые из них падают при обновлении модов, затем перезапускаются, снова скачивают все моды, падают, перезапускаются, и через некоторое время вполне вероятно, что сервер Factorio auth начинает игнорировать скрипт загрузки. Так что, возможно, именно в этот праздничный сезон вы вспомните, как ваш бедный мини-ПК сидел в забытом шкафу, бездумно скачивая «Power Armor MK3» снова и снова.

В 2023 году у нас было:
⚙️ 676 651 инженеров, загрузивший 44 954 072 мода.
⚙️ 2 043 новых мода и 7 832 обновлений модов.
⚙️ 1 368 активных создателей модов, которых поддерживают 105 соавторов.

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

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

Диаграмма выпущенных модов по категориям

Вторая диаграмма показывает все загрузки игроков в 2023 году по каждой категории. Это подтверждает мнение о том, что люди здесь преимущественно ради контента, и мне следовало бы подготовить эту статистику для тегов модов…

Диаграмма загрузок модов в каждой категории

Журнал изменений портала модов 2023

Vinzenv

В этом году мы продолжили наше стремление улучшить ✨ доступность ✨. Сначала мы добавили автомагическую страницу Избранных модов(Highlighted mods) — каждую неделю она пытается с умом подобрать интересную подборку модов. Это работает хорошо, но пока находится на стадии «эксперимента», и мы еще не решили, куда двигаться дальше.

Чуть позже мы переработали поиск по порталу модов и запустили страницу Explore. Она обеспечивает быстрый поиск по типу «как у вас» с настройкой фильтров.

Мы также проделали довольно много закулисной работы, некоторые из которых я хочу осветить здесь:

  • Когда в апреле Imgur начал удалять изображения, Sanqui создал систему, которая автоматически репостит внешние изображения, размещенные на страницах модов или в обсуждениях. Таким образом, сохраняются старые скриншоты и улучшается время загрузки.
  • Чтобы сократить расходы, мы перевели страницу Explore с Algolia на Meilisearch (Algolia и Meilisearch — поисковые системы).
  • Мы изменили наше хранилище модов с sftp на s3-подобное объектное хранилище, что должно улучшить доступность конечной точки загрузки модов

Улучшения менеджера модов

raiguard

Моддинг является неотъемлемой частью Factorio, и мы приложили огромные усилия, чтобы обеспечить хороший опыт управления модами. Однако сторонние моды всегда были вторичны по отношению к работе над базовой игрой, поэтому, хотя опыт и «хороший», он не «отличный», и есть много точек трения, которые так и остались нерешенными. Начиная с версии 2.0, мы будем поставлять игру с несколькими встроенными модами, так что менеджер модов и управление зависимостями теперь подпадают под зонтик «опыт базовой игры». Благодаря своему обширному опыту в моддинге я лично заинтересован в улучшении управления модами как для пользователей, так и для моддеров, и я хорошо знаком с болевыми точками текущей системы. Я составил список своих самых больших пожеланий и разочарований и взялся за их решение.

Ошибки зависимостей модов

Представьте себе это: Вы только что настроили список модов для нового прохождения Krastorio 2 и начинаете новую игру. Не зная об этом, вы случайно включили мод Power Armor MK3, который в Krastorio 2 был помечен как несовместимый. Только через час после начала игры вы понимаете, что контент Krastorio 2 пропал, и теперь вам придется выкинуть сохранения и начать игру с нуля.

С подобной ситуацией я сталкивался много раз и как игрок, и как автор модов. В версии 1.1 игра не сообщает вам о конфликтах, а просто молча загружает те моды, которые может, и продолжает работу. Это привело к тому, что многие авторы модов стали отказываться от использования зависимостей, а пользователи жалуются, когда мод имеет много зависимостей. Проблемы, связанные с этим, настолько распространены, что Space Exploration реализовала собственную систему ошибок зависимостей, которая информирует пользователей о том, каких модов не хватает.

Factorio 2.0 будет информировать вас о возникновении ошибок зависимостей и не позволит игре загрузиться до их устранения.

Добавьте описание

Настроить → перезапустить → настроить → перезапустить

Теперь, когда у нас есть информативные ошибки зависимостей, нам нужно улучшить процесс их устранения. В версии 1.1 при возникновении ошибки вам предоставляется два варианта: отключить затронутые моды или отключить все моды. Если для решения проблемы требуется включить мод, изменить версию активного мода или обновить мод, то сначала нужно отключить мод, чтобы игра загрузилась, прежде чем вы сможете получить доступ к графическому интерфейсу менеджера модов для их устранения. Это настолько раздражало меня в процессе работы над модами, что я написал мод-менеджер на основе командной строки, чтобы избежать постоянных перезагрузок игры.

Решение было простым: В версии 2.0 я добавил новую кнопку Manage mods, которая позволяет получить полный доступ к графическому интерфейсу менеджера модов, включая все функции портала модов. Вы можете увидеть ее на скриншоте выше.

Установка модов

В 1.1 вкладка установки в менеджере модов относительно проста: у вас есть список модов с базовыми опциями сортировки/фильтрации и информационная панель для отображения деталей мода. Игра получает весь список модов и создает всю таблицу за один раз, что приводит к заметным проблемам с производительностью, а в режиме отладки игра вообще практически не работает.

С появлением новой страницы Explore на сайте портала модов разница в удобстве использования между сайтом портала модов и внутриигровым браузером модов стала еще больше. Я привык искать мод на сайте и искать его в игре только после того, как найду нужный мне мод. Разве не было бы здорово, если бы в игре был такой же опыт, с такими же возможностями поиска и фильтрации?

В версии 2.0 появилась новая вкладка » Explore», в которой реализована именно такая возможность.

В редакторе видеозапись не воспроизводится
0:33
Примечание: Фильтрация по закладкам модов не была реализована в новом графическом интерфейсе, но будет реализована в релизе 2.0.

При реализации этого нового интерфейса мне пришлось принять во внимание несколько соображений. В версии 1.1 использование метода получения всего списка модов каждый раз было не лучшим решением по причинам производительности и использования сети, и потребовало бы повторной реализации сложных алгоритмов поиска на стороне клиента на C++. Это привело бы к неизбежным различиям между поиском на сайте и поиском в игре, что не лучшим образом сказалось бы на пользовательском опыте. С другой стороны, реализация API поиска на портале модов обеспечила бы паритет между результатами поиска на сайте и в игре.

Мы выбрали серверный подход. Чтобы быстрее запустить проект, я решил реализовать *mock-сервер на Go, который будет получать данные из существующих API мод-порталов и предоставлять их в новом формате. Благодаря встроенным в Go библиотекам HTTP и очень простому в использовании разбору JSON, на то, чтобы запустить этот сервер на моем ноутбуке, ушло всего несколько часов. По мере реализации графического интерфейса я мог свободно корректировать API по мере необходимости, не отнимая время у DevOps. Это позволило мне не торопиться и провести необходимую чистку и рефакторинг графического интерфейса менеджера модов, чтобы облегчить реализацию вкладки explore и подготовить почву для дальнейших изменений в будущем.

Как только реализация на стороне клиента была завершена, Vinzenz’у предстояло реализовать настоящий API. Благодаря устойчивости mock-сервера, во время тестирования реального API было обнаружено лишь несколько проблем, и объединение функций прошло относительно гладко.

Mock-сервер (или мок-сервер) — это программное обеспечение или сервис, который эмулирует поведение реального сервера, но не выполняет реальной бизнес-логики. Вместо этого он возвращает заранее определенные ответы на запросы клиентов. Mock-серверы используются в разработке программного обеспечения для тестирования, отладки и разработки, когда реальный сервер или его компоненты еще не доступны или находятся в процессе разработки.

Планы на будущее

Я чувствую, что эти изменения исправили мои самые большие претензии к менеджменту модов. Мой список далеко не полный, но в интересах скорейшего выхода 2.0 большинство моих планов придется отложить до следующих версий. Следите за новостями!

Comments: