Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >卡牌类游戏游戏大厅——下篇

卡牌类游戏游戏大厅——下篇

作者头像
才浅Coding攻略
发布于 2022-12-12 10:03:45
发布于 2022-12-12 10:03:45
1.2K0
举报
文章被收录于专栏:才浅coding攻略才浅coding攻略

阿巩

It will all be okay

我们继续昨天的上篇,在注册/登录->选择游戏区域->认证->进入大厅之后就是选择房间/创建房间,也就是进入到了大厅与游戏对接的部分。

在进入大厅创建房间或者牌桌时,需要有一系列参数在创建房间时固定下来,比如:玩家ID、房间ID、房间人数、是否有旁观者、达成的条件(低于10分不允许玩家继续比赛)、进入房间的条件(比如玩家金币不得少于1000才可以进入)。

客户端将上述数据提交到服务器,假设服务器是用Python编写的,当服务器拿到这些数据后,将数据保存下来,并且需要启一个线程进行房间的创建和等待。房间信息需要存放到内存中,在玩家登录后都能看到房间的信息,这里可以使用一个队列来满足玩家预览房间列表的需求。

考虑到Python语言的运行效率,每进入一个玩家就遍历一遍队列显然不妥,可以考虑增加一个专门的缓存或者专门做查询的Queue进程。这个进程负责管理对外的房间信息的排列和整理,其他进程负责创建房间、进入房间和接通游戏。

当玩家进入游戏后,这个Queue进程已经对玩家的内容进行了初步整理和分配,比如玩家金币不够1000,那么对于该玩家在服务器端已经做了No标记了。所以事实上客户端现在已经拿到能否进入房间的基础信息,并做出对应展示即可,如果条件满足,进入后再进行最终匹配,比如房间密码是否正确,游戏是否开始等。

