浅显易懂的说清楚小游戏与H5游戏的技术区别

news2024/12/24 0:23:15

从“跳一跳”到“羊了个羊”微信小游戏上线4年时间,除了涌现出不少火爆全网的小游戏之外,也有类似于“动物餐厅”、“口袋奇兵”等游戏得以在此孵化繁荣,凭借着微信强大的社交属性小游戏成为游戏厂商在桌面端、App 端、H5 端之外争夺的另一个窗口。

依托小程序而诞生的小游戏为什么能够受到如此大的关注?抛开桌面端和 App 端而言,与 HTML5 游戏相近的小程序游戏为何能频频出爆款出圈?

小游戏的前世今生

小游戏从微信小程序诞生,我们不妨看看他的官方定义:小游戏是以小程序为载体的新游戏产品形态,具备无需下载、即点即玩、体验轻便等特点。

「呼朋引伴,说玩就玩,玩完就走」,这或许是对小游戏最准确的定义。

小游戏的前世

如果要追溯的话,在2016年4月12日,微信发布《微信外链规范》,将诱导分享、诱导关注、H5游戏等9大类外部链接内容列为违规内容,一经发现将立即作停止访问、屏蔽链接等处理。此举一度引发行业对于“微信要封杀H5游戏”的担忧。但现在看来,提前规范H5游戏链接分享行为,除了净化朋友圈内容,也正是腾讯在为微信开放H5游戏平台铺路。

2017年,腾讯正式在微信、手Q两大社交平台启动H5手游首轮测试,首款测试产品是其经典当家休闲游戏之一《天天爱消除》。随即通知小程序功能升级,正式推出小游戏。

在早期小游戏的玩法非常简单,更多类似连连看、俄罗斯方块、找不同等,比如俄罗斯方块,这种主要的技术点就是 DOM 操作,用 jQuery 原生 javascript css3 就可以了。画面内元素比较简单,逻辑不会太复杂,结构与常规Web 页面一致;主要技术点:DOM 元素、jQuery、原生javascript css3。

现在更复杂了一些,加了各种赛车类的、低画质格斗类的和塔防类的等等,总而言之就是在方便使用、方便运行、保证能玩的基础上使玩法更多、体验更优秀。

小游戏的今生

根据腾讯官方在2022年发布的数据显示,目前小游戏的开发者已经达到10万+,其中2021年实现了超 30%的商业增长,连续三年保持可观的增速,全年流水破千万的小游戏产品超过50款,过亿流水7款。

从数据可以明显看到,小游戏生态走向繁荣,其背后的商业规模也在持续的增长。

小游戏和H5游戏相比有何优势

H5 游戏的技术特点

H5 游戏在QQ农场、抢车位、4399小游戏的带动下,曾经也是达到过巅峰的,2017年 H5 游戏市场为30亿元,手游市场规模达到1440亿元。如果要说H5游戏的技术特点,主要应用到 DOM CSS、Canvas、WebGL,以及一些游戏引擎。

优点:

  • 开发成本相对低
  • 跨系统、跨终端、跨平台
  • 无需下载安装,即点即玩

缺点:

  • 制作门槛相对低
  • 缺少固定流量入口
  • 体验差距(性能、流量等)

小游戏的技术特点

小游戏是在 H5 游戏的基础上增加微信社交能力、文件系统、工具链,去掉一些对游戏开发不是那么重要的,像Dom、Bom 等,微信小游戏没有 webview 了,H5 规范 API 这里是微信小游戏 sdk 自己实现的,比如 canvas webgl。

优点:

  • 小游戏的操作逻辑更多,能够实现手搓键盘秀操作,而 H5 游戏只能做到点击互动
  • 能够调用系统的蓝牙、音频权限
  • 有固定的流量入口,可以实现用户的持续运营变现
  • 性能比 HTML5 要高,运行状况也更加稳定
  • 小游戏的画质强体验更好,也能玩到不少创意十足的

缺点:

  • 仅能单一的运行在微信或抖音等平台
  • 游戏的开发和运营受限于各个平台标准

为了更为直观的进行对比,将一些重要的点梳理成为表格形式供大家参考:

