开心自走棋:使用 Laf 云开发支撑数百万玩家
先介绍一下开心自走棋
开心自走棋是一款剑与魔法的烧脑自走棋游戏。以著名的魔幻世界观为蓝本,采用了轻松可爱的画面风格,精致细腻的动画和特效来还原魔兽之战。
现在市面上自走棋游戏多是 PvP 玩法为主,而开心自走棋是以 PvE 玩法为主的,让玩家享受轻快沉浸的游戏体验的同时,不失挑战性和趣味性。
大家都了解,无脑的推图是很无聊的事情,在开心自走棋中你会忍不住的打开脑洞排兵布阵,记得我在刚玩的时候,偶然的一次尝试,用几个低级别的女妖轻松通过 BOSS 关卡时,那种以少胜多、出奇制胜的成就感,那一刻宛如当世诸葛亮。
开心自走棋才上线仅半年,就有了几百万玩家,日活更是达到了 20w+。
开心自走棋是七伍 (北京) 数字科技有限公司的大作,成立于2022年,团队仅不到 10 人,本文给大家分享一下我们如何使用 Laf 云开发快速上线和迭代开心自走棋的。
怎么了解到 Laf 云开发的
首先,我们团队初期没有完备的后端基础,就想找一个简单快速的后端的开发方案,不用花费大量时间和资源来构建和维护后端基础设施,加速开发周期,使我们能够更快地将产品推向市场,这对于在竞争激烈的市场中脱颖而出至关重要。
同时,我们对性能和高并发的应对能力非常关注,如上面所介绍的,开心自走棋在上线数月就迎来几百万用户,我们的团队尚没有完备的应对这种大规模并发和吞吐的经验。
可伸缩性对于我们的项目也是至关重要的。我们希望我们的游戏能够应对未来的增长和变化,而不会面临性能或扩展性问题。
最先是调研的腾讯云开发和阿里云开发,上来就被复杂的控制台劝退了,上手使用也异常繁琐,也就没有深入下去,随后就在知乎上搜 “好用的云开发”,翻到一篇标题为《云开发中的战斗机 Laf,让你像写博客一样写代码》,看到标题的瞬间,感觉有戏!
我在看完 Laf 的介绍文章后,深叹这个 Laf 简直就是为我们团队量身定做的产品!同时惊讶 Laf 团队也太了解开发者的需求了,Laf 的作者一定和我们有过同样的需求和痛处。
简单翻了一下 Laf 的文档,看到有一个微信登陆的示例,随手填个 Key 进去,在线点个运行按钮就跑通了,此值深夜,直接睡意全无,我已然决定要深度了解 Laf 云开发。
下面给大家详细分享一下我们对 Laf 的调研和考虑~
“laf 是开源的云开发平台,提供云函数、云数据库、云存储等开箱即用的应用资源。让开发者专注于业务开发,无需折腾服务器,快速释放创意。”
为什么决定使用 Laf 云开发
先给大家分享一下我们比较看重的 Laf 云开发的几个方面:
开箱即用
开箱即用的云函数、云数据库、云存储、域名、HTTPS 证书、网关,提供开箱即用的应用资源是 Laf 最核心的价值,我们不用再 “购买服务器、配置 nginx、解析域名、签发 https 证书、部署数据库、备份、购买对象存储服务、运维” 等等,省去诸如此类的繁琐工作,做为开发者,我们过去都重复这些琐碎事务上百次,浪费时间和精力。
受益于这些开箱即用的开发体验,我们可以专注的快速上线和迭代开心自走棋。
完全开源
Laf 是完全开源的项目,做为开发者,天然会对开源的开发方案更有好感,尤其在经历过腾讯云开发涨价、字节轻服务停服下线等事件之后,我们在技术方案选型时也有深深的担忧。Laf 的开源协议使用的 Apache-2.0 license,而且是整个云平台的代码都开源,在 GitHub 上已经有 6K stars (上半年我们调研的时候是 4K stars),并且从提交记录上可以看到每天都在更新,社区非常活跃。
开源的项目和活跃的社区,给我们技术选型决策很大的信心。
1C2G 支撑数万日活业务
Laf 的运行时是 Node.js 常驻实例,单实例可以支撑非常高的 QPS,开心自走棋初期只使用 1 核 2G 规格的应用,便可支撑数万日活的业务。并且随着业务负载增加,可以非常方便的扩展应用规格,并且在升级规格期间 Laf 可以做到热更新不中断业务请求。尤其是本月初,Laf 作者对运行时又做了一次非常大的性能优化,QPS 直接翻了 4 倍,同时应用的负载水位反而下降 2 倍!
实践出真知,现在开心自走棋的应用,以很低的负载水位,轻松支撑超 20 万日活的业务!!
弹性伸缩
Laf 的实例支持根据负载情况自动水平扩展和收缩,开心自走棋在白天和晚上的请求量最大,凌晨 2 点到早上 6 点请求量不足白天的三分之一。开启弹性伸缩后,Laf 会根据实例负载水平,白天请求量大的时候,自动水平扩展实例数,在凌晨玩家下线睡觉时,自动收缩实例的数量,闲时可以节约成本。
Laf 允许我们根据需求进行扩展,无需担心硬件或基础架构的限制。这意味着我们可以灵活地应对用户数量的变化,而无需重新设计或更改应用程序。
原生长连接支持
Laf 天然支持标准的 WebSocket,长连接对大多数小游戏来说是刚需,在开心自走棋中聊天系统就是使用 WebSocket 来实现的。值得一提的是,我们在 Laf 上仅用了一个 1 核 2G 的规格的单实例应用,就能轻松应对 10K+ 的实时在线用户。
在做压力测试时更是支撑高达 100K 的长连接。
请求无冷启
Laf 的运行时是常驻内存的,云函数的请求是没有冷启动时间的,HTTP 请求可以做到 20 毫秒响应。而市场上的同类产品,几乎都是采用的有冷启的函数计算方案,请求的冷启时间动辄 200 毫秒以上。
不得不再说一遍,Laf 团队是真的了解开发者的需求!
总的来说,选择 Laf 云开发是出于对快速开发、跨平台支持和可伸缩性的需求,以满足我们的项目要求。它为我们提供了一个强大的工具,使我们能够专注于游戏的开发和用户体验,而不必担心底层基础设施的维护。这为我们提供了一个竞争优势,并支持我们实现长期的项目目标。
开心自走棋:使用 Laf 云开发支撑数百万玩家的更多相关文章
- 云开发中的战斗机 Laf,让你像写博客一样写代码
各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? 理想的需求应该是可以在线编写.调试函数,不用重启服务,随时随地在 Web 上查看函数 ...
- FEDay会后-Serverless与云开发,可能是前端的下一站
进化本身是生物体与环境之间持续不断的信息交换的具体表现. -- 摘自<信息简史> 很荣幸在9月21号成都举办的第五届FEDay上作为讲师为大家分享腾讯云在近两年推出的云开发相关的技术和知识 ...
- 聚焦“云开发圆桌论坛”,大前端Serverless大佬们释放了这些讯号!
4月14日,由云加社区举办的TVP&腾讯云技术交流日云开发专场,暨"腾讯云-云开发圆桌论坛"在北京.深圳两地同步举行. 当天下午,一场主题为"基于大前端和node ...
- 【小程序云开发入门】quickStart
开发者可以使用云开发开发微信小程序.小游戏,无需搭建服务器,即可使用云端能力. 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现 ...
- 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境
北京时间 2019 年 11 月 4 日,在 Microsoft Ignite 2019 大会上,微软正式发布了 Visual Studio Online (VS Online)公开预览版! 如今发布 ...
- Web开发者的10个最好的云开发环境
1. Cloud9 IDE cloud9 Cloud9是我最喜欢的一个最好的云开发环境,它可以让我在任何时间任何地点进行代码编写.运行和调试.Cloud9对Node.js 和 JavaScript代码 ...
- Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)
Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- 【微信小程序云开发】从陌生到熟悉
前言 微信小程序在9月10号正式上线了云开发的功能,弱化后端和运维概念,以前开发一个小程序需要申请一个小程序,准备一个https的域名,开发需要一个前端一个服务端,有了云开发只有申请一个小程序,一个前 ...
- 小程序云开发--云函数上传文件或图片 base64
云函数开发遇到的问题 在微信云开发环境当中,普通的用户并没有往云存储内写入文件的权限 所以普通用户想要使用wx.cloud.uploadFile显然是不现实的 但是我们同时也知道,云函数是后台服务端, ...
随机推荐
- 一文浅谈Mockito使用
一.前期准备- 1.准备工作 <!--mockito依赖-->a <dependency> <groupId>org.mockito</groupId> ...
- 聊聊JDK19特性之虚拟线程
1.前言 在读<深入理解JVM虚拟机>这本书前两章的时候整理了JDK从1.0到最新版本发展史,其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性,在调研JDK19新增特性的 ...
- python-手机自动化环境部署
关于ui-automator,google的官方介绍: https://developer.android.google.cn/training/testing/ui-automator https: ...
- Opencv系列之一:简介与基本使用
1 Opencv简介 Opencv是计算机视觉中经典的专用库,其支持多语言,跨平台,功能强大.Opencv-Python为Opencv提供了Python接口,使得使用者在Python中能够调用C/C+ ...
- 【Unity3D】UI Toolkit数据动态绑定
1 前言 本文将实现 cvs 表格数据与 UI Toolkit 元素的动态绑定. 如果读者对 UI Toolkit 不是太了解,可以参考以下内容. UI Toolkit简介 UI Toolki ...
- java后端操作树结构
一.树结构的三种组装方式(递归.双层for循环,map) (1)递归 普通递归方法 public Result getBmsMenuList(UserSessionVO userSessionInfo ...
- 二进制枚举&爆搜DFS
给定一个如下图所示的全圆量角器. 初始时,量角器上的指针指向刻度 0. 现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针) ...
- Django + celery + redis 执行异步任务及查看结果
官方文档 https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-wit ...
- [vue]精宏技术部试用期学习笔记 III
精宏技术部试用期学习笔记(vue) 父子通信 什么是通信 / 为什么要通信 通信即在不同组件之间传输数据 当在 复用组件 时,需要传递不同数据达成不同的表现效果 能够根据其他组件的行动,响应式 的做出 ...
- 【随手记】python免api调用谷歌翻译
pip3 install googletrans==4.0.0-rc1 from googletrans import Translator translator = Translator() tra ...