简单地说,我们现在是Redis
随着博彩业随着规模的不断扩大,创建独特而动态的用户体验的需求变得更加迫切。由于它的狂热,企业必须最大限度地利用多人游戏体验来吸引和留住客户。然而,公司在尝试扩展多人游戏时面临许多障碍,所有这些都可以通过Redis解决。
个性化交互和高速反应是创造独特用户体验的核心。Redis为游戏发行商提供一个强大的数据库它可以支持低延迟的游戏用例。最近,一个Launchpad应用程序构建了一个独特的应用程序,由于其无与伦比的数据传输速度,该应用程序只能由Redis部署。
这一点至关重要,因为参与者来自世界各地。玩家之间的交互必须实时执行以支持游戏性,要求延迟小于一毫秒。
让我们深入了解这是如何做到的。但是在我们这样做之前,请确保浏览一下我们在发射台.
您将使用Redis构建一个实时地理分布的多人自上而下的街机射击游戏。应用程序的主干是Redis,因为它是一个高效的实时数据库,使您能够存储和分发数据。
随着我们按时间顺序完成每个阶段,我们将对重要术语以及每个Redis函数进行解包。
让我们来确定制作这款游戏所需要的不同组件。该应用程序由3个主要组件组成:
这款多人游戏的主要理念是保持游戏的实时性,并在地理上进行推广。这意味着集群中的所有实例都应该更新,这样就不会失去同步。现在让我们看一下架构。
现在,让我们看看体系结构的流程。
在存储库的根目录下,您将找到Docker compose YAML文件:
在这个YAML文件下,定义了两个主要的服务——redis和backend。
下面是Redis的Dockerfile的样子:
下面是NodeJS后端的Dockerfile:
提升服务
从online_game目录破坏以下命令
RedisGears有三个函数,每个函数都有自己的子函数集:
一旦用户启动游戏,用户要做的第一件事就是使用RedSearch搜索游戏。如果游戏存在,那么该人将尝试加入游戏。如果没有,则会触发RedisGears以创建新游戏。请参见下面的函数
一旦用户创建了一个新游戏,那么其他玩家将加入,每个人都可以玩。
如果没有游戏,则会触发RedisGears以创建新游戏。
一旦用户创建了一个新游戏,那么其他玩家将加入,每个人都可以玩。
这个函数向游戏中添加一个新玩家,其方法与Create_new_game函数相同。再次触发RedisGears,然后创建一个新用户
当用户加入游戏时,会触发RedisGears以启用Join_game函数。这也增加了game_instance (HINCRBY)的玩家计数。
当用户从游戏中删除或选择离开时,RedisGears会被触发以促进这一过程。这也会自动减少玩家数量,并自动创建通知以确认该操作已完成。
在游戏过程中,玩家会发射导弹来消灭其他对手。当玩家发射导弹时,下面的子功能就会被触发:
如果导弹击中另一名玩家,那么该玩家将被从游戏中删除。下面的代码决定了玩家是否被导弹击中。
MESSAGE_EVENT_HANDLERS | 解释 |
p(姿势)参数:[用户id,x,y,方向]; | 客户端接收用户id位置更新 |
C(点击)参数:[user_id, x(它被点击的位置),y(它被点击的位置),角度(从玩家位置到点击位置)]; | 客户端接收到user_id单击事件 |
R (respawn) args: [user_id, x, y]; | 客户端收到user_id已经重生 |
l(离开)参数:[用户id]; | 一个客户端接收到已离开游戏的用户id |
J (join) args: [user_id, x, y] | 一个客户端接收到的用户id已加入游戏,并且用户id已在(x,y)位置生成 |
Uid(用户id) args: [is_valid]; | 客户端接收是否有可能找到“登录用户”的响应 |
Gid(游戏id) args: [is_valid]; | 如果用户是游戏的一部分,客户端将接收(用户授权) |
打击args (user_id):; | 客户端接收到user_id已被命中的消息/客户端可以从呈现它中删除user_id |
重新搜索索引在容器启动时在redis/start\u redis.sh中注册
创建Redis搜索索引:
与任何Redis数据库一样,最受欢迎的资产之一是它能够以无与伦比的效率在组件之间传输数据。然而,在这个应用程序中,如果没有Active提供的异常延迟速度,游戏将无法正常运行。
游戏是纯互动的,来自世界各地的用户都会做出反应,向其他玩家发射导弹。从开始到结束,RedisGears根据应用程序设置的时间顺序部署一系列功能。
由于RedisGears的高效性,可以轻松完成这项工作,从而能够部署一个主动的地理分布自上而下的街机射击应用程序。
如果你想了解更多关于这个激动人心的应用程序,你可以在网站上看到完整的应用程序Redis发射台.还要确保检查所有另一个令人兴奋的应用我们有空位给你。
Jānis威尔克斯有关
Jānis是一名大数据工程师,在航运技术公司工作。
如果你想了解更多关于他的工作和他参与的项目,那就一定要去了解点击这里查看他的GitHub个人资料.