小游戏HTML5 游戏
编程语言JavaScript, TypeScriptJavaScript, TypeScript
入口微信/支持小程序游戏运行的App浏览器、公众号…
可用内存
性能上限
交互丰富度
留存 & ARPU高(风口&红海)
点击+激活转化率
常见的开发团队配置研发_2+美术_1+策划*1研发_1+美术_1+策划*1
常见代表跳一跳、欢乐斗地主、羊了个羊、动物餐厅、叫我大掌柜、咸鱼之王……QQ 抢车位、QQ 农场(偷菜)、围住神经猫……

游戏引擎支持度

虽然我们前面说了很多HTML5 与小游戏的区别,但请注意,无论怎样的引擎,最终在游戏运行时所做的大部分事情都是随着用户的交互更新画面和播放声音。

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。

小游戏的开发语言是 JavaScript,那么在引擎的底层就需要通过 JavaScript 调用绘制 API 和音频 API。在小游戏中,常见的引擎如下:

引擎理念
Creat.js一个非常轻量的,基于 HTML5 开发的游戏、动画、交互应用引擎
Pixi.js高性能的 WebGL 模式 2D 渲染引擎,API 简陋,常被 JS 框架封装为渲染内核
Three.js基于 WebGL 的 3D 渲染引擎库
Layabox支持AS3\TSVS三种语言,可同时发布H5、APP、Flash版本,追求性能极致
Egret(白鹭)自建工具链工作流,參考Flash AS3 API的移动端H5引擎,支持打包APP(但是这个好像倒闭了)
Cocos2d-jscocos2d-js继承原生cocos2d引擎的设计理念,API也参考原生cocos2d-x
unity腾讯自行开发的 unity 引擎小游戏转换技术

小游戏和H5游戏的关系也并不是非黑即白的关系,小游戏在H5游戏的基础上不断的优化,更像是我中有你的关系,但不管怎么将技术的持续推陈出新形成了对用户来讲更佳优质的体验,就是一件好事。

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

40个改变你编程技能的小技巧!

40个改变编程技能的小技巧 1、将大块代码分解成小函数 2、今日事今日毕,如果没毕,就留到明天。 如果下班之前还没有解决的问题,那么你需要做的,就是关闭电脑,把它留到明天。 中途不要再想着问题了! 3、…

【LeetCode】不同的二叉搜索树 [M](卡特兰数)

96. 不同的二叉搜索树 - 力扣(LeetCode) 一、题目 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出&a…

学会使用LoadRunner录制脚本

1.LoadRunner安装 https://blog.csdn.net/weixin_48584088/article/details/129012469 2.Loadrunner的基本概念 LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量, 并发用户和性能计数器等方面来衡量系统的性…

Linux数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据,给它传输到其他地方去 如果我们要执行一个命令,它通常是这样的: 标准输入、输出、错误stdin标准输入0stdout标准输出1stderr标准错误输出2标准输入(stdin)…

ESP-IDF:使用多任务测试互斥体mutex

代码&#xff1a; #include <stdio.h> #include “sdkconfig.h” #include “freertos/FreeRTOS.h” #include “freertos/task.h” #include “freertos/semphr.h” #include “esp_system.h” #include “esp_spi_flash.h” /互斥体测试/ SemaphoreHandle_t xmutex; …

【html弹框拖拽和div拖拽功能】原生html页面引入vue语法后通过自定义指令简单实现div和弹框拖拽功能

前言 这是html版本的。只是引用了vue的语法。 这是很多公司会出现的一种情况&#xff0c;就是原生的页面&#xff0c;引入vue的语法开发 这就导致有些vue上很简单的功能。放到这里需要转换一下 以前写过一个vue版本的帖子&#xff0c;现在再加一个html版本的。 另一个vue版本…

CentOS8基础篇5:用户账号与用户组的创建

一、用户与用户组概念 Linux是一个多用户、多任务的服务器操作系统&#xff0c;多用户多任务指可以在系统上建立多个用户&#xff0c;而多个用户可以在同一时间内登录同一个系统执行各自不同的任务&#xff0c;而互不影响。 Linux用户是根据角色定义的&#xff0c;具体分为三…

JVM - 内存分配

目录 JVM的简化架构和运行时数据区 JVM的简化架构 运行时数据区 PC寄存器 Java栈 Java堆 方法区 运行时常量池 本地方法栈 栈、堆、方法区交互关系 Java堆内存模型和分配 Java堆内存概述 Java堆的结构 对象的内存布局 对象的访问定位 Trace跟踪和Java堆的参数配…

