Уже много написано про технологию NVIDIA GameStream, очень познавательная статья на habr
Обзор:
GeForce Experience передает игры с ПК на портативное игровое устройство NVIDIA SHIELD, поэтому вы сможете играть в свои любимые игры в любом уголке дома или даже вне дома. Играй в Borderlands 2 , не вставая с постели. Или продолжи игру Skyrim с того момента, где ты остановился в последний раз, в местном кафе.
Ну почему же обязательно догорая консоль а если на Raspberry PI ???
Установка на NVIDIA GameStream на Raspberry PI
На потребуеться Limelight Embedded
wget https://github.com/irtimmer/moonlight-embedded/releases/download/v1.2.2/libopus.so
wget https://github.com/irtimmer/moonlight-embedded/releases/download/v1.2.2/limelight.jar
далее все просто устанавливаем с сайта GEFORCE EXPERIENCE
Настраиваем в интуитивно понятном вареанте
Проверяем связь между ПК и Raspberry
java -jar limelight.jar -list
Устанавливаем соединение, при запуске данной комманды вы полусите PIN **** который вводиться на ПК.
java -jar limelight.jar -pair 192.168.0.91
Запуск
java -jar limelight.jar Stream -720 -60fps 192.168.0.91 -app "World Of Tanks"
Дополнительно список комманд
Actions:
map - Create mapping file for gamepad
pair - Pair device with computer
stream - Stream computer to device
discover - List available computers
list - List available games and applications
help - Show this help
Mapping options:
-input <device> Use <device> as input
Streaming options:
-720 Use 1280x720 resolution [default]
-1080 Use 1920x1080 resolution
-width <width> Horizontal resolution (default 1280)
-height <height> Vertical resolution (default 720)
-30fps Use 30fps
-60fps Use 60fps [default]
-bitrate <bitrate> Specify the bitrate in Kbps
-packetsize <size> Specify the maximum packetsize in bytes
-app <app> Name of app to stream
-nosops Don't allow GFE to modify game settings
-input <device> Use <device> as input. Can be used multiple times
[default uses all devices in /dev/input]
-mapping <file> Use <file> as gamepad mapping configuration file
-audio <device> Use <device> as ALSA audio output device (default sysdefault)
-localaudio Play audio locally
Ну вот вроде и все. Но как то это, не красиво. Одним словом не зачетно.
Пошли дальше - Делаем игровую консоль из Raspberry PI
sudo apt-get -y update && sudo apt-get -y upgrade
Устанавливаем веб сервер для управления приложениями
sudo apt-get install -y nginx php5-fpm php5-cgi php5-cli php5-common
Добавляем пользователя и назначаем права
sudo useradd www-data
sudo groupadd www-data
sudo mkdir /var/www
sudo chmod 775 /var/www -R
sudo chown www-data:www-data /var/www
sudo -s
rm /etc/nginx/sites-available/default
echo ' server {
listen 80; ## listen for ipv4
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/;
location / {
root /var/www/;
index index.php index.svg index.html index.htm;
}
## Parse all .php file in the /var/www directory
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
## Disable viewing .htaccess & .htpassword
location ~ /\.ht {
deny all;
}
}
' > /etc/nginx/sites-available/default
Если нет линка
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
Изменить sudo nano /etc/php5/fpm/pool.d/www.conf
Исправить
listen = /var/run/php5-fpm.sock
на
listen = 127.0.0.1:9000
Перезагрузка сервисов nginx и php5-fpm
sudo service php5-fpm restart
sudo service nginx restart
Проверка работы php5
echo '
<?php phpinfo(); ?>
' > /var/www/info.php
Создаем PHP файл для запуска World Of Tanks /var/www/WorldOfTanks.php
<?php
$port = 60321;
$sock = fsockopen('tcp://127.0.0.1', $port);
fclose($sock);
echo "OK";
?>
Далее делаем index.html и вставляем в него кнопку ссылаясь на скрипт WorldOfTanks.php
Устанавливаем демон xinetd, это позволит запускать скрипты sh и bash
sudo apt-get -y install xinetd
sudo nano /etc/services
Вписать строку в самый конец файла
WorldOfTanks 60321/tcp # World Of Tanks
Описываем конфигурацию демона.
sudo nano /etc/xinetd.d/WorldOfTanks
# default: on
# description: my test service
service myService
{
disable = no
id = worldoftanks-stream
socket_type = stream
protocol = tcp
bind = 127.0.0.1
wait = no
user = pi
server = sudo -s /bin/bash
server_args = /home/pi/WorldOfTanks.sh
}
Создаем файл WorldOfTanks.sh для запуска limelight
echo '#!/bin/bash
cd /home/pi
sudo killall -TERM midori-run.sh
sudo killall -9 midori-run.sh
sleep 2
/usr/bin/java -jar /home/pi/limelight.jar Stream -720 -60fps 192.168.0.91 -app "World Of Tanks" &
' > /home/pi/WorldOfTanks.sh
Теперь можно удаленно зайти на Raspberry и запустить игру. Но как запустить это на Raspberry не в консольном режиме.
Продолжение дальше.
Устанавливаем браузер midori
sudo apt-get install -y matchbox midori gstreamer1.0
Добавляем функционал
sudo apt-get install -y ttf-mscorefonts-installer unclutter build-essential git-core x11-xserver-utils xterm mpg123 libx264-dev ffmpeg libav-tools mc mediainfo
sudo apt-get install -y libfontconfig1-dev libdbus-1-dev libfreetype6-dev libudev-dev libicu-dev libsqlite3-dev libxslt1-dev libssl-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-good gstreamer0.10-plugins-bad libraspberrypi-dev libpulse-dev libx11-dev libglib2.0-dev libcups2-dev freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev libmysqlclient-dev firebird-dev libpng12-dev libjpeg62-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev
Создаем скрипт запуска браузера midori
echo '#!/bin/bash
xset -dpms
xset s off
xset s noblank
unclutter &
matchbox-window-manager -use_titlebar no &
while true;do
/usr/bin/midori -e Fullscreen -a http://localhost
done
' > /home/pi/midori-run.sh
Устанавливаем права на исполнение и автоматический запуск
sudo chmod +x /home/pi/midori-run.sh
Вписываем скрипт в авто запуск
sudo nano /etc/rc.local
sudo xinit /home/pi/midori-run.sh
Что получилось