找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1167

积分

0

好友

167

主题
发表于 昨天 21:17 | 查看: 1| 回复: 0

棋牌游戏封面图

今天介绍一款基于H5的商用版棋牌游戏,它支持在个人NAS上通过容器化部署,实现一个完全私有的游戏空间。该游戏无平台监控与操控,旨在提供一个公平公正的游戏环境,并完美支持手机、电脑、Pad等设备,只要设备带有浏览器即可畅玩。

游戏多端支持示意图

温馨提示:建议部署新手严格遵循教程步骤,先确保服务在局域网内正常运行,暂时不要急于修改复杂的配置或配置外网访问。

准备工作

首先,访问该项目的GitHub仓库地址下载项目文件:https://github.com/openinggame/qp

GitHub项目下载页面

在您的NAS上创建一个名为openinggame的文件夹,并将下载好的ZIP压缩包放入其中。

创建项目文件夹

解压ZIP文件,清理不必要的文件,最终只保留以下三个文件即可。
解压后保留的核心文件

接着,解压上面两个tar.gz压缩包,并将文件整理成如下结构。mongo_datamysql文件夹内应包含解压后的数据文件。
项目最终目录结构
mongo_data文件夹内部示例
mongo_data内部
mysql文件夹内部示例
mysql内部

安装与配置部署

在NAS的容器管理界面(如Docker/Portainer)中创建新项目,选择上面准备好的openinggame目录作为项目路径,并导入docker-compose.yml文件模板。

导入Docker Compose模板

原始提供的模板较为复杂,我们可以使用一个简化过的版本。下方是一个优化后的docker-compose.yml配置示例,您只需将API_HOST环境变量的值修改为您NAS在局域网中的实际IP地址即可。

services:
  web:
    container_name: web0
    image: openinggame/web:v1
    ports:
      - "8080:80"
    environment:
      - API_HOST=192.168.31.90 # 请修改为你的NAS IP
    depends_on:
      - server

  server:
    container_name: server0
    image: openinggame/server:v1
    ports:
      - "81:81"
    depends_on:
      - etcd
      - kafka
      - redis1
      - mysql
      - mongodb

  mysql:
    image: mysql:8.0.23
    container_name: mysql0
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlconf:/etc/mysql/conf.d

  redis0:
    container_name: redis0
    image: redis:latest
    volumes:
      - ./redisdata0:/data
    command: redis-server --requirepass 123456
    depends_on:
      - etcd

  redis1:
    container_name: redis1
    image: redis:latest
    volumes:
      - ./redisdata1:/data
    command: redis-server --requirepass 123456
    depends_on:
      - etcd

  redis2:
    container_name: redis2
    image: redis:latest
    volumes:
      - ./redisdata2:/data
    command: redis-server --requirepass 123456
    depends_on:
      - mysql
      - etcd
      - redis1

  zookeeper:
    container_name: zookeeper
    image: wurstmeister/zookeeper
    restart: always

  kafka:
    container_name: kafka0
    image: wurstmeister/kafka:2.12-2.3.0
    environment:
      - KAFKA_BROKER_ID=0
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka0:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    depends_on:
      - zookeeper

  etcd:
    image: quay.io/coreos/etcd:v3.2.32
    container_name: etcd0
    environment:
      ETCDCTL_API: 3
    command:
      - etcd
      - --name=etcd0
      - --data-dir=/data/etcd-data
      - --advertise-client-urls=http://etcd0:2379
      - --listen-client-urls=http://0.0.0.0:2379
    restart: always
    volumes:
      - ./etcd0_data:/etcd-data

  mongodb:
    container_name: mongodb0
    image: mongo:4.4.4
    restart: always
    volumes:
      - ./mongo_data:/data/db
      - ./mongodb_logs:/data/logs
    command: --auth
    depends_on:
      - etcd

配置完成后,启动项目。正常情况下,所有相关的容器(包括Web前端、游戏服务器、MySQL数据库、多个Redis缓存实例、Kafka消息队列、MongoDB、etcd和Zookeeper)都应该成功启动并运行。
容器全部正常启动状态

使用体验

部署成功后,在浏览器中输入 http://你的NAS的IP:8080 即可访问游戏主界面。
游戏登录主界面

服务刚启动时,界面可能短暂显示“不可用”,请稍等片刻(或尝试重启整个Docker项目)即可恢复正常。
服务加载中提示

加载完成后,点击“游客登录”。
点击游客登录

跳转后页面可能会出现弹窗广告,无需关闭,直接点击下方的“注册”按钮。
注册账号弹窗

在注册页面,可以随意输入一个11位数字作为手机号(注意首位需要是数字1),然后填写其他信息完成账号绑定,即可登录。
账号注册与绑定页面

登录后即可进入游戏大厅,游戏种类相当丰富,包括斗地主、麻将等多种棋牌游戏。
游戏大厅界面

以斗地主为例,可以根据底分选择不同的游戏分区。
斗地主游戏分区选择

游戏体验与常见平台一致,支持与AI对战,提供出牌提示、聊天对话等功能。
斗地主游戏进行中

AI对手的智能水平尚可。需要注意的是,该系统似乎缺少后台管理功能,如果游戏积分不足,可能需要重新注册账号。
AI接管游戏

若想与朋友一同游戏,可以创建私人房间。
创建私人房间

私人房间内的游戏操作与常规模式无异。
私人房间游戏进行中

该游戏同样完美适配手机浏览器,打开相同网址即可获得良好的移动端体验。
手机浏览器访问游戏

在资源占用方面,整套服务运行起来后,内存占用会相对多一些,这是由多个后端服务(数据库、缓存、消息队列等)共同决定的。
服务器资源占用情况

总结

这款H5棋牌游戏项目虽然已经有一段时间未更新,但通过Docker Compose在NAS上部署后,整体运行稳定。对于朋友间组队娱乐而言,体验不错,网页即点即玩的特性非常方便。主要不足之处在于缺乏后台管理系统,积分机制触发后可能需要重新注册账号。

综合推荐:⭐⭐⭐(适合与朋友在私有环境中娱乐)
使用体验:⭐⭐⭐(跨设备、免安装,访问便捷)
部署难度:⭐⭐⭐(流程清晰,但涉及多个容器,需要一定基础)




上一篇:微信公众平台运营中心指南:新手必备的基础设置与内容发布流程
下一篇:Python辅助工具库ubelt实战:提升开发效率的实用工具集解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 17:29 , Processed in 0.112565 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表