Эмуляция для retro-гейминга, современный подход. Часть 1

Давным давно чтобы поиграть на ПК в игру разработанную, скажем для NES, вам нужно было скачать эмулятор, скачать ROM образ игры, также для эмуляции некоторых приставок требовался образ BIOS, настроить эмулятор (управление, графические плагины и звук) и только после этого можно было насладиться игрой. Подобный путь требовалось пройти для эмулятора каждой платформы поиграть в игры которой вам захотелось. К счастью прогресс не стоит на месте и на сегодняшний день доступны несколько продуктов вида “все в одном” которые объединяют различные эмуляторы и их настройки под единым интерфейсом. Теперь (в большинстве случаев) достаточно выполнить настройку графики, звука, управления в одном месте через удобный интерфейс и пользоваться всеми доступными для вашей платформы эмуляторами.  Рассмотрим наиболее известные современные комплексные решения для retro-гейминга: RetroPie и RetroArch, попробуем разобраться что они из себя представляют и какие проблемы возникают при использовании на современных платформах — Windows, Linux, Raspberry Pi 3.

Как все устроено

Старый способ использование эмуляторов я уже  описал, пора разобраться с новым порядком. 

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

Слоеный пирог современных решений по эмуляции

Libretro

Libretro это API которое предназначено упростить разработку игр и эмуляторов. Libretro позволяет сосредоточиться на разработки внутренностей эмулятора (или игрового движка) и делегировать работу со звуком/видео/отрисовкой/вводом специальному приложению — фронтенду. При разработке/портировании эмулятора на libretro на выходе получается файл-библиотека который называется ядром (core). Любой libretro-совместимый фронтенд сможет подгрузить и работать с любым ядром. 

RetroArch

RetroArch — официальный фронтенд для libretro, а это значит что умеет работать со всеми libretro ядрами т.е. отправлять им пользовательский ввод (нажатие клавиш клавиатуры или геймпада) и получать и обрабатывать вывод (графика, звук), учитывая особенности той платформы на которой запущен. Так же RetroArch предоставляет единый интерфейс для настройки различных аспектов системы таких как графика, аудио и геймпады. Помимо этого предоставляет множество полезных дополнительных функций:

  • Сохранения,
  • Шейдеры для старых игр,
  • Запись игрового процесса.

RetroArch поддерживает огромное количество платформ: Windows (в том числе и устаревшие версии), Linux, Mac OS (в том числе и PowerPC версии), Android, плюс множество, как современных так и устаревших, игровых приставок, однако, надо учитывать что не все ядра доступну для всех платфом..

    Стоит отметить что в понятии libretro фронтенд это не графический интерфейс пользователя а программное обеспечение которое инкапсулирует аппаратные и программные особенности той платформы на которой запущено. Т.е. грубо-говоря libretro-ядро (эмулятор или игровой движок) говорит: мне надо нарисовать сцены, вот столько-то треугольников, наложить вот такие текстуры, проиграть вот этот звук и, кстати, где мой пользовательский ввод? RetroArch выполнят все эти операции так, как это нужно сделать на домашней системе, т.е. для отрисовки графики на Windows вызовет DirectX, для Linux использует OpenGL, подходящим образом проиграет звук и обрабатывает нажатия клавиш. RetroArch в своем составе содержит графический интерфейс пользователя хотя может быть использован и без него.

EmulationStation

Графический интерфейс для запуска эмуляторов, не является фронтендом для libretro. Поддерживает довольно мало платформ. После установки требует довольно масштабной настройки — придется самому скачать эмуляторы (не core для libretro а полноценные эмуляторы) и написать файл конфигурации чтобы ES видел эмуляторы и ROM’ы. Для Windows есть проект который производит установку и настройку ES с помощью PowerShell скрипта.

RetroPie

Пожалуй самым известным инструментом для retro-гейминга является RetroPie — специальная сборка Linux которая способна превратить ваш компьютер в машину пиксельной ностальгии.  

RetroPie это решение вида “все в одном” и включает в себя:

  • Emulationstation как интерфейс пользователя
  • RetroArch как фронтенд к libretro
  • Большое кол-во предустановленных эмуляторов 

Для установки на одноплатные компьютеры есть готовые образы. Так же есть возможность установки на ПК с Ubuntu или Debian с помощью скрипта, который выполняет сборку, входящего в состав RetroPie ПО, в том числе и эмуляторов, путем компиляция из исходного кода. В основном же RetroPie нацелен на использование на ARM-based компьютерах, правда список поддерживаемых платформ не очень впечатляет:

  • Все версии Raspberry Pi
  • Платы ODROID 

У проекта хорошая документация и удобный список поддерживаемых к эмуляции систем с комментариями и пояснениями какой эмулятор лучше использовать на той или иной целевой платформе.

Lakka

Lakka представляет собой образ Linux (основан на LibreELEC), предназначенный для установки на железо т.е. возможность установки на уже работающую ОС не предусмотрена. Lakka построена на основе RetroArch и использует его в качестве фронтенда. Список поддерживаемого Lakka оборудования весьма обширен.

Итог

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *