云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第7篇...

前端vue后端GO利用client-go实现web terminal远程ssh到k8s的pod内部 阅读详情

空血来战玩法 & 游戏规则篇

空血来战使用纯正的四川麻将玩法,分为三人模式和四人两种模式,三人模式<三人两房>只用子和子两种花色共72张牌,游戏节奏更快,对战更激烈。四人模式<血战到底>使用 三种花色共108张牌,开局选择定缺花色,未打缺不能胡牌。

系列文章

  1. Golang开发生产级麻将游戏服务器—第1篇
  2. Golang开发生产级麻将游戏服务器—第2篇
  3. Golang开发生产级麻将游戏服务器—第3篇
  4. Golang开发生产级麻将游戏服务器—第4篇
  5. Golang开发生产级麻将游戏服务器—第5篇
  6. Golang开发生产级麻将游戏服务器—第6篇

介绍

这将是一个完整的,完全践行 DevOps/GitOpsKubernetes 上云流程的 Golang 游戏服务器开发的系列教程。

这个系列教程是对开源项目 Nanoserver 的完整拆解,旨在帮助大家快速上手 Golang(游戏)服务器后端开发。通过实践去理解 Golang 开发的精髓 —— Share memory by communication(通过通信共享内存)

同时这个项目可能还会涉及到 Linux 性能调优(BPF 相关的工具)和系统保障(SRE)的相关的工作。

Step-By-Step 开发 Mahjong Server

  • 单体架构理解 Mahjong Server 业务 -> Nano Distributed Game Server(分布式) + 微服务 改造。
  • Demo:go-mahjong-server

游戏规则

  1. 三人模式<三人两房>使用子、子两种花色牌共72张。
  2. 三人模式大于1倍低分才可点炮胡(平胡点炮需选择<点炮可平胡>)。
  3. 四人模式<血战到底>使用 三种花色共108张牌。
  4. 玩家胡牌后,其余玩家继续游戏,直到流局或只有一位玩家未胡牌为止。
  5. 流局时查大叫,即无叫玩家需要按最大番数赔付有叫玩家。
  6. 上一局先胡牌玩家下一局当庄,如果一炮多响,点炮玩家为庄。
  7. 自摸加低(如果勾选自摸加番,则加番)。
  8. 牌局中按照创建房间时选择的番数封顶(345番)。

术语解释

  1. 刮风下雨
    • 若为引杠(手中有三张相同的牌,有人打出第四张),则向引杠者低番X2的水钱。
    • 若为巴杠(已经碰牌后,自己摸出第四张并杠牌),则向每个未胡牌的玩家收取低番X1的水钱,以上两种为刮风
    • 若玩家为暗杠(自己摸出四张牌并杠牌),则向每个未胡牌的玩家收取低番X2的水钱,此时称为下雨。
    • 若结算时没有胡牌,且没有叫,则刮风下雨不算。
  2. 血战到底:一家胡牌后,游戏继续进行,直到仅剩一家未胡牌或者流局。
  3. 杠上花、杠上炮、呼叫转移、抢杠
    • 杠上花:杠牌后自摸,弯杠和暗杠时,其余未胡牌的玩家都会扣分
    • 杠上炮:杠牌后点炮
    • 呼叫转移:开杠后点炮,杠钱一并转移给接炮的玩家
    • 抢杠:巴杠时的牌被其他人胡了,称为抢杠,抢杠胡牌后,不能巴杠
  4. 查叫:若有两人或两人以上玩家没有胡牌,则要进行查叫。
  5. 退税:查叫时,没叫玩家需要退回所有刮风下雨所得的收入。

胡牌类型

  1. 平胡(0番):四砍(除四副刻子)加一对将。
  2. 对对胡(1番或2番):4副刻子加一对将。
  3. 清一色(2番):全是一种花色的平胡。
  4. 清对(3番或4番):清一色加对对胡。
  5. 七对(2番):玩家手上全是对子,没有碰和刮风下雨。
  6. 龙七对(3番):手上全是对子,且只有一个根,没有碰和刮风下雨。
  7. 清七对(4番):清一色+七对。
  8. 清龙七对(5番):清一色+龙七对。
  9. 全幺九(3番):所有组成的顺子、刻子、将牌中都包含19
  10. 将对(3番或4番):只包含2/5/8的对对胡。
  11. 将七对(5番):只包含2/5/8的龙七对。
  12. 门清(1番):只包含2/5/8的龙七对。
  13. 中张(1番):胡牌时,不包含1/9的牌。
  14. 夹心五(1番):胡牌时,牌型可以摆成46夹一个5

番计算

  1. =低分x2 例如:低金为1分,2番=1*2*2=4分,3番=1*2*2*2=8
  2. 基本输(赢)积分=牌型积分+刮风下雨+自摸加番(自摸加番算在总番中)
  3. 点炮结算方式为1对1,自摸结算为一对多
  4. 另加番:
    • :+1番(所有牌中有4张一样的牌,无论是否碰、杠),可累计计算
    • 杠上花:+1番
    • 杠上炮:+1番
    • 抢杠胡:+1番
    • 海底捞:+1番
    • 金钩胡:+1番
      备注:各个牌型不重复计算,只收取最大番
我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)
使用 Docker 部署 Vue.js + Go 项目 最近公司要求搞一个 dashboard ,前端用 Vue.js 框架,后端用 Go 语言写的。在决定用 Docker 进行部署的时候,遇到了很多问题,特此记录。 由于这个项目需要使用 AWS 中的 DynamoDB,因此需要先在 Docker 的 image 中安装 aws-cli,然而 aws-cli 只能依赖 Python 进行安装。因为我考虑先从运行一个 Ubuntu 基础镜像(如果是 C... 阅读详情

相关推荐

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第2

搭建游戏服务器脚手架 & 快速上手开发 系列文章 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第1 介绍 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。 这个系列教程是对开源项目 Nanoserver 的完整拆解,旨在帮助大家快速上手 Golang游戏)服务器后端开发。通过实践去理解 Golang 开发的精髓 —— Share m.

o__cc的博客 1141

