• 云游戏学习与实践(二)——安装GamingAnywhere


    安装GamingAnywhere

    一.GamingAnywhere项目

    GamingAnywhere是一个开源的实现云游戏的引擎,并且高效、跨平台、易扩展、可调配。 

    GitHub地址:https://github.com/chunying/gaminganywhere

    GamingAnywhere官网:http://www.gaminganywhere.org

    下图是GamingAnywhere(云游戏)的大致流程描述:

         

    a.客户端(Client/Users):登录客户端,在提供UI界面选择游戏。并且在成功连上游戏后,与游戏服务器交互时传递控制信息命令,并对传回来的视频流进行编码;

    b.端口服务器(Portal Server):类似于负载均衡服务器,根据服务器状况对请求接入的用户进行端口转发,动态平衡游戏服务器的负载;

    c.游戏服务器(Game Server):根据端口服务器转发过来的连接,虚拟化游戏进程,将运行游戏的视频编码后传输给客户端。

    二.GamingAnywhere的搭建

    1.准备工作

    材料:VMware Workstation虚拟机软件,GamingAnywhere源代码(gaminganywhere-master.zip格式),64位Ubuntu LInux 16.04的ISO镜像文件

    根据以上材料安装完虚拟机,并装入一个Ubuntu64位系统,

    推荐设置:硬盘20G;内存:1G;网络:桥接,并在开机装入VMTools以上均有大量教程,不在细讲。(PS:我新建的用户名为:gdy)

    将下载好的GamingAnywhere源代码存放至/home/test/downloads文件夹下,并使用unzip命令进行解压缩

    unzip gaminganywhere-master.zip

    解压缩后,进入目录并使用ls命令,目录结构如图所示:

    2.搭建GamingAnywhere

    安装GamingAnywhere编译所需要的依赖项

    a.更新软件源

    sudo apt-get update

    b.安装依赖项(再次提示,适用于Ubuntu64位)

    sudo apt-get install -y patch make cmake g++ pkg-config libx11-dev libxext-dev libxtst-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libpulse-dev libasound2-dev lib32z1

    c.编辑~/gaminanywhere-master/env-setup文件

    vi env-setup

    修改其中的GADEPS变量值如下红色标注,你可根据你的具体解压缩情况修改,我是直接解压到在/home/test/gaminganywhere-master/目录,所以修改后的结果如下(修改地方已用红色标出):

    1 #!/bin/sh
    2 export GADEPS=/home/test/gaminganywhere-master/deps.posix
    3 export PKG_CONFIG_PATH=$GADEPS/lib/pkgconfig:/opt/local/lib/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig/:/usr/lib/pkgconfig
    4 export PATH=$GADEPS/bin:$PATH

    编辑完成后,在当前目录运行是的编辑的变量立即生效

    source env-setup

    d.进入~/gaminganywhere-master/deps.src并执行make命令

    1 cd ./deps.src
    2 sudo make

    最终make结束后应该是没有任何错误的,效果如下图,上述步骤有遗漏编译时间长达8分钟左右,如果少很多,还有make error,那说明编译失败,请查看是不是之前步骤的遗漏。

    e.make完成后进入ga目录并依次执行如下命令:

    1 cd ../ga
    2 make all 
    3 make install

    运行完make all和make install后也不会有什么make error,出错同上。

    f.退出到gaminganywhere-master目录,查看文件夹中应该多出了./bin目录,进去查看一下:

    1 cd ../bin
    2 ls

    列出的已经编译完成的二进制文件如下:

    其中可执行文件:

    ga-client:用于执行云游戏的客户端命令工具;ga-server-periodic是运行云游戏的服务端工具,用于开启P(周期录屏的方式运行云游戏服务端)。

    g.将gaminanywhere包含的动态依赖库文件装载入系统变量

    编辑文件gaminganywhere.conf:

    vi /etc/ld.so.conf.d/gaminganywhere.conf

    文本中的内容为:

    /home/test/gaminganywhere-master/deps.posix/lib

    编辑完成就:wq保存退出,查看一下刚才的目录:

    ls /etc/ld.so.conf.d/

    目录如下:

    完成之后一定要在运行ldconfig使得该目录下的库重新被导入系统变量:

    ldconfig

    至此,云游戏服务端已经搭建完毕。

    3.准备云游戏客户端(Windows或Android)

    云游戏的客户端可直接使用官方已经提供好的预编译的二进制版本,下载到本地直接就可以启动,如还是希望自己编译,可参考官方文档,可查看如何编译Windows下的云游戏:

    3.1 Windows云游戏客户端

    下载地址:http://www.gaminganywhere.org/dl/gaminganywhere-0.8.0-bin.win32.zip

    下载完成解压缩到你的目录,我以解压到F盘为例,解压路径最终为F:gaminganywhere-0.8.0。

    3.2 Android云游戏客户端

    下载地址:http://www.gaminganywhere.org/dl/android/GAClient-v22-20150228.apk

    下载完成后,直接通过数据线导入手机安装手机端。

    三.准备一款Linux游戏

    我以Ubuntu的一款类似MineCraft的沙盒游戏MineTest为例,作为要启动的云游戏。

    MineTest下载方式不做重点介绍,具体的下载安装游戏的介绍链接地址如下:http://www.linuxidc.com/Linux/2016-07/133102.htm

    安装命令就两条:

    1 sudo add-apt-repository ppa:minetestdevs/stable
    2 sudo apt-get install minetest

    成功安装后应该可以直接通过Terminal运行后minetest直接启动游戏。

    游戏画面如图:

    四.启动云游戏

    1.第一步,启动游戏

    在Linux中新建终端Terminal,输入命令minetest运行游戏,此时游戏MineTest已启动,命令:

    minetest

    切记!启动之后不要关闭游戏窗口

    2.第二步,编辑配置文件,开启GamingAnywhere服务端

    在GamingAnywhere的路径中,有一个文件夹:~/gaminganywhere-master/bin/conf/,这个文件夹针对每一款云游戏进行了一定的配置,其目录如下:

    每次服务端启动都会读取云游戏的参数,其中一项就是其配置文件,其配置文件具有一定的规则,主要让服务端用于获取参数使用,例如本案例中,为minetest游戏创建一个独立的配置文件。

    我为配置文件命名为server.minetest.linux.conf,并在里面添加内容,首先编辑文件:

    vi server.minetest.linux.conf

    并在其中添加内容如下:

    # configuration for the openttd game
    # work with ga-server-periodic
    
    [core]
    include = common/server-common.conf
    include = common/controller.conf
    include = common/video-x264.conf
    include = common/video-x264-param.conf
    include = common/audio-lame.conf
    
    [ga-server-periodic]
    display = :0
    find-window-name = Minetest [Main Menu]
    
    enable-audio = true

    编辑完成后:wq保存,随后进入bin目录:

    cd /home/test/gaminganywhere-master/bin

    运行云游戏服务端:

    命令格式如下:ga-server-periodic {config}

    例如:ga-server config/server.x264+mp3.conf

    则本例中启动云游戏的命令为:

    ./ga-server-periodic config/server.minetest.linux.conf

    将成功运行云游戏服务端,云游戏的Server端Terminal将不断刷新如下图:

    3.第三步,开启客户端连接(以Windows客户端为例)

    在Windows记住刚才解压的二进制版GamingAnywhere的路径,我的是:F:gaminganywhere-0.8.0

    Windows + R键打开cmd,输入如下,进入GamingAnywhere客户端目录:

    f:
    cd ./gaminanywhere-0.8.0/bin

    由于需要使用Server端的IP地址作为启动客户端的参数,因此在Ubuntu中输入ifconfig,查看IP地址,如果是桥接模式,所以选择一个和宿主机在同一局域网能PING通的都可以:

    ifconfig

    显示如图:

    我的服务器端的IP地址为:192.168.1.164

    我用客户端进行了PING测试,发现PING通无误:

    打开云游戏客户端连接:

    命令格式如下:ga-client {config} rtsp://server-address:server-port/desktop

    例如:ga-client config/client.rel.conf rtsp://192.168.1.1:8554/desktop

    最后一步,开启客户端云游戏连接,cmd在刚才的目录中继续输入如下指令:

    ga-client.exe configclient.abs.conf rtsp://192.168.1.164:8554/desktop

    成功连接上云游戏:

    在客户端中随即连接上了服务器端的云游戏:

    同样的,在配置好安卓客户端后,在配置文件中进行设置,也可直接同时连接上云游戏:

    在安卓中设置好配置文件:

    选择操控板方式,然后点击Connect连接云游戏,同样可以在手机上以视频流的方式运行云游戏:

    五.小结

    以上就是云游戏的客户端以及服务端的安装以及展示,有问题欢迎留言评论探讨!

  • 相关阅读:
    【转载】nio介绍+原理+传统IO原理+与传统IO区别+案例
    【Ubuntu】制作执行脚本 | 打包一串命令顺序执行
    Ubuntu 使用教程集锦
    【转载】自定义地图数据瓦片化请求的一种实现方案
    【转载】ROS机器人程序设计 | 期末知识点大总结
    【转载】三维重建(三)相机参数标定与光束平差法(Bundle Adjustment)
    【阅读笔记】《大话数据挖掘》定义和功能
    【转载】C++对象成员与构造函数
    【转载】IP地址和子网划分学习笔记之《子网掩码详解》
    STM32的启动过程一
  • 原文地址:https://www.cnblogs.com/letcafe/p/cloudgame2.html
Copyright © 2020-2023  润新知