npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gamecloud

v6.0.23

Published

game logic server over cloud

Downloads

1,417

Readme

游戏云服务器 gamecloud

概述

游戏云服务器(gamecloud)是一个基于NodeJS技术开发的纯JavaScript服务端引擎,为H5游戏量身定做,其特点如下:

  • 开箱即用。

游戏云服务器 的设计理念是,"简单是不够的,要极其简单"。

  • 开放式设计。

游戏云服务器 自然融入 npm 生态,你可以通过第三方库或自定义代码,利用插件、扩展服务、中间件、自定义事件、新增核心类等机制,随时对框架进行补足和增强。

  • 可伸缩性设计

关于集群

  • gamecloud 是一个可伸缩集群,整个集群由单台或多台服务器组成。
  • 集群运行多个不同类型的节点,灵活分配于各台服务器上,可在 ./gameconfig.js 中完成配置
  • 建议起步阶段以单服务器模式运行,熟悉体系后再扩展至由多台服务器组成的集群
let config = { 
    "servers": [],      //集中配置集群中所有节点,在集群中所有服务器上保持一致
    "apps": [],         //配置当前服务器运行的节点列表
}
  • 集群中,有且只有一个节点兼任门户节点
    "apps" : [
        {
            "name"      : "Chick_IOS_1",
            "script"    : "facade/start.js",
            "cwd"         : "./",
            "error_file" : "./logs/ios1/app-err.log",
            "env": {
                "NODE_ENV": "production",
                "sys":{
                    "serverType": "IOS",
                    "serverId": 1,
                    "portal": true  //指示该节点兼任门户
                }
            }
        }
    ]

搭建运行环境

  1. 安装系统软件,如已经具备条件请跳过
npm i -g node-gyp
  • Windows环境下补充安装
npm i -g --production windows-build-tools
  1. 下载软件仓库、安装依赖包
git clone https://github.com/bookmansoft/gamecloud
cd gamecloud
npm i
  1. 创建并初始化数据库

该项工作在集群的每台数据库服务器上都需要独立执行

如何快速执行 如果当前服务器已安装mysql,且用户名密码对为 root / helloworld 时,可直接执行如下指令,并跳过 3.1 3.2 3.3 各步骤

npm run dbinit
  • 3.1 配置数据库连接参数,用于本地数据库的数据迁移流程

    修改配置文件 ./config/migrations/gamecloud.json , 修改其中 password 等字段

    该配置文件在集群中不同服务器上独立配置

    {
    "dev": {
        "driver": "mysql",
        "user": "root",
        "password": "helloworld",
        "host": "localhost",
        "database": "gamecloud",
        "multipleStatements": true
    }
    }
  • 3.2 手动创建数据库,执行此步骤后请跳过 3.3

    • 创建数据库 gamecloud , 建议使用此默认名称,如修改则需相应调整各配置文件

    • 数据库初始化

    npm run commit
  • 3.3 自动创建数据库

    • 配置数据库连接参数,用于本地数据库的创建流程

    修改配置文件 ./config/database.json , 修改其中 password host 字段

    该配置文件在集群中不同服务器上独立配置

    {
    "dev": {
        "driver": "mysql",
        "user": "root",
        "password": "helloworld",
        "host": "localhost"
    }
    }
    • 创建并初始化数据库
    npm run dbinit

特别提醒:为支持存取中文内容,数据库排序规则必须设置为 utf8-general-ci 否则在操作中文内容时会引发数据截断错误

运行游戏云服务器

  1. 配置数据库连接参数,用于各节点的数据库连接串

修改 ./gameconfig.js 文件中 sa pwd host 字段

/**
 * 统一的数据库连接串,如果不同服务器连接不同数据库,需要改写 config 中各个 mysql 字段
 */
let mysql = {
    "logging" : false,          //是否开启日志
    "db": "gamecloud",          //数据库名称    
    "sa": "root",               //数据库用户名
    "pwd": "helloworld",        //数据库用户密码
    "host": "127.0.0.1",        //数据库服务器IP地址
    "port": 3306                //数据库服务器端口号
};
  1. 运行服务器

该步骤使用了 PM2 进程管理软件,一次性启动所有当前服务器上已配置节点

npm start
  1. 运行单元测试
npm run test
  1. 停止游戏云服务器
npm stop

调试代码

建议使用 vs code 进行代码调试工作,

  • 在 vs code 中配置 launch.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "启动程序",
            "program": "${workspaceFolder}\\facade\\start.js"
        }
    ]
}
  • 按下 F5 运行,设置合适的断点

  • 运行单元测试,触发断点,进入单步跟踪模式

npm run test

部署网站

gamecloud 作为游戏服务端引擎的同时,也可以承担静态网站服务器功能:

//在启动节点的同时,设置静态资源映射
facade.boot({
    static: [['/client/', './web/client']],
});

服务器启动后,可以通过浏览器访问 http://localhost:9901/client 访问工作目录的子目录 web/client 中的静态资源

典型的工作场景为:

  1. 架设 gamecloud 作为 JSONP 服务器,并设置静态资源映射. 建议通过基于 gamecloud 的 gamegold-mgr-server 脚手架项目进行二次开发 https://github.com/bookmansoft/gamegold-mgr-server

  2. 使用 React / AngularJs / VUE / CocosCreator 开发单页面应用,打包并拷贝到已映射目录中,即可对外提供服务

Roadmap

V1.5 和游戏金公链平台无缝整合,一键式开发DAPPS应用 V1.6 内置 BTC / BCH / ETH 等主流数字货币的支付接口 V2.0 支持 k8s 架构,进一步增强易用性和可伸缩性