腾讯云使用对象存储托管并分享WebGL小游戏(unity3d)(需要域名)

注意,需要有自己的域名才可以使用这个服务进行托管。

要进行分发测试游戏原型,比较好的方案便是直接通过WebGL游戏(也就是网页游戏)进行分发。只需他人点击链接即可立刻游玩而不像其他游戏需要传到网盘再让人下载,玩家根本没有耐心下载。而Itch.io、summer.io对我们来说是不可用的,因为用户的网络无法正常访问,所以我们要托管到自己的网站上。

但是托管到自己的网站上服务器成本是难以接受的,因为服务器的带宽和性能非常珍贵,多个用户访问的话就需要昂贵的服务器,所以我们要把游戏托管到腾讯云或者阿里云的对象存储服务上。所谓的对象存储服务就是我们把资源存储到云上,由腾讯云或阿里云来提供下载服务,玩家通过网站链接就可以直接拿到资源。

而我们的unity打包的WebGl小游戏就可以放到上面,但是只作为文件存储的时候玩家只能把网站下载下来而不能直接运行,阿里云和腾讯云正好提供了静态网站托管服务,它可以把对象存储当成一个 Web 服务器来用,也就是玩家访问index.html,就可以在览器中直接运行游戏。

以下内容中只会讲解腾讯云的部署方案,阿里云的部署模式是一模一样的,只不过平台不同罢了。

步骤一:导出Webgl游戏

我们制作好游戏后,只需要注意几个设置就可以导出webgl游戏了

在导出界面选择大小优先也就是DiskSize来保证导出包够小,因为对象存储是根据流量来计费,同时玩家的网速是有限的,游戏越小玩家才能越快的玩到游戏,如果加载时间太久,玩家就会怀疑网站出了问题或者直接放弃游玩。

同时也要在playersetting/pulishing setting中把压缩格式选择为Gzip,brotil最好不要选,对象存储有可能不支持

然后,需要勾选解压缩回退,否则浏览器可能无法解压导致无法运行。

打包完成后得到一个Webgl文件夹,其中的内容为以下格式:

这就是我们的游戏,接下来我们要把它上传到对象存储。

步骤二、上传游戏到对象存储

1、启用腾讯云的对象存储,创建一个存储桶

访问权限需要调整为公有读私有写,同时,我们可以看到其中的请求域名,之后直接用这个请求域名就可以访问。

2、进入桶管理,打开文件列表,拖拽文件上传到堆中

将webGl打包出来的文件夹里的内容拖进去,拖拽整个文件夹也可以,只要之后用对应的路径访问就行。

此时就已经存储好了文件,可以直接通过访问域名访问并下载文件。比如

浏览器中输入"访问域名/index.html"就可以直接访问。

在概览中我们可以看到访问域名

在浏览器中输入以下内容就可以下载Index.html了。

3、但是我们想要的是直接游玩,而不是下载webgl,所以我们需要开启静态网站服务,部署页面为上传的index.html

这样设置后理论上就可以作为网站进行访问了,但是还有个问题。因为国家的政策决定必须要有自定义域名才能预览,所以我们还必须绑定自定义域名。

步骤三、域名和DNS设置

点击配置域名进入配置域名的界面


自定义源站域名,就是指换个域名来访问对象存储的服务器。源站就是指对象存储的访问域名。比如我们用mygame.com绑定好之前的访问域名,之后就可以直接用mygame.com/index.html来游玩游戏了,就是这么简单。

(用腾讯云自己的域名其实理论上也可以直接游玩的,但是国家为了网络安全规定必须用已经备案后的自定义域名才可以预览文件和网页,所以如果用请求域名的话就会直接下载文件而不是预览)

配置域名的时候就按照如下的图输入你要用什么域名来访问对象存储,推荐使用子域名来和主域名进行内容区分,我这里使用tutorial子域名来表示这是教程内容。源站类型需要选择为静态网站源站。

配置好后还会报错

