五分钟在SAE上架设一个网络射击游戏
本文展示的是如何快速的在SAE上架设一个多人太空大战游戏。
游戏示例地址:http://shooterclient.applinzi.com
游戏源码
NodeGame-Shooter 是Github上的一个用H5和Node.js实现的多人射击游戏,基于GNU协议,项目地址:https://github.com/BonsaiDen/NodeGame-Shooter
游戏的玩法十分简单,打开页面,选择一个颜色,输入用户名,直接开打,非常干脆,一点多余的动作都没有,碎片时间利用率极高。
自己架设的时候,需要事先把NodeGame-Shooter下载到本地:
$ git clone https://github.com/BonsaiDen/NodeGame-Shooter.git
Server
Server是网络游戏数据交互的核心,负责客户端的数据通信。
在SAE上创建Node.jsServer:
在本地创建server的目录,并把NodeGame-Shooter/server下的所有数据复制过来:
$ git clone https://git.sinacloud.com/shooterserver
$ cd shooterserver
$ cp /path/to/NodeGame-Shooter/server/* . -R
SAE的云主机默认把80端口转发到本地的5050端口,所以server.js中的端口需要修改:
Shooter.Server({
'port': 5050,
'status': false,
'recordFile': './../record[date].js',
'record': false,
'flash': false
});
创建package.json文件:
{
"name": "shooter-server",
"description": "",
"version": "0.0.1",
"private": true,
"author": {
"name": "sae",
"email": "[email protected]"
},
"dependencies": {
"express": "^4.13.3"
},
"engines": {
"node": "10.10.0"
},
"scripts": {
"start": "node server.js"
}
}
把Server上传到云主机:
$ git add -A
$ git commit -sm "Init server"
$ git push origin HEAD:master
客户端
NodeGame-Shooter/client/config.js中设置Server的地址:
var HOST = 'shooterserver.applinzi.com', PORT = 80
用浏览器直接打开client/index.html就能打开 游戏。
分发客户端
目前,进行多人游戏前,需要把NodeGame-Shooter/client目录复制到本地再打开。如果想要游戏能像页游一样开箱即用,可以另外创建一个云主机作为客户端分发。
创建Go主机:
下载SAE的Go Demo, 并把客户端复制到目录下:
$ git clone https://github.com/sinacloud/go-getting-started.git shooterclient
$ cd shooterclient
$ cp /path/to/NodeGame-Shooter/client . -R
删除Demo的main.go,创建新的main.go:
package main
import (
"net/http"
"os"
"github.com/gin-gonic/gin"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "5050"
}
r := gin.Default()
r.StaticFS("/client", http.Dir("./client"))
r.LoadHTMLGlob("client/*.html")
r.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", nil)
})
r.Run(":" + port)
}
client/index.html下所有资源路径加入client/前缀:
NodeGame: Shooter
client/game.events.js下:
this.sound = new SoundPlayer(7, 'sounds', [
改成
this.sound = new SoundPlayer(7, 'client/sounds', [
保存修改:
$ git add -A
$ git commit -sm "Init client"
$ git push origin HEAD:master
这时,在浏览器输入云主机的地址,游戏就开始了: