Как правильно организовать онлайн-игры для удаленного участия?

Всем привет! <br/> <br/> У меня возникла идея оборудовать дома компьютер с одной или двумя видеокартами, чтобы создать несколько виртуальных машин, к которым можно было бы подключаться с домашних ноутбуков и одновременно играть в различные игры. <br/> <br/> Цель состоит в том, чтобы несколько человек могли играть одновременно, а не соревноваться за доступ к одному компьютеру. Кроме того, это позволит сократить количество копий игр, так как современные игры занимают от 100 до 150 ГБ, и места на диске становится все меньше. <br/> <br/> Я рассматривал возможность покупки серверной материнской платы с двумя процессорами и 128 ГБ оперативной памяти, чтобы установить в нее пару видеокарт. Вопрос в том, оправдает ли себя такая затея? О_о
  • 6 февраля 2025 г. 10:24
Ответы на вопрос 2
Организация онлайн-игр для удалённого участия — интересная задача, и ваша идея имеет свои плюсы и минусы. Давайте разберём основные аспекты.

### Плюсы

1. **Многопользовательское использование**: Возможность подключаться к одной и той же машине с разных устройств позволяет избежать конфликтов за доступ.
  
2. **Экономия пространства**: Вместо множества игр на каждом компьютере, вы можете установить их на одном сервере, что сэкономит место на диске.

3. **Централизованное управление**: Легче обновлять игры и следить за их состоянием из одного места.

### Минусы и вызовы

1. **Производительность**: Игры, особенно современные, требуют значительных ресурсов. Хотя серверная материнская плата с двумя CPU и 128 ГБ ОЗУ — хорошее решение, нужно помнить, что для каждой виртуальной машины потребуется достаточное количество VRAM и CPU-ресурсов. Если ваша игра требовательная, один GPU может не справиться с несколькими инстанциями.

2. **Лицензирование**: Убедитесь, что у вас есть лицензии на игры, которые вы планируете устанавливать. Некоторые игры могут запрещать запуск на виртуальных машинах или поддерживать лимит на количество одновременных подключений.

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

4. **Настройка и обслуживание**: Виртуализированные игры могут потребовать больше усилий по настройке (например, работа с драйверами и совместимостью игр с виртуальными окружениями).

5. **Реальная задержка**: В зависимости от технологии виртуализации и сети, могут появиться задержки, которые могут повлиять на игровой процесс. Это особенно критично для экшен-игр и шутеров.

### Альтернативы

- **Облачные игровые платформы**: Существуют готовые решения, такие как NVIDIA GeForce NOW, Google Stadia и другие, которые позволяют играть в игры без необходимости иметь мощное оборудование.
  
- **Общий сервер**: Возможно, стоит рассмотреть создание сервера, на котором можно было бы хостить только определённые многопользовательские или кооперативные игры, а не пытаться виртуализировать каждую игру.

### Рекомендации

1. Протестируйте несколько конфигураций на меньшем масштабе, прежде чем инвестировать в полноценный сервер.
2. Убедитесь, что ваша сеть сможет поддерживать несколько потоков данных без задержек.
3. Рассмотрите возможность использования облачного решения (при достаточной скорости интернета) как более простую и эффективную альтернативу.

В целом, ваша затея звучит интересно и амбициозно, но требует тщательного планирования и оценки ваших ресурсов.
Очевидно вам нужен windows (с linux ситуация сложнее). 

В общем случае не получится! в НЕКОТОРЫХ конфигурациях или для некоторых игр/программ, может получиться, но часто очень высокой ценой.
Причины:
* Ни одна система виртуализации не предоставляет адекватный механизм виртуализации GPU ускорителя, это искусственно созданная ситуация из-за монополии производителя видеоускорителей, ограничения закладываются в драйверах. Разрешено это делать только на серверных операционных системах и только со специализированным серверным железам, где цены до бума ИИ были 10х от десктопных, сравнимой производительности , а сейчас еще и не доступны к покупке по причинам искусственно заниженных объемах производства.
Штатно системы виртуализации симулируют простой видеоадаптер, без поддержки 3d ускорения... во времена windows 7 у virtualbox была кастрированная поддержка, и даже что то работало, но упор там был сделан на приложения а не игры, с большинством игры было все плохо. Сейчас этот механизм окончательно сломан и не работает.
Некоторые системы виртуализации, типа qemu/kvm и основанных на нем, позволяют пробросить весь pcie контроллер внутрь (в биосе должна быть включена поддержка IOMMU, и я видел биосы где виртуализация была зарублена искусственно) и с некоторыми адаптерами это даже работает в windows (я запускал win8 и есть примеры что это работает на win10, первое что нагуглил, точно помню были какие то хаки драйверов, отключающие проверки)
За это придется платить от 10% производительности до 30% процессора (самого важного - single thread) особенно это заметно в многопользовательских играх, где latency критична. На моем старом железе помню тогда fps падал с 30-40 до 15-20. Т.е. повторю, по синтетическим тестам все будет не так страшно, но когда дело дойдет до реальной эксплуатации, то 'в худшем' станет очень заметным.

* Есть способ, который я рекомендую , которым я пользовался с 10 лет назад несколько лет да и сейчас, - это multiseat без виртуализации. К одной физической машине подключаются мониторы, клавиатуры и мышки по количеству рабочих мест. Для рабочих ревизий windows есть софт - ibik aster, который позволяет сделать до 10 рабочих мест (не требуя по одной физической видеокарте на рабочее место) а для linux - штатный функционал xserver не wayland (loginctl для его настройки, к сожалению на каждое рабочее место требуется физическая видеокарта, это обходится нетривиальными методами, через xserver-в-окне xephyr) и это шикарно работает, без лагов удаленного рабочего стола, без затрат на виртуализацию и прочего.
Но! проблемы создает софт, чаще из лицензионных соображений, который не желает работать одновременно в нескольких экземплярах. Например steam на windows детектирует свою запущенную копию и не запускается повторно, это обходится простыми шевелениями с process explorer и полагаю можно найти или написать софт (он реально простой, думаю его и chatgpt напишет, только запрос составить по инструкции использования process explorer). Но те же самые проверки могут проводить игры, вот буквально я столкнулся с проблемой и так ее не решил - throne and liberty даже в linux (где сессии wine у каждого пользователя своя песочница) подвисает именно при одновременном запуске, потому что каким то образом один инстанс затрагивает соседнюю видеокарту, как не настраивай). Очевидно что разные игры должны работать без проблем, в прошлом я так много игр запускал, в т.ч. многопользовательские.
Что такое один рабочий компьютер на нескольких человек тоже нужно понимать, общая флешка, мешающее время обслуживание (перезагрузки, установки программ и т.п.) все это мелочи но о них тоже нужно не забывать. Права на каталоги можно в принципе настроить так что пользователи не будут друг другу мешать даже если захотят.

* если речь о linux хосте и linux госте, есть spice проброс видеоадаптера по сети в т.ч. внутрь виртуалки, я лично не пользовался, говорят работает, но особого смысла в этом нет, почти никаких бонусов такой подход не принесет, поэтому наверное и мало кто изучает.

upd. удаленный гейминг - это еще одна прослойка, понижающая latency и качество изображения. Лучший из известных мне это steam link, терминалом могут работать даже слабые планшетники.
Похожие вопросы