因为我们这里只是说想要用这个域名来访问,但并没有真正的在网络上配置相关的域名跳转,这里的自定义域名只是腾讯云内部的配置。在网络上要配置还需要去DNS中配置才行。

所谓的CNAME就相当于域名的别名,CNAME 记录 = 给一个域名起别名,让它指向另一个域名。在DNS中配置game.xxx.com CNAME mmxxxxx.ap-guangzhou.myqcloud.com就相当于,我输入game.xxx.com就会直接访问mmxxxxx.ap-guangzhou.myqcloud.com。相当于通话转移。

通话转移到腾讯云后他会检查域名,如果在自定义源站中配置了域名,那就允许访问,如果没有配置就不允许访问。

我们现在只配置了腾讯中的自定义源站域名,所以接下来要配置DNS解析

前往云解析控制台

https://console.cloud.tencent.com/cns

找到要配置的主域名

比如xxx.com。大家一般申请了域名后都会建网站,网站用的就是主域名。要托管游戏到网站为了分内容访问可以使用子级域名。比如game.xxx.com,来表示是上传的游戏内容,当然你也可以不分内容,直接用路径访问就行了。

我之前自定义的域名是tutorial.xxx.com,所以我在权威解析中要添加tutorial的cname

添加后点击确定。然后等一两分钟DNS解析完成后再次访问turoial.xxx.com/index.html就可以在网页中游玩游戏了

至此,用腾讯的对象存储托管UnityWebGl的游戏就完成了。

现在我们直接游玩还有个问题,会报不安全错误,也就是不是https链接。

步骤四、CDN和证书配置

我也是第一次弄这个,具体技术细节说不清,但是对象存储中配置的证书是无用的,证书必须配置在CDN上。而且有了CDN,也不需要自定义源站的域名了。所以接下来要做的是

1、删除自定义域名

2、添加cdn域名


输入域名,然后我们再去DNS解析中添加一条解析记录,和之前添加CNAME的方式一样。

创建好后等一段时间,然后点击验证,验证成功后cdn就会进入部署状态。期间我们点击Https证书进入cdn控制台。

勾选https强制跳转,然后点击https的配置证书

没有证书的话需要申请证书

提交申请后会等待证书发放,记得刷新页面。等证书发放后回到DNS控制台绑定好证书

此时cdn就配置完毕了,等待他部署上线即可。

接下来我们需要再回到DNS解析,让我们的tutorial.xxx.com的cname改成我们的cdn的canme就可以了,cdn的cname就是上面图里的那个cname。

点击确认后,DNS解析也需要一点时间。

到此,配置完毕,我们访问对应的网站就会使用cdn,并且使用cdn的https来解决不安全的问题了。

经过测试,配置完毕后也报错,但是在什么都不动的情况下过一段时间就好了,不太懂,可能是cdn在执行什么操作之类?

相关推荐
SmalBox9 小时前
【节点】[Ambient节点]原理解析与实际应用
unity3d·游戏开发·图形学
全栈王校长14 小时前
WebGL三角形绘制:掌握缓冲区与基本图元
前端·webgl
小贺儿开发15 小时前
Unity3D VR党史主题展馆
unity·人机交互·vr·urp·展馆·党史
波哥学开发15 小时前
🎨 Three.js 自定义材质贴图偏暗?一文搞懂颜色空间与手动 Gamma 矫正
webgl
TopGames15 小时前
Unity实现10万人同屏动态避障和导航寻路系统 支持3D地形
unity·性能优化·游戏引擎
在路上看风景18 小时前
01. GUIContent
unity
托洛夫斯基扎沙耶19 小时前
Unity中状态机与行为树的简单实现
unity·游戏引擎
TrudgeCarrot1 天前
unity打包使用SPB管线出现 DontSava错误解决
unity·游戏引擎·dontsave
不会码码1 天前
WebGL+Three.js:打造网页3D模型展厅
javascript·3d·webgl