Плывёт в облачках Спектрум в очках

Технологический прогресс — весёлая штука. Каких-то двадцать лет назад народ копировал друг у друга игры на кассеты/дискеты, чтобы поиграть в свежий релиз Гилла Билберта. Сейчас, за определённую плату, можно просто пойти в кафешку/пиццерию с вайфаем, достать из сумки/кармана джойстик и прямо на телефоне/планшете сыграть в Assassin's Creed. Что, не нравится Крид? Ой, да пожалуйста — Serious Sam 3! Batman Arkham Asylum!

Современное игровое сообщество со страшной силой было захвачено таким явлением, как «стриминг игр», он же cloud gaming. Суть его проста: при наличии более-менее годного интернета к вам на девайс передают видео игры, которое в это время обрабатывается на (не)дальнем серваке. Вы же, в свою очередь, можете ею управлять, как вам заблагорассудится — и сервак на это вполне умеет реагировать.

Собственно, возникла идея — а есть ли смысл такое пробовать на Спектруме, с минимальными затратами? Идея, конечно, больная на всю голову, но уже и монетизацию обсуждали, и использование UnrealSpeccy в качестве оболочки для прогона ретроигр обсуждали, и Интернет на Спектруме обсуждали (причём двести раз), так что почему бы и нет?

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

Как оно есть

Существует несколько сервисов клауд-гейминга, один из которых даже оперирует не в какой-то там загранице, а в России, и имя ему Playkey. Конечно, есть куда более популярный сервис, Onlive, но на нём я сильно заострять внимание не буду. Просто расскажу, в чём плюсы и минусы того, что вы поддерживаете крупных дядек, которые могут обслуживать одновременно 1000 играющих:

Плюсы:
  • сверхкрутое железо вовсе необязательно, главное, чтобы оно умело более-менее адекватно прогонять видео с Ютуба;
  • если работники сервиса действительно хорошо постарались, то играть можно не только с компьютера, но и с любых других девайсов, в том числе и с холодильника с мониторчиком (Onlive так вообще выпустил отдельную консоль специально для HD-теликов);
  • можно смотреть как играют другие — опять же, если сервис позволяет;
  • можно попробовать какие-нибудь игры за бесплатно, но только на определённое время и без возможности сохранить прохождение.

Минусы:
  • несмотря на то, что железо для прогона видео может быть слабым, ему полюбому нужен будет хороший интернет;
  • даже с хорошим интернетом могут быть подглюки;
  • за удовольствие надо платить, в некоторых случаях — десять баксов в месяц (а сэкономив за три месяца, кстати, можно купить один крутой блокбастер);
  • невозможность навешивания на игру модов, поскольку сервак не твой и ниипёт.

В связи с последней причиной, клауд-гейминг был бы весьма… жёстким явлением, если бы господа из nVidia не придумали сервис Shield. Который стримит игори прямо с компа пользователя. Но за клиент тоже надо платить. Вернее, надо было, пока одни кулибины не разобрали программы от nVidia на мускулы и косточки и не придумали Limelight — бесплатную альтернативу Shield'у, с открытым исходным кодом. Впрочем, обе программы пойдут у вас только в том случае, если на сервере стоит видеокарта от nVidia, желательно GeForce — иначе простите, никак.

Другие кулибины, из Китая, пошли другим путём и сделали набор программ, который позволяет стримить вообще любые игры. С любого компьютера, вне привязанности к видяхам и прочему. Проект получил весьма… говорящее название — GamingAnywhere. Конечно, для того, чтобы привести облако в товарный вид, нужно (не)много поработать — сделать оболочку, сделать нормальный интерфейс для клиента, причём как на Windows, так и на Android…

Зачем оно надо

К одному серваку GamingAnywhere может одновременно подключиться несколько человек-клиентов — все они смотрят на один экран, управляют одной клавиатурой и одной мышкой; и из этого можно прийти к выводу, что… ну, что теперь игрокам не придётся топтаться за одной клавиатурой, пытаясь обогнать друг друга в BMX Simulator'e. Есть мультиплеер!

Вернее, относительно Спектрума, он был ещё в EmuZWin'e, но тут есть несколько заковырок. Первая — эмуль не обновлялся уже достаточно давно. Второе — игра по сети пройдёт гладко в том случае, если она полностью загружена в память; если же игра требует несколько подзагрузок (читай — 75% игр на TR-DOS), то один из играющих вместо новой части игры получит кучу ярких, разноцветных и красивых глюков на экране.

Ну и третье, пожалуй, самое паршивое, что может случиться в EmuZWin'e — рассинхрон. Desync'и случаются в том случае, если кое-какие данные не дошли до ХОТЯ БЫ одного из играющих вовремя, в результате чего один игрун у себя на экране видит одно, другой — другое, хотя управление от обоих поступает вовремя. Ровно с тем же самым сталкивалась масса ретрогеймеров, которые пользовались протоколом игры по сети под (действительно мерзким) названием Kaillera.

