安装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/目录,所以修改后的结果如下(修改地方已用红色标出):

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

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

source env-setup

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

 cd ./deps.src
sudo make

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

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

 cd ../ga
make all
make install

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

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

 cd ../bin
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

安装命令就两条:

 sudo add-apt-repository ppa:minetestdevs/stable
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 = :
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./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 config\client.abs.conf rtsp://192.168.1.164:8554/desktop

成功连接上云游戏:

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

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

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

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

五.小结

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

云游戏学习与实践(二)——安装GamingAnywhere的更多相关文章

  1. Maven的学习资料收集--(二)安装m2eclipse插件

    在Eclipse中可以安装Maven插件,可以更方便的使用: 官网地址:http://www.eclipse.org/m2e/ 可以在线安装或者离线下载,之前在线安装总是失败,可能是网速的原因,找到了 ...

  2. dotnet Core学习之旅(二):安装IDE

    [重要:文中所有外链不能确保永久有效] >开发工具 高效的开发必然需要一个优秀的集成开发环境(IDE) 对于.NET Core 2.x可以使用包括但不限于以下IDE来进行开发. Visual S ...

  3. Weex学习与实践

    Weex学习与实践(一):Weex,你需要知道的事 本文主要介绍包括Weex基本介绍.Weex源码结构.初始化工程.we代码结构.Weex的生命周期.Weex的工作原理.页面间通信.boxmodel ...

  4. hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse

    生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...

  5. NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)

    摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ...

  6. 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

    转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...

  7. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  8. Android学习路线(二十四)ActionBar Fragment运用最佳实践

    转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...

  9. linux内核分析实践二学习笔记

    Linux实践二--内核模块的编译 标签(空格分隔): 20135328陈都 理解内核的作用 Linux内核[kernel]是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能 ...

随机推荐

  1. zookeeper 新手安装指南

    Zookeeper集群的角色:  Leader 和  follower  (Observer) zk集群最好配成奇数个节点 只要集群中有半数以上节点存活,集群就能提供服务 本事例采用版本:zookee ...

  2. 【论文:麦克风阵列增强】An Algorithm For Linearly Constrained Adaptive Array Processing

    作者:桂. 时间:2017-06-03  15:06:37 链接:http://www.cnblogs.com/xingshansi/p/6937635.html 原文链接:http://pan.ba ...

  3. javamail 邮件格式再优化(由详情——>改为统计)

    前言:之前扩展的ant-jmeter支持邮件附件形式上传以及邮件内容的html文件格式. 如图: 由于邮件的内容格式是详情信息,也就是说直观的显示的是case,但由于case的增加,邮件内容越来越大! ...

  4. SQL之trigger(触发器)

    先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) create trigger tri_ ...

  5. python网络爬虫之beautfiulSoup

    BeautifulSoup将html文档转换成一个属性结构,每个节点都是python对象.这样我们就能针对每个结点进行操作.参考如下代码 def parse_url():     try:       ...

  6. scrapy中的下载器中间件

    scrapy中的下载器中间件 下载中间件 下载器中间件是介于Scrapy的request/response处理的钩子框架. 是用于全局修改Scrapy request和response的一个轻量.底层 ...

  7. MySQL删除表方式差异

    数据库删除语句 Drop/Delete/Truncate比较 Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名 ...

  8. 优化mysql数据库的几个步骤

    析问题: 1. 开启慢查询日志. 这个步骤就是为了记录慢查询的sql,为下个步骤做准备,此步骤相关的知识点有如下: 1. show variables like '%slow_query_log%'; ...

  9. Angular4 后台管理系统搭建(1) - 建立一个通用的Wijmo5 flexgrid分页器组件

    17年4月,开始学习angular2,到5月跟着升级到angular4.目前还在学习,搭建中.我的最终目的是用angular4框架搭建一个后台管理系统.这里使用了三个关键的外部库. 1.使用admin ...

  10. 常用精品API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...