对于将创建的房间分享到微信或者qq这类需求,需要使用到微信的web开发接口,也就是通过js文件取得了Token信息并且将内容正确派发到微信,当微信朋友点击链接后,使用get方法将链接后面拼上对应字符串。(如:https://www.game_server.com/share?create_id=xxx&room_id=xxx)当web服务器拿到数据之后,通知后台应用启动,如果没有应用,直接呼叫浏览器进行app下载。当玩家进入游戏后,链接Token自动失效。


在进入房间后,一般是不会直接进入游戏的,因为仍有很大的比例这个房间无法达成进入游戏的条件。那么这个阶段也是属于大厅的层面。还是以Python做服务端为例,我们可以另开一个进程来处理游戏逻辑部分,房间的进程将该房间的内容发送到游戏服务器,告诉服务器是否开始游戏,玩家有哪些,每个玩家金币数量等。服务器只会保存房间的具体信息和房间号码,等游戏全部结束后,游戏服务器才会返回给大厅服务器。最终的游戏结果也被视作游戏房间的部分。

假设现在我们已经进入了游戏中,对于判定玩家掉线的情况,因为服务端使用异步方式和客户端通信,比如我们判断有一分钟没有数据发送过来即可判定用户掉线。在掉线后一般需要由机器人接管已掉线玩家,这个逻辑如何实现呢?机器人接管后,是否允许掉线后的玩家再次回到游戏呢?

1、机器人接管后,不允许玩家进入:当玩家重新进入游戏,如果“僵尸玩家”还在上一局游戏中,游戏UI给出提示:您已掉线,请等待xxx分钟。在结束后,自动清理僵尸玩家,玩家重新获得控制权。

2、机器人接管后,允许玩家进入:当玩家重新进入游戏,机器人将控制权移交给玩家。这种方式需要服务器保存玩家目前的所有状态,由于是socket形式,在玩家退出后,这条socket的句柄已经被回收;在玩家第二次进入后要进行二次分配,插入到当前游戏中。

3、掉线后机器人不接管:如果游戏内容允许缺人,直接对掉线玩家扣除金币;不允许缺人将结束游戏,补偿剩余玩家。这种方式就相对简单粗暴了,不过在游戏开发初期,也不失为一种选择。

参考:

《游戏服务器架构与优化》 蔡能

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 才浅coding攻略 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
卡牌类游戏游戏大厅——上篇
通常在打开一个游戏后的基础流程包括登录/注册->选择游戏区域->认证->进入大厅->选择房间/建立房间->进入房间->等待游戏/建立游戏->游戏中。以上环节中,游戏大厅包含了登录和进入游戏前的策略,针对其中的每一环节都需要思考其中的实现细节,今天阿巩将以卡牌类游戏为例,来看实现一个游戏大厅的流程及需要注意的细节。It will all be okay,日拱一卒,我们开始吧!
才浅Coding攻略
2022/12/12
1.2K0
卡牌类游戏游戏大厅——上篇
从卡牌类游戏初探游戏服务器
好久不见阿巩这熟悉的对话框了,作为春节假期的最后一天,一定要上点游戏服务器相关的干货才对得起大家的关注。菜鸟的每日一题系列还会继续不间断更新,新开的游戏服务器相关文章暂定为周更(立个flag)欢迎大家催更。感谢朋友们过去一年的陪伴,新年伊始 It will all be okay,日拱一卒,我们开始吧!
才浅Coding攻略
2022/12/12
2.4K0
从卡牌类游戏初探游戏服务器
游戏服务器的架构演进(完整版)
游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类软件的特点是要非常关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。
曲水流觞
2020/07/13
5.6K0
游戏服务器的架构演进(完整版)
再谈游戏服务器架构
一、服务器划分原则 在现有的网络游戏服务器端架构中,多是以功能和场景来划分服务器结构的。负载均衡和集群暂且不在本文中讨论(bigworld、atlas)。服务器划分可以基于以下原则: 分离游戏中占用系统资源(cpu,内存,IO等)较多的功能,独立成服务器。 以多线程或多进程的编程方式适应多核处理器。 在同一个服务器架构下,应尽可能的复用某些服务器(进程级别的复用,比如场景服务器)。 运行时玩家数据的保存、修改及数据流向应该是设计的焦点,它同时也决定了服务器应该如何划分。 服务器的划分应该适度,在保
李海彬
2018/03/22
4.5K0
再谈游戏服务器架构
12 经典游戏服务器端架构概述
现代电子游戏,基本上都会使用一定的网络功能。从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序。因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构。 软件架构的分析,可以通过不同的层面入手。比较经典的软件架构描述,包含了以下几种架构: 1.运行时架构——这种架构关心如何解决运行效率问题,通常以程序进程图、数据流图为表达方式。在大多数开发团队的架构设计文档中,都会包含运行时架构,说明这是一种非常重要的设计方面。这种架构也会显著的影响软件代码的开发效率和部署效率。本文主要讨论的是这种架构。 2.逻辑架构——这种架构关心软件代码之间的关系,主要目的是为了提高软件应对需求变更的便利性。人们往往会以类图、模块图来表达这种架构。这种架构设计在需要长期运营和重用性高的项目中,有至关重要的作用。因为软件的可扩展性和可重用度基本是由这个方面的设计决定的。特别是在游戏领域,需求变更的频繁程度,在多个互联网产业领域里可以说是最高的。本文会涉及一部分这种架构的内容,但不是本文的讨论重点。 3.物理架构——关心软件如何部署,以机房、服务器、网络设备为主要描述对象。 4.数据架构——关心软件涉及的数据结构的设计,对于数据分析挖掘,多系统协作有较大的意义。 5.开发架构——关心软件开发库之间的关系,以及版本管理、开发工具、编译构建的设计,主要为了提高多人协作开发,以及复杂软件库引用的开发效率。现在流行的集成构建系统就是一种开发架构的理论。
范蠡
2018/07/25
8K1
12 经典游戏服务器端架构概述
从王者荣耀聊聊游戏的帧同步
农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。
张哥编程
2024/12/19
3050
从王者荣耀聊聊游戏的帧同步
可复用的游戏服务器端开发框架之副本系统
在早期的联网游戏中,有两种典型的不同种类,一种是类似《传奇》的全地图,分区分服的MMORPG;另外一种则是类似QQ Game类型的“大厅-开房间”的全区全服游戏。 这两种游戏在底层架构上有非常大的差异。但是,随着网络游戏的发展,在MMORPG中出现了类似开房间的“副本”系统,甚至出现了可以跨服跨区玩的“副本”;而开房间的游戏也离开了简单的UI界面,出现了《地下城勇士》(DNF)这类所有战斗都发生在关卡副本中的游戏。到后来,如《英雄联盟》《星际争霸2》这类复杂的游戏,都渐渐走上了全区全服开房间的架构。因此,本
韩伟
2018/03/05
2.2K0
可复用的游戏服务器端开发框架之副本系统
PUN☀️四、服务器大厅建房解析
PlayerNumbering作为PUN实用脚本,挂载到场景中,配合我们写的代码。
星河造梦坊官方
2024/08/15
1040
PUN☀️四、服务器大厅建房解析
EdgeOne 第三季度产品动态:四大板块持续升级,赋能开发者无限可能
EdgeOne 始终坚持聆听用户之声,持续进行产品升级迭代,钻研先进技术方向。当前 EdgeOne 产品四大板块已逐步成熟,为开发者提供多样化的技术解决方案:
EdgeOne 小助手
2024/12/05
810
腾讯云大学大咖分享 | 小游戏联机对战引擎实践
腾讯云大学本期直播课程邀请到了腾讯云Web前端工程师通过两个小游戏demo,讲解了小游戏联机对战引擎中帧同步和状态同步两种应用场景。「腾讯云大学」联合「云加社区」为大家整理了课程精彩干货!
可可爱爱没有脑袋
2019/09/11
4.4K0
腾讯云大学大咖分享 | 小游戏联机对战引擎实践
经典游戏服务器端架构概述 (2)
根据文章内容总结的摘要
韩伟
2016/12/02
5.9K0
经典游戏服务器端架构概述 (2)
LollipopGo游戏服务器-数据一致性设计
本期课程给大家谈谈数据一致性,因为经常有同学问到,今天就给大家讲讲,数据一致性大致可分为三类:
李海彬
2020/04/07
1.2K0
LollipopGo游戏服务器-数据一致性设计
基于QT开发的开源局域网联机UNO卡牌游戏报告(附github仓库地址)
源代码: https://github.com/yunwei37/UNO-game-oop
云微
2023/02/11
1.3K0
基于QT开发的开源局域网联机UNO卡牌游戏报告(附github仓库地址)
多进程游戏压测工具
首先对于游戏的业务,一般是玩家登陆到大厅,有一些任务、物品、好友、排行榜、聊天这种交互,其次是玩家与玩家之前的匹配与对局。以Moba游戏为例,玩家主要的行为就是登陆后进行匹配,匹配到水平差不多的10个人,分为两队,每组5个人创建对局进行pvp战斗,玩家的操作以指令的方式由客户端发到服务器。 大厅中客户端与服务器的连接是TCP连接,对局中玩家的操作更关注实时性,一般的用可靠UDP进行通信。
changan
2020/11/04
1.5K0
多进程游戏压测工具
案例分享:使用 Agones 在 TKE 上部署游戏专用服务器
有一款 PVP(房间类)的游戏基于虚幻引擎 UE5.4 开发,玩家在线匹配到一个房间后,连上同一个 DS 开始进行对战。
imroc
2025/02/12
1610
案例分享:使用 Agones 在 TKE 上部署游戏专用服务器
使用 Agones 在 TKE 上部署游戏专用服务器
陈鹏,腾讯云容器服务产品架构师,拥有丰富的云原生技术实践经验,同时也是 Kubernetes、Istio 等云原生项目 Contributor,《Kubernetes 实践指南》等电子书作者。
腾讯云原生
2025/02/05
2040
使用 Agones 在 TKE 上部署游戏专用服务器
什么是游戏盾?怎么进行防护?
1.抗D盾是针对游戏行业推出的高度可定制的网络安全解决方案,可以针对大型DDoS攻击(T级别)进行有效防御,同时能彻底解决游戏行业特有的TCP协议的CC攻击问题。
德迅服务器抗D盾
2023/11/16
6890
什么是游戏盾?怎么进行防护?
简单几步,教你搭建一款联机游戏
联机游戏的社交属性强,玩家粘性高,但是相对单机游戏,联机游戏开发周期长、成本高,因此很多开发者选择开发单机游戏,然而投入大量开发时间和资源,单机游戏活跃度不温不火,玩家数量持续流失。本文利用两款小游戏案例介绍如何快速搭建联机玩法,帮助开发者短期低成本实现一款联机游戏。
腾讯游戏云
2021/01/04
7.2K1
简单几步,教你搭建一款联机游戏
腾讯云专家工程师林洁文:如何快速构建一款联机游戏
11月24日,云+社区开发者大会(苏州站)圆满落幕。本次开发者大会的主题为“姑苏城外论技术:物联网·小程序·微服务”,邀请了腾讯内部及业内行业大咖就物联网、小程序、微服务等当前互联网领域的热点技术的落地实践问题进行了深度探讨。同时,各位技术专家也与到场的开发者们展开了开放式对话,精彩不断。下边是林洁文老师关于如何利用小游戏联机对战引擎快速构建一款联机游戏,为游戏提供房间管理、在线匹配、帧同步、状态同步等网络通信服务,帮助开发者快速搭建多人交互游戏的分享。
TVP官方团队
2019/12/03
2.2K0
腾讯云专家工程师林洁文:如何快速构建一款联机游戏
仅有两名前端开发,联机小游戏一周内上线,如何做到?
它在上线四小时内用户数激增60倍,获得新华社力荐,开发过程中仅投入2个前端开发+1个美术+1个策划,这款小游戏里,单机玩法、邀请好友对战、在线匹配对战、排行榜、背景音乐音效等功能一应俱全。
泛互联网行业产品团队
2020/03/04
10.1K1
仅有两名前端开发,联机小游戏一周内上线,如何做到?
推荐阅读
相关推荐
卡牌类游戏游戏大厅——上篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档