基于Golang开发的棋牌游戏服务端demo(推筒子游戏

主要服务 Hall:大厅服务 PushBobbi:推筒子游戏服务 Robot:机器人服务 环境搭建 架构使用go mod构建环境 基础安装 将工程代码克隆在GOPATH/src目录下 确保GOPATH和GOROOT的系统环境变量已经正确配置 配置go mod的环境变量 Mac或Linux export GOPROXY=https://goproxy.io export GO111MODULE=on Windows set GOPROXY=https://goproxy.io set GO111MODULE=on 在工程目录下执行go mod tidy 运行程序 安装Go1.16 设置GOROOT和GOPATH(1.6开始不需要设置GOPATH) 设置环境变量 根据layout.json创建layout_dev.json,其中common_config与must服务不变,其他XX_server服务里面内容都放在新的all_server服务里面 因为本地测试需要将所有服务都同时启动,rancher上面根据环境变量运行服务 例如: "all_server":{ "

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第3

通过服务器日志和客户端抓包了解游客(Guest)登录流程 系列文章 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第1 云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 01 使用 Golang 开发生产麻将游戏服务器—第2 介绍 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。 这个系列教程是对开源项目 Na.

o__cc的博客 857

k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD

【代码】k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD。

2575

k8s部署应用模板(spring/vue/golang)项目示例

f一、后端项目,jar包为例 1、配置文件 application.yml #以实际项目的yml为准即可。 server: port: 8888 spring: application: name: test-jar #=================[Eureka]注册中心配置=======================# eureka: client: fetch-registry: true register-with-eureka: true

huhaiand的专栏 1080

Go实战Gin+Vue+微服务打造秒杀商城第五课 gin+vue实战

gin+vue实战 后端: 用户管理 用户列表 登录/登出 商品管理 商品的增上改查 活动管理 商品关联 成功率 redis队列,不成功的回到队列继续,成功的从队列删除 结束难点: 代码和部署完全隔离 怎么避免雪崩 根据后端承载能力,进行限流和过载保护 使用redis承载海量QPS mysql性能瓶颈 可扩展行(机器的扩展等) 长连接 秒杀业务逻辑: 接入层功能: 实战技术选型 一、实战名称:gin+vue3+微服务打造秒杀商城 二、技术选型 1.前端:vue3,antdv,v

fegus的博客 7045

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第1

项目初探 项目地址: 原项目:https://github.com/lonng/nanoserver 调过的:https://github.com/Kirk-Wang/nanoserver 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。 这个系列教程是对开源项目 Nanoserver 的完整拆解,旨在帮助大家快速上手 Golang游戏)服务器后端开发。通过实践去理解 Golang 开发的精髓 —— Share m.

o__cc的博客 654

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第5...

游戏服务器(Nano)登录 & 游戏数据包通信实战 系列文章 Golang开发生产麻将游戏服务器—第1 Golang开发生产麻将游戏服务器—第2 Golang开发生产麻将游戏服务器—第3 Golang开发生产麻将游戏服务器—第4 介绍 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程...

o__cc的博客 331

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第8...

麻将(Mahjong tiles) 抽象和编码实战 一句话描述麻将游戏业务: 三人模式<三人两房>只用 条 子和 筒 子两种花色共 72 张牌。 四人模式<血战到底>使用 筒、条、万 三种花色共 108 张牌。 系列文章 Golang开发生产麻将游戏服务器—第1 Golang开发生产麻将游戏服务器—第2 Golang开发生产麻将游戏服务器—第3 G...

o__cc的博客 524

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第4...

游客登录鉴权之业务代码实战 系列文章 从01使用Golang开发生产麻将游戏服务器—第101使用Golang开发生产麻将游戏服务器—第201使用Golang开发生产麻将游戏服务器—第3 介绍 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。 这个系列教程是对开源项目 Nanose...

o__cc的博客 594

云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从01使用Golang开发生产麻将游戏服务器—第6...

图解 Manager 游戏逻辑组件 系列文章 Golang开发生产麻将游戏服务器—第1 Golang开发生产麻将游戏服务器—第2 Golang开发生产麻将游戏服务器—第3 Golang开发生产麻将游戏服务器—第4 Golang开发生产麻将游戏服务器—第5 介绍 这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang...

o__cc的博客 140

eBPF+OpenTelemetry构建无侵入运维原子能力

云原生运维中,服务拓扑发现、异常传播追踪与跨数据源因果推理是可观测性的核心基础能力。其技术原理依赖于内核态与用户态协同——eBPF实现零侵入流量与异常捕获,OpenTelemetry提供标准化遥测语义,二者结合可绕过应用埋点,直击协议层与系统调用层。这种组合显著提升故障定位效率与成本归因精度,支撑SRE团队实现变更影响预测、GitOps驱动的资源治理及LLM辅助告警摘要等高阶实践。本文聚焦Leapfrog 2025挑战赛中‘实时服务血缘图谱’与‘跨语言异常传播追踪’两大典型场景,详解如何基于eBPF探针与

weixin_30315905的博客 332

【信息科学与工程学】【数据中心】第三十五 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017

weixin_49199313的博客 179

Golang+Vue2从零开始搭建K8S后台管理系统(3)——自动更新资源列表(上)

这里只是做一个思路的展示,因为诸如或者容器日志或者远程 shell 这类复杂的操作,往往通过多个资源的组合(namespace、deployment、pod..)来获取最终操作的对象,我们不可能去多次请求api,一是延迟问题,二是 apiserver 的压力问题(这个影响比较小)。有了本地缓存 map,我们就可以通过加入 deployment 对应类型的 informer 去 watch 资源的变化,并且通过 handler 来对 map 中的内容进行增删改。

kingu_crimson的博客 1276

vue项目通过jenkins部署到K8s

前端vue部署的项目自动打包发布部署到K8S

weixin_37069728的博客 2049

【Go】K8s 管理系统项目36[K8s环境–应用部署]

【Go】K8s 管理系统项目[K8s环境–应用部署]

Q先生 1881

go项目打包交给k8s发布并管理步骤

go项目打包交给k8s发布并管理步骤 1.利用goland将项目打包: ####目录说明 ```$xslt ├── build.bat window编译脚本/build.bat linux ├── conf 工程配置文件 ├── controller 控制器 ├── jet 存放sql模板 ├── model 模型 ├── router 路由配置 ├── script 脚本 │ ├── doc...

季末 2832

K8s部署微服务(springboot+vue)

本文主要记录K8s部署微服务项目(springboot后台+vue前端,动态部署自定义项目),也包括对网关、鉴权、用户等基础模块的部署。k8s部署项目,即创建相应的资源有命令行创建和yaml文件创建两种方式,由于命令行创建配置麻烦,且不具备复用性,因此本文均采用yaml文件创建资源的方式。

qq_43403676的博客 1万+
上一篇: 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第6篇...
下一篇: 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第8篇...
为为少
博客等级 码龄11年 213粉丝 212原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值