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

news/2024/11/17 20:45:17/

安装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/gdy/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 config\client.abs.conf rtsp://192.168.1.164:8554/desktop

成功连接上云游戏:

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

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

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

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

五.小结

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


http://www.ppmy.cn/news/560832.html

相关文章

GAMES101 作业0 环境配置 超详细小白教程

目录 1. 下载作业0 2. 将作业0的压缩包解压,找到pa0.pdf这个教程PDF,按照教程进行安装 3. 安装虚拟机 4. 下载虚拟硬盘 5. 校验下载文件的md5码 6. 配置虚拟机 7. 作业代码 8. 完成作业题目 9. 编译 10. 提交作业 1. 下载作业0 使用chrome直接点…

Games104 Lecture 6 游戏地形大气和云的渲染

游戏地形大气和云的渲染 1、地形几何原则切分四叉树(Quad)TIN(Triangulated Irregular Network)GPU Drived Tessellator(Hardware Tessellation)Non-HeightFieldMarching Cube 材质两种材质混合(texture splatting)。Texture Arra…

Unity游戏Mod/插件制作教程02 - 开发环境准备

前言 虽然本教程的目标读者是有C#基础的玩家,但是作为流程,基础的开发软件部分我还是要记录一下。 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发.net的工具,但是免费的VisualStudio已经足够好用…

【GAMES104】 游戏中的天空渲染

一、大气拟合仿真 分析如何做出天空效果,直接的方法就是类似于Bling-Phong模型的拟合方法,这里给出了一个可以根据视角仰角和与太阳夹角就可求得颜色的模型。这个模型的问题就是只能限制在地表,而且不具有实时性。 所以要做出更加真实的大气…

文明6免安装简繁中文绿色版

文明6风云变幻可以简称之为文明6(软件下载点击这里),是一款极其知名的回合制策略类游戏,在游戏中,玩家的每一个决策都至关重要,丰富的环境变化将带来更多的挑战,例如灾难、瘟疫、战争等,玩家将使用全新的特…

Unity RTS 策略游戏等建造系统仿照COC游戏的插件 - City Building Perfect Kit

国内真的很少人用这个插件,也比较冷门 不过刚好,个人需要想做一个家园系统(元数据热门,但网上几乎找不到如何用Unity做家园系统),只能靠这个 City Build Perfect Kit 国内很少团队会做这类型的手游 但是国外小哥2015年就开始做了。。。。。 一开始做的是RTS Battle 战…

我的世界java版天空材质_我的世界天空材质包下载|

超真实天空材质包epic realistic sky是我的世界游戏的一款地图画面修改软件,它可以帮助大家体验到最真实的游戏画面,让你感受到不一样的游戏场景和最高品质的体验,欢迎大家到本站下载体验! 我的世界天空材质包介绍 超真实天空材质…

星空之翼游戏的设计与实现

星空之翼游戏的设计与实现 摘要 本毕业设计开发的《星空之翼》是一款纵版飞行射击类游戏。游戏采用组件式架构。整个游戏由主程序模块、游戏引擎模块、地图编辑器模块和声音引擎模块4个相对独立的模块组成,其中声音引擎采用的是一个开源声音引擎irrklang。本毕业设…