【漏洞真实影响分析】Apache Kafka Connect 模块JNDI注入(CVE-2023-25194)

系列简介&#xff1a; 漏洞真实影响分析是墨菲安全实验室针对热点漏洞的分析系列文章&#xff0c;帮助企业开发者和安全从业者理清漏洞影响面、梳理真实影响场景&#xff0c;提升安全应急响应和漏洞治理工作效率。 漏洞概述 Apache Kafka Connect服务在2.3.0 至 3.3.2 版本中&…

sql server安装并SSMS连接

博主简介&#xff1a;原互联网大厂tencent员工&#xff0c;网安巨头Venustech员工&#xff0c;阿里云开发社区专家博主&#xff0c;微信公众号java基础笔记优质创作者&#xff0c;csdn优质创作博主&#xff0c;创业者&#xff0c;知识共享者,欢迎关注&#xff0c;点赞&#xff…

vue3使用vis绘制甘特图制作timeline可拖动时间轴,时间轴中文化

本文写作顺序&#xff1a;效果展示——子组件封装——父组件传值 仅js的原始图&#xff08;回归初始化&#xff09;、撤销&#xff08;上一步&#xff09;功能实现&#xff0c;样式需要自己调整 目录前言&#xff1a;参考文档文章一、实现效果&#xff1a;二、安装插件及依赖&a…

0代码实现接口自动化测试 —— RF框架实践

robotframework是一款关键字自动化测试框架&#xff0c;可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试。 01、安装接口请求的第三方库 pip install robotframework-requests 在python安装目录的Lib\site-packages可以看到 02、接口关键字基础 ro…

【操作系统】操作系统IO技术底层机制和ZeroCopy

1.DMA技术详解 &#xff08;1&#xff09;应用程序 从 磁盘读写数据 的时序图&#xff08;未用DMA技术前&#xff09; &#xff08;2&#xff09;什么是DMA 技术 (Direct Memory Access&#xff09; 直接内存访问&#xff0c;直接内存访问是计算机科学中的一种内存访问技术。…

设计模式之美总结(开源实战篇)

title: 设计模式之美总结&#xff08;开源实战篇&#xff09; date: 2023-01-10 17:13:05 tags: 设计模式 categories:设计模式 cover: https://cover.png feature: false 文章目录1. Java JDK 应用到的设计模式1.1 工厂模式在 Calendar 类中的应用1.2 建造者模式在 Calendar …

Pyton接口自动化相关【易报错问题及解决方法】

Pyton接口自动化相关【易报错问题及解决方法】 目录&#xff1a;导读 Python怎么链接数据库 python 链接数据库时报错 TypeError: %d format: a number is required, not str 是因为端口号写成字符串格式的了 python exists判断文件是否存在 pycharm下查看日志文件中文乱码…

【数据挖掘实战】——电力窃漏电用户自动识别

【数据挖掘实战】——电力窃漏电用户自动识别一、背景和挖掘目标二、分析方法与过程1、初步分析2、数据抽取3、探索分析4、数据预处理5、构建专家样本三、构建模型1、构建窃漏电用户识别模型2、模型评价3、进行窃漏电诊断拓展思考项目代码地址&#xff1a;https://gitee.com/li…

LaoCat带你认识容器与镜像(实践篇二下)

实践篇主要以各容器的挂载和附加命令为主。 本章内容 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Docker > 20.10.22 接上章内容&#xff0c;接下来该章围绕Docker安装并运行之RabbitMQ、ElasticSearch&#xff0c;大部分命令来源于DockerHub官网&#xf…

Apache日志分析器

您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息&#xff0c;您可以判断您服务器的使用情况、找出漏洞所在&#xff0c;并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场&#xff0c;其中包括&#xff1a;识别和纠正频繁出现的错误以增…

github相关

1.本地项目上传到远程github 1.1github上创建项目 1)github上创建项目 2)复制地址 1.2上传自己的项目 1)本地项目目录下执行 git init “git init”命令用于创建git仓库&#xff0c;其可以在一个已有的非git项目的根目录下执行&#xff0c;把已有项目初始化成为git仓库&…

微服务实战--高级篇:多级缓存:Nginx本地缓存、Redis、Tomcat、JVM缓存、数据库

多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时…