UNPKG

6.38 kBMarkdownView Raw
1# 游戏云服务器 gamecloud
2
3## 概述
4
5游戏云服务器(gamecloud)是一个基于NodeJS技术开发的纯JavaScript服务端引擎,为H5游戏量身定做,其特点如下:
6
7- 开箱即用。
8
9游戏云服务器 的设计理念是,"简单是不够的,要极其简单"。
10
11- 开放式设计。
12
13游戏云服务器 自然融入 npm 生态,你可以通过第三方库或自定义代码,利用插件、扩展服务、中间件、自定义事件、新增核心类等机制,随时对框架进行补足和增强。
14
15- 可伸缩性设计
16
17### 关于集群
18- gamecloud 是一个可伸缩集群,整个集群由单台或多台服务器组成。
19- 集群运行多个不同类型的节点,灵活分配于各台服务器上,可在 ./gameconfig.js 中完成配置
20- 建议起步阶段以单服务器模式运行,熟悉体系后再扩展至由多台服务器组成的集群
21
22```js
23let config = {
24 "servers": [], //集中配置集群中所有节点,在集群中所有服务器上保持一致
25 "apps": [], //配置当前服务器运行的节点列表
26}
27```
28
29- 集群中,有且只有一个节点兼任门户节点
30
31```js
32 "apps" : [
33 {
34 "name" : "Chick_IOS_1",
35 "script" : "facade/start.js",
36 "cwd" : "./",
37 "error_file" : "./logs/ios1/app-err.log",
38 "env": {
39 "NODE_ENV": "production",
40 "sys":{
41 "serverType": "IOS",
42 "serverId": 1,
43 "portal": true //指示该节点兼任门户
44 }
45 }
46 }
47 ]
48
49```
50
51## 搭建运行环境
52
531. 安装系统软件,如已经具备条件请跳过
54
55- 安装 mysql 数据库软件,默认排序规则选择 utf8_general_ci
56
57- 安装 python@2.7
58
59- 安装 git@2.19.1
60
61- 安装 node@10.13
62
63- 安装 node-gyp
64
65```bash
66npm i -g node-gyp
67```
68
69- Windows环境下补充安装
70
71```bash
72npm i -g --production windows-build-tools
73```
74
752. 下载软件仓库、安装依赖包
76
77```bash
78git clone https://github.com/bookmansoft/gamecloud
79cd gamecloud
80npm i
81```
82
833. 创建并初始化数据库
84
85**该项工作在集群的每台数据库服务器上都需要独立执行**
86
87**如何快速执行**
88如果当前服务器已安装mysql,且用户名密码对为 root / helloworld 时,可直接执行如下指令,并跳过 3.1 3.2 3.3 各步骤
89```bash
90npm run dbinit
91```
92
93- 3.1 配置数据库连接参数,用于本地数据库的数据迁移流程
94
95 修改配置文件 ./config/migrations/gamecloud.json , 修改其中 password 等字段
96
97 **该配置文件在集群中不同服务器上独立配置**
98 ```json
99 {
100 "dev": {
101 "driver": "mysql",
102 "user": "root",
103 "password": "helloworld",
104 "host": "localhost",
105 "database": "gamecloud",
106 "multipleStatements": true
107 }
108 }
109 ```
110
111- 3.2 手动创建数据库,**执行此步骤后请跳过 3.3**
112
113 - 创建数据库 gamecloud , 建议使用此默认名称,如修改则需相应调整各配置文件
114
115 - 数据库初始化
116
117 ```bash
118 npm run commit
119 ```
120
121- 3.3 自动创建数据库
122
123 - 配置数据库连接参数,用于本地数据库的创建流程
124
125 修改配置文件 ./config/database.json , 修改其中 password host 字段
126
127 **该配置文件在集群中不同服务器上独立配置**
128 ```json
129 {
130 "dev": {
131 "driver": "mysql",
132 "user": "root",
133 "password": "helloworld",
134 "host": "localhost"
135 }
136 }
137 ```
138
139 - 创建并初始化数据库
140
141 ```bash
142 npm run dbinit
143 ```
144
145特别提醒:为支持存取中文内容,数据库排序规则必须设置为 **utf8-general-ci** 否则在操作中文内容时会引发数据截断错误
146
147## 运行游戏云服务器
148
1491. 配置数据库连接参数,用于各节点的数据库连接串
150
151修改 ./gameconfig.js 文件中 sa pwd host 字段
152
153```js
154/**
155 * 统一的数据库连接串,如果不同服务器连接不同数据库,需要改写 config 中各个 mysql 字段
156 */
157let mysql = {
158 "logging" : false, //是否开启日志
159 "db": "gamecloud", //数据库名称
160 "sa": "root", //数据库用户名
161 "pwd": "helloworld", //数据库用户密码
162 "host": "127.0.0.1", //数据库服务器IP地址
163 "port": 3306 //数据库服务器端口号
164};
165```
166
1672. 运行服务器
168
169**该步骤使用了 PM2 进程管理软件,一次性启动所有当前服务器上已配置节点**
170```bash
171npm start
172```
173
1743. 运行单元测试
175
176```bash
177npm run test
178```
179
1804. 停止游戏云服务器
181
182```bash
183npm stop
184```
185
186## 调试代码
187
188建议使用 vs code 进行代码调试工作,
189
190- 在 vs code 中配置 launch.json:
191
192```js
193{
194 "version": "0.2.0",
195 "configurations": [
196 {
197 "type": "node",
198 "request": "launch",
199 "name": "启动程序",
200 "program": "${workspaceFolder}\\facade\\start.js"
201 }
202 ]
203}
204```
205
206- 按下 F5 运行,设置合适的断点
207
208- 运行单元测试,触发断点,进入单步跟踪模式
209
210```bash
211npm run test
212```
213
214## 部署网站
215
216gamecloud 作为游戏服务端引擎的同时,也可以承担静态网站服务器功能:
217
218```js
219//在启动节点的同时,设置静态资源映射
220facade.boot({
221 static: [['/client/', './web/client']],
222});
223```
224
225服务器启动后,可以通过浏览器访问 http://localhost:9901/client 访问工作目录的子目录 web/client 中的静态资源
226
227典型的工作场景为:
2281. 架设 gamecloud 作为 JSONP 服务器,并设置静态资源映射. 建议通过基于 gamecloud 的 gamegold-mgr-server 脚手架项目进行二次开发
229https://github.com/bookmansoft/gamegold-mgr-server
230
2312. 使用 React / AngularJs / VUE / CocosCreator 开发单页面应用,打包并拷贝到已映射目录中,即可对外提供服务
232
233## Roadmap
234
235V1.5 和游戏金公链平台无缝整合,一键式开发DAPPS应用
236V1.6 内置 BTC / BCH / ETH 等主流数字货币的支付接口
237V2.0 支持 k8s 架构,进一步增强易用性和可伸缩性