В случае с облаком, ВСЕ игроки играют буквально на одном компе, что сразу же убирает возможность рассинхрона. Вторая проблема с отсутствием поддержки TR-DOS так вообще решается запихиванием в окно облака UnrealSpeccy, желательно с парой уже загруженных дискеток. А ещё лучше — с современно выглядящим меню/оболочкой.

Ну и, если хорошенько подумать, игроки не должны крючить пальцы как будто они в самом деле делят клавиатуру с близстоящим другом: грамотно переделав программу-клиент и, по возможности, сервер, игрок даже может не выбирать управление, поставив своё собственное на ВСЕ доступные игры — что особенно полезно для новичков, которые не могут сказать, чем Курсор-джойстик отличается от Кемпстона и точно не смогут скрючить пальцы под QAOPM или QAOPSpace. Просто грузится эмуль со снапшотом, в котором нажатие на Enter сразу же начинает игру. Всё!

С чем придётся столкнутся, или немного технической инфы, которую никто не поймёт

Само собой, на месте старых проблем классического мультиплеера в EmuZWin'e появляются новые — размытие картинки, например. С ним придётся пошаманить — взять планшет, открыть на нём клиент GamingAnywhere и попытаться найти оптимальный битрейт видео, дающий хоть какой-то баланс между скоростью и качеством. У меня лично это битрейт в 50000 бит в секунду с 25 FPS — притом, что крупные сервисы клауд-гейминга требуют под себя минимум 2 мегабита в секунду для хоть какого-то FullHD…

А, ещё роль играет размер видео. Для PC он не настолько актуален, но тестирование с планшем на Android 4.2 показало, что чем больше размер передаваемого видео, тем больше у клиента GA есть возможность крашнуться во время ОЧЕНЬ динамичных моментов (несмотря на то, что можно присоединиться ещё раз за две-три секунды) — например, во время показа демок.

Есть ещё один баг, который нельзя вылечить полностью — задержка между нажатием кнопки и показом картинки на экране клиента. Конечно, первую скрипку здесь играет то, насколько далеко клиент находится от сервака, но по этому поводу есть небольшой прикол… Даже если комп-сервер и планшет-клиент находятся в непосредственной близости друг от друга, это совсем не значит, что лаг на последнем будет составлять 0,01 секунду! Скорее, 0,3 секунды, потому что ну не успевает видео обрабатываться настолько быстро и компом, и планшетом — и это наглядно видно, если управлять игрой с последнего, но тем временем смотреть на монитор первого. Передача нажимаемых кнопок — мгновенная.

Хотя, если подумать, чуть меньше, чем полсекунды задержки, это ещё достаточно быстро. А учитывая то, что на Спектруме игр, где от игрока требуется фреймовая реакция, не так уж и много, то насчёт лага можно сильно не переживать.

Конкретно у GamingAnywhere есть пока не обследованная полностью проблема — задержка звука на две-три секунды. Такое происходит, если использовать в качестве звукового кодека lame (помимо также имеющихся pcm и opus), но виндовый клиент я проверял только с ним, а андроидный клиент напрочь отказывается принимать звук, не перекодированный lame'ом.

Как это можно организовать

Что ж, с проблемами видео разобрались, теперь подумаем, как можно причесать клиент таким образом, чтобы можно было его пускать в люди. Наиболее оптимальной схемой организации нашего малэнкого, но горррдого сервиса на данный момент мне кажется следующая:
  • В программе-клиенте есть список доступных облачных серверов для игры, под названием сервера написано название игры, которая сейчас запущена.
  • Игрок, после логона, может в любое время посмотреть на то, как играют другие.
  • Есть два, три или четыре слота для играющих (для игр с хотситом типа Chaos, Поле Чудес или Scorched Earth можно расширить количество слотов), которые могут занять один из них, или освободить, по своему желанию… или по желанию админа.
  • Управление игрока, опять же, такое, какое настроил его игрок у себя в клиенте — хотя внутри эмулятора управление будет разным в зависимости от выбранного слота и игры.
  • Можно в любое время, будучи играющим, вернуться в меню выбора игр — но если играющих двое, то они оба должны подтвердить свой выбор.
  • В программе-клиенте должен быть отдельный чат для согласования вопросов в духе «кто с кем и во что будет играть».

Вместо заключения

Ну вот, такая у меня дурацкая затея. Это было бы, конечно, офигенно, но я прекрасно понимаю, что мало кто будет набегать на сервак с показом видео только ради того, чтоб поиграть с кем-то в Спектрум. Можно просто взять сырые клиент и сервер GamingAnywhere, скормить первому UnrealSpeccy с кучей дисков и попытаться поиграть во что-нибудь в своей компании, без незнакомых людей… Хотя ВДРУГ у данного эксперимента наберётся приличное количество ретрофанов, в частности, из Англии, или ещё откуда-нибудь?

Пишите своё мнение по этому поводу. Помидорами кидаться разрешаю.

19 комментариев

avatar
Круто! Я потом еще раз прочитаю — слишком много букв.
  • nyuk
  • +1
avatar
brightentayle , статья хорошая, пишешь ты симпатично, обьёмно.
А вот затея таки не взлетит.
ибо спек эмулируют уже даже на javascript в браузере, пусть ещё и не совсем идеально, но тем не менее.
и сайтов таких можно вспомнить минимум два
  • VBI
  • 0
avatar
Можно на самом деле использовать эту шнягу в комбинации с другими платформами, которые тяжело настроить новенькому. Ц64, Амига, тыры-пыры… Найти бы только под каждого эмули с такой же глубокой настраиваемостью, как в Анрыле.
avatar
И вообще, есть же смысл в мультиплеере?
avatar
вообще — конечно да :)
в batty лупится :))
avatar
Ну вот. =)
avatar
А идея имеет право на жизнь. Я бы порубился бы с удовольствием сейчас с кем-нибудь в Last Battle, Laser squadron, или lord of chaos
avatar
Стратегии — это святое. Главное, чтобы игра не затянулась =)
avatar
Для hot-seat игр рассинхрон не страшен (вспомнить бы их все? =)
Для текстовых adventure — тоже =)

А вот в Room Ten было бы круто сыграть!
avatar
Ну да, хотситовые игры лучше брать в том случае, если это какое-нить Поле Чудес, с чем люди однозначно знакомы. А насчёт игр с одновременной поддержкой двух игроков вариантов масса с хвостиком: Target Renegade, TMNT2, Ikari Warriors, Bloodwich, Headball…
avatar
Идея хорошая, но настройка и поддержание серверной инфраструктуры требует бабла. Отсюда вопрос — какова монетизация?

Так-то я себе вижу систему в таком виде:
1. Платформ сразу же больше одной. Иначе аудитория маленькая.
2. Отобраны только самые адово-увлекательные игры на двоих для каждой платформы.
3. Месячная подписка за бабло.
4. Турниры как маркетинговый инструмент.

Теперь сложные вопросы:
1. А будет ли спрос? То есть, можно ли добиться хотя бы самоокупаемости? Тут нужно искать данные и считать.
2. А что делать с копирайтом?
avatar
Кстати, да, насчёт монетизации стоит подумать — а думать тут придётся долго, чтобы сервис не выглядел наглым сдиранием денег с населения. Как вариант, пока единственный сервак ещё живёт, можно просто выделить на него небольшую часть денег со своей зарплаты (этим принципом и пользуется админ игрового проекта солянко.рф).

Насчёт сложных вопросов — всё, что я могу сказать по этому поводу, так это:
1) Насчёт спроса пока ничего неизвестно. Если ограничить сервис Рашкой и близлежащими странами, то аудитория может собраться небольшая, по крайней мере, как я думаю. Можно отдельно сделать английский сервак — у них, в принципе, любят Спектрум, и там даже было сделано несколько платных эмуляторов, так что, там наши шкоды нам простят.
Но всё равно жизненно необходимо, чтобы народ знал про то, что такое существует.

2) По поводу копирайтов варианта три:
2а) Забить на получение денег, и делать игры фри-ту-плейными.
2б) Делать только часть игр фри-ту-плейными, особенно те, которые делались по лицензии. Чебурашки-ниндзя — наглядный пример.
2в) Контактировать авторов и спрашивать у них, а можно ли воспользоваться игрой ради малого бизнеса (Codemasters при этом сразу же вычёркивается из списка).
avatar
1. Боюсь, что фритуплей сути не изменит, разрешение всё равно придется получать.
2. «Наглое сдирание денег с населения» — единственный рабочий вариант монетизации, все остальные — благотворительность, а она не работает в долгосрочной перспективе :)
avatar
Тогда поиски оптимального решения будут доооолгими… =)

… хотя, чего ещё я от этого должен ожидать?
avatar
Вариант по поводу копирайта:
Отбросить старье и двигать новые игры, делать свои игры и предлагать поиграть в них. Удобно, с инструкцией, в т.ч. и делать игры на двоих/троих/четверых.
avatar
Дельная мысль. Такой подход сильно мотивирует эти самые новые игры разрабатывать.
Правда, ностальгирующих среди аудитории будет уже сразу же сильно меньше. Если вообще аудитория останется, как таковая.
avatar
Для ностальгирующих запилить p2p функцию между эмуляторами и не трахать мозг.
avatar
Дайвер правильно говорит, тока есть два… даже три вопроса:
1) кто будет её вообще запиливать, если большей части разрабов (наших, во всяком случае) интересна не игра по сети, а близкая к идеалу эмуляция железа?
2) как быть, если хочется захостить игру НЕ внутри локалки (что в некоторых случаях даже бессмысленно), а у компа чисто динамический айпишник?
3) как быть с кроссплатформенным мультиплеером?
avatar
Так, ну а насчёт монетизации самое тупое, что я могу придумать — так это… так это слегонца модифицировать бизнес-модель Онлайва с его Playpack'ом. То есть, позволить игроку за смешную цену сделать подписку на месяц/неделю. При этом если у хотя бы одного из играющих нет подписки, больше 10-15 минут играть низя.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.