Как запустить Minecraft на игровом сервере?

Проблема

Сам я равнодушен к играм, но мой ребенок активно стал играть в Minecraft через какие-то «подозрительные» сайты на своем планшете. Тогда я предложил установить на игровой сервер Minecraft и играть с геймпада на телевизоре. На тот момент мне казалось, что там все довольно просто или как с обычными играми.

Давайте соберем наши требования:

  1. Возможность запускать Minecraft с игрового сервера со Steam.

  2. Играть мы должны через геймпад.

  3. По возможности не должно быть зависимости от внешних Minecraft-серверов.

Схема взаимодействия будет выглядеть по нашим планам так:

        ---
config:
  securityLevel: loose
  startOnLoad: true
  view:
    pan:
      enabled: true
    zoom:
      enabled: true
      initialScale: 2
      maxScale: 10
      minScale: 0.1

---
sequenceDiagram
    participant Игрок
    participant SteamLink as Steam Link (ТВ)
    participant SteamServer as Steam Сервер
    participant MinecraftServer as Локальный Minecraft Сервер

    Игрок->>SteamLink: Подключает геймпад (USB/Bluetooth)
    Игрок->>SteamLink: Запускает приложение Steam Link
    SteamLink->>SteamServer: Установка соединения (Remote Play)
    SteamServer-->>SteamLink: Подтверждение соединения
    SteamLink->>SteamServer: Запрос интерфейса Steam (Big Picture)
    SteamServer-->>SteamLink: Передача видеопотока интерфейса
    SteamLink-->>Игрок: Отображение интерфейса Steam на ТВ
    Игрок->>SteamLink: Выбор Minecraft в библиотеке Steam
    SteamLink->>SteamServer: Команда запуска игры
    SteamServer->>MinecraftServer: Проверка/запуск локального сервера Minecraft
    MinecraftServer-->>SteamServer: Сервер готов
    SteamServer->>SteamServer: Запуск клиента Minecraft
    SteamServer->>SteamLink: Начало трансляции игры (видео + аудио)
    SteamLink-->>Игрок: Отображение игры на ТВ

    loop Игровой процесс
        Игрок->>SteamLink: Ввод с геймпада (кнопки, стики)
        SteamLink->>SteamServer: Передача ввода по сети
        SteamServer->>MinecraftServer: Обработка ввода в игре
        MinecraftServer-->>SteamServer: Обновление состояния игры
        SteamServer->>SteamLink: Обновление видеопотока (новый кадр)
        SteamLink-->>Игрок: Отображение обновлённой картинки
    end
    

Рис. 1 — Minecraft

На старте у нас уже должно быть:

  1. Настроенный сервер или VM со Steam и настроенными драйверами видеокарты. Можно и без видеокарты, но конечный результат не гарантирован :).

  2. Геймпад.

  3. Устройство для игры (например, телевизор), на котором уже установлен Steam Link.

  4. Базовые знания программирования и OS Linux. Можно делать по аналогии и это только приветствуется.

Minecraft

На сервере вместе со Steam нам необходимо сначала запустить лаунчер для Minecraft. Я установил PolyMC.

flatpak install flathub org.polymc.PolyMC

Создаем автономный аккаунт и добавляем сборку Minecraft. Для проверки Вы можете запустить игру, но играть полноценно не сможете, так как требуется соединение с серверами, которых у нас пока нет. Также запуск осуществляется через лаунчер PolyMC, а не Steam.

В PolyMC нужно установить моды и для этого устанавливаем Fabric Loader → 0.18.3, а затем моды:

  1. Fabric API → 0.141.4 (загрузчика модов Fabric)

  2. Framework → 0.13.11 (дополнительная библиотека-фреймворк)

  3. Controllable → 0.25.7 (управление через геймпад)

Как оказалось версии очень важны и для моего случая они были именно такими. Также нам нужно узнать версию Minecraft внутри PolyMC (для уверенности):

$ ls ~/.var/app/org.polymc.PolyMC/data/PolyMC/instances/
1.21.11  instgroups.json #1.21.11 - наша версия.

Теперь нам необходимо запустить сервер Minecraft, чтобы указать его в лаунчере. Запускать будем через Docker . Создаем необходимые папки и файлы:

mkdir config_minecraft
touch docker-compose.yaml

Редактируем через nano docker-compose.yaml:

services:
  mc-server:
    image: itzg/minecraft-server:latest
    container_name: mc-server
    ports:
      - "25565:25565"
    volumes:
      - ./config_minecraft:/data
    environment:
      EULA: "TRUE"
      VERSION: "1.21.11" # Должен совпадать с версией в PolyMC
      MEMORY: "4G"
    restart: unless-stopped

Запускаем и переходим в PolyMC, выбираем нашу сборку, выбираем редактирование серверов и там добавляем наш сервер выше с адресом 127.0.0.1:25565. Теперь мы можем запустить игру и проверить игру в действии. Внутри игры: Настройки -> Настройки графики -> Полноэкранный режим: Вкл.

Steam

На стороне Steam добавляем игру как игру не из Steam и выбираем любую программу, так как далее будем исправлять ее свойства. Заполняем:

  1. Name: Minecraft.

  2. Target: "/usr/bin/flatpak".

  3. Start in: /usr/bin/.

  4. LAUNCH OPTIONS: run --branch=stable --arch=x86_64 --command=polymc org.polymc.PolyMC -l "1.21.11".

  5. Картинки для красивого отображения в библиотеке игр Steam берем с steamgriddb.

  6. Controller: Disable Steam input.

  7. Compatibility: проверяем, что чек-бокс отжат для Force the use of a specific Steam Play compatibility tool.

Итог

Теперь Minecraft запускается на нашем сервере и мы можем играть через геймпад.

Ссылки:

  1. Как запустить игровой сервер?

  2. Зачем нужен собственный сервер в 2025?

  3. Как установить Proxmox?

  4. Как установить Docker?

  5. Как запустить прокси-сервер для сервисов?

  6. Как установить драйвера NVIDIA в Linux?