小游戏引擎选型参考指南

news2024/11/17 10:51:04

在这里插入图片描述

写在前面

前面写了几期有关于小游戏的文章,主要从小游戏开发、小游戏运营、小游戏变现等多个角度进行了较为粗略的介绍,很多同学表示对小游戏引擎部分很感兴趣,希望能够有一些更为深入的分析介绍。今天就对目前主流的小游戏引擎进行探讨。

九层之台,始于累土,所有的代码都需要从“0”开始,一行一行的写出来的,简单的游戏这样做可以,但是想要快速的生产产品,这样的步骤一再重复,最终抽取出通用的代码,用来提高工业的生产效率。

观察游戏发现游戏中通用的功能包括UI界面的显示系统,模型的加载系统,物理引擎系统,动画系统等等,这一系列的通用功能集就可以通过游戏引擎实现批量化的实现。

小游戏与小游戏引擎的关系

小游戏现在囊括的范围包括微信小游戏、QQ 空间小游戏、QQ 玩一玩(厘米游戏)、Facebook Instant Games、各手机厂商的快应用小游戏,他们都在尝试着将社交场景和游戏场景做融合。

我们这里以微信小游戏为例,其运行环境是微信小程序环境的扩展,在小程序环境的基础上提供了 WebGL 接口的封装,使得渲染能力和性能有了大幅度提升。不过由于这些接口都是微信团队通过自研的原生实现封装的,所以并不可以等同为浏览器环境。

作为小游戏引擎,可以尽可能简化开发者的工作量,这样能够帮助开发者完成的主要工作包括:

● 引擎框架适配微信小游戏 API,纯游戏逻辑层面,用户不需要任何额外的修改
● 编辑器提供了快捷的打包流程,直接发布为微信小游戏,并自动唤起小游戏的开发者工具
● 自动加载远程资源,缓存资源以及缓存资源版本控制

小游戏引擎选型需要考虑哪些因素

选择小游戏引擎一般情况下需要考虑以下几个方面,其中选择开发语言、性能、应用广度这三个重要的因素进行细致的说明。

● 开发语言的支持
● 2D、3D、VR的支持
● 核心性能
● 引擎的应用广度
● 设计理念
● 工作流支持力度
● 商业化成熟案例
● 学习资源与技术支持能力

1、开发语言的支持

拥有广泛开发者的小游戏开发语言共有2种:TypeScript、JavaScript。TypeScript 属于面向对象的高级脚本语言,通过编译器将原项目代码编译成 JavaScript 代码文件运行于浏览器之中,面向对象的高级语言无论是项目开发管理,还是项目开发的工具环境的成熟度都明显优于 JavaScript 脚本语言,尤其是中大型项目方面。

2、核心性能

性能是小游戏面临的核心门槛,游戏卡不卡顿,流不流畅都是小游戏开发者首要考虑的问题,只有一个成熟可靠的小游戏产品才能吸引用户持续玩下去甚至主动进行社交裂变。

近些年小游戏品质在迅速提高,包括精细的美术和炫酷的动画等。在复杂的游戏项目面前,上述种种元素,其流畅体验度对游戏引擎是极大的考验。所以选择性能优秀的引擎是保证品质的最重要基础,一定要谨慎。

在游戏项目研发开始时,一定要先对复杂的模块做 DEMO 测试,特别是带背景滚动的游戏。比如横屏卷轴游戏,对帧数稳定性要求极高,如果满足不了性能上的需求,可能会带来眩晕、眼花、疲倦等不良体验。

3、应用广度

随着小游戏开发者对于跨端需要的增长,希望自己开发的小游戏不仅是在微信中能够跑起来,还能支持App独立端、H5页面等也具备一定的竞争力和价值,一次开发可发行各个领域版本,这就需要小游戏引擎能够形成跨端统一的能力。

有哪些小游戏引擎

如果我们将以上考虑到的因素作为筛选条件,符合小游戏开发的引擎包括 Cocos2d-JS、Egret、Layabox、Unity是比较符合条件的。我们再通过细致的优劣势对比来看该如何帮助我们选型做决定。

在这里插入图片描述

1、Cocos

Cocos Creator 使用 JavanScript/TypeScript 开发,2010年的时候,能跨平台开发的游戏引擎只有Cocos, 大部分都是2D游戏为主,Cocos 成为了国民手机移动端游戏引擎,那时很多手机游戏,都是基于Cocos开发,也让它迅速了占领了开发者的市场。

后来随着手机硬件的发展,3D游戏越来越多,手游市场份额慢慢的被 Unity 取代。Cocos 引擎完全免费,包体小,做2D游戏技术成熟, Cocos Creator 开发工具和 Unity 的易用性一样,极易上手。

最近2年全新引擎全面支持3D,一次开发能发布到PC端,Android、iOS、微信、抖音、华为等各大小游戏平台。

总结一下Cocos Creator特点:
● 引擎完全免费、开源、包体小、定制灵活;
● 引擎开发2D游戏经过大量验证,非常适合2D游戏开发。
● 全新的3D引擎,能开发3D游戏,但是还有提升空间。
● 一次开发多平台发布,与传统引擎不同的是,可以发布微信、抖音、华为小游戏多个平台。
● Creator 3D引擎生态还不够丰富, 如第三方插件等。
● Cocos H5 游戏runtime内核在行业做的非常好,可以提供高效的H5游戏运行方案。

2、白鹭引擎

白鹭引擎,开发语言是 JavanScript/TypeScript,白鹭游戏引擎对于H5游戏是有着不可磨灭的贡献,它是最早的H5游戏引擎,它里面的很多工具非常好用,到现在还被其他的引擎使用,比如骨骼动画工具,DragonBones 被广泛引用到游戏开发中。

最早一批的 H5 游戏开发者一定都是使用白鹭。白鹭引擎在 H5 游戏这个邻域有着不可磨灭的贡献。后来白鹭也推出了 Native 平台,不过发现目前白鹭引擎逐渐落寞。

总结一下白鹭的特点:
● H5游戏的先驱,为H5游戏做了不可磨灭的贡献。
● H5 2D游戏技术成熟,经过很多商业游戏验证;
● 3D功能有,但是商业项目3D游戏用的比较少。

3、Layabox

Laya 游戏引擎,使用 JavanScript/TypeScript 开发。H5 刚新起时,H5 跑3D游戏,很多公司都不看好,认为以H5的性能,不足以跑效果好的3D游戏, 但是H5游戏有普通游戏无法比拟的优点就是不用安装,点开就可以玩。

那个时候PC页游已经发展成熟,同时手机页游大规模兴起,页游依靠FlashPlayer,而到手机上,就没有FlashPlayer 这个东西,随之取代的就是H5。

Flash 转 H5 商业上不上太成功,后来随着 h5 的发展,直接转为 H5 3D游戏引擎,是最早在H5上跑出大型商业3D游戏的H5 3D引擎, 在H5 3D这块积累了很多经验和成熟上线的产品案例,现在80%左右的 3D 微信、抖音、快应用小游戏都是 laya 引擎做的。

总结一下Laya的特点:
● 最早的被大规模商业项目验证的H5 3D游戏引擎,发布微信抖音等小游戏平台非常成熟。
● 借用强大易用的Unity编辑器可兼容3D资源,如果一个游戏是Unity开发,你要移植到H5,那么Laya一定是首选。

4、Unity

Unity, 使用 C# 或 Lua 语言开发。国民 3D 引擎,这个称号说明了 Unity 在 3D 引擎的市场地位,中小型的游戏公司做 3D 游戏,基本都是用 Unity , 很多大公司的游戏也用 Unity ,AppStore 上面80%的3D游戏都使用 Unity 游戏引擎开发。

为什么 Unity 打败了众多高手,成为国民游戏引擎,我们也好好的说一下。时间回到2010年左右,当时页游比较火,Unity那个时候引擎的定位是能开发PC端游和页游的游戏引擎。

随着手游时代来临,市场急需一个3D游戏引擎,能一次开发多平台发布到 Android、iOS、微信小游戏等 , 而 Unity 成为了当时唯一的3D游戏引擎解决方案。和手游市场一起,Unity实现快速增长。

Unity 能成为国民引擎还有一个很重要的原因,就是对初学者很友好,很方便就可以上手,极大的降低了3D游戏开发难度,Unity 引擎的市场份额越来越大,技术人才、SDK、第三方插件、技术资料等也越来越完整。

总结一下 Unity 的特点:
● 能制作精美的 3D 游戏画面,和定制渲染管线,画面效果不如 UE4。
● 能制作各种类型的 3D 游戏上线,每种类型的游戏都被商业项目验证过。
● 完整的生态,一次开发多, 平台发布。
● Unity 不开源, 需要支付授权费才可以修改引擎代码, 发布后也要付授权费。
● Unity 开发2D游戏相对包体过大。

写在最后

现在市场上的 H5游戏引擎很多,很难去直接定义哪个引擎的好坏,只能说每个引擎都有自己的特性,在某方面跟项目的契合程度比较高。
对于专注于小游戏公司,使用最多的是 Cocos creator 和 Layabox,其中又要属 Cocos creator 最多。

对于中小型以上的游戏公司,使用最多的是 Unity,也是目前市面上使用最广的游戏引擎,也是使用人员最多的引擎。

当然通篇主要研究的小游戏还是以微信为基础,但是目前还有字节、百度、阿里、FinClip等平台可以投放小游戏。当我们开发了微信小程序后,也可以适配其他的小游戏平台,让自己的小游戏能够触达最广阔的用户群体,实现最大的价值。

其中 FinClip 小程序游戏还有个需要特别强调的点,只要开发小程序后适配 FinClip 平台,并在第三方 App 中集成 FinClip SDK 即可实现在第三方 App 中运行小游戏,App 可以是自己的,也可以是外部其他厂商的。这样一来小游戏的价值也能更加广阔,也不限于几大主流平台中。

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

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

相关文章

Java 并发编程 (二)CountDownLatch和CyclicBarrier的使用

CountDownLatch和CyclicBarrier CountDownLatch 功能介绍 CountDownLatch 是一个同步功能的辅助类 线程计数不为0时呈wait状态如果为0则继续执行。通过await 和 countDown 两个方法来实现等待和继续运行。 作用:一个线程或多个线程等待另一个线程或多个线程完成后…

2003-2021年高铁列车信息

2003-2021年高铁列车信息 1、时间:2003-2021年 2、指标: 列车车次、出发站、出发站所属地级市、出发站所属省份、出发站类型、到达站、到达站所属地级市、到达站所属省份、到达站类型、车型、开车时间、到站时间、运行时间、里程 3、指标说明&#x…

58. 微调(fine-tuning)

前面的一些章节介绍了如何在只有6万张图像的Fashion-MNIST训练数据集上训练模型。 我们还描述了学术界当下使用最广泛的大规模图像数据集ImageNet,它有超过1000万的图像和1000类的物体。 然而,我们平常接触到的数据集的规模通常在这两者之间。 假如我们…

3、基于注解的IoC装配与依赖注入

一、XML开启注解支持 1、添加context名称空间 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context&…

03SpringCloudAlibaba服务注册中心—Zookeeper

目录 注册中心Zookeeper 五步曲&#xff1a; zookeeper服务提供者 1、03-cloud-provider-payment-zookeeper-8004 2、pom.xml 3、改yum 4、主启动 5、业务类 测试1&#xff1a; 测试2&#xff1a; ​ 服务节点是临时节点还是持久节点 粗划分&#xff1a; 细划分&am…

南京晓庄Java期末知识点复习

南京晓庄Java期末知识点复习第一章 Java 语言概述第二章 Java 语法基础标识符基本数据类型**运算符****语句**数组和字符串命令行参数输入输出第三章 类五个基本概念类类的封装类的继承**抽象类**接口关键字常用的工具类第四章 Applet及其应用**Java程序的两种基本形式****Appl…

红队渗透靶场之prime1.0(超详细!)

靶场考察知识 Wordpress WordPress是一个免费的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;可以用来创建和管理网站或博客。它是由PHP语言和MySQL数据库构建的&#xff0c;并且拥有大量的插件和主题&#xff0c;可以让您轻松地自定义网站的外观和功能 Wpscan扫…

引用量超6000的语义分割经典论文DeepLabv3解读

分享语义分割领域的一篇经典论文DeepLabv3&#xff0c;由谷歌发表于CVPR2017。开源代码地址&#xff1a; Tensorflow版本&#xff1a;https://github.com/tensorflow/models/tree/master/research/deeplabPytorch版本&#xff1a;https://github.com/open-mmlab/mmsegmentatio…

【Spring 入门教程3】

Spring_day03 &#x1f308;博客主页&#xff1a;屠一乐的博客 &#x1f4c5; 发文时间&#xff1a;2023.1.3 &#x1f388; 一定存在只有你才能做成的事 &#x1f339; 博主水平有限&#xff0c;如有错误&#xff0c;欢迎指正 欢迎各位&#x1f44d;收藏&#x1f48e;评论✉ …

mysql简介

一.mysql简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&a…

TensorFlow之过拟合与欠拟合-3

1 基本概念 过度拟合&#xff08;overfit&#xff09; 正则化&#xff08;regularization&#xff09; L1正则化&#xff08;L1 regularization&#xff09; L2正则化&#xff08;L2 regularization&#xff09; 删除正则化&#xff08;dropout regularization&#xff09…

【计组】异常、CPU指令集--《深入浅出计算机组成原理》(五)

课程链接&#xff1a;深入浅出计算机组成原理_组成原理_计算机基础-极客时间 一、异常 &#xff08;一&#xff09;异常 异常其实是一个硬件和软件组合到一起的处理过程。异常的发生和捕捉&#xff0c;是在硬件层面完成的。但是异常的处理&#xff0c;是由软件来完成的。 …

【并发编程十】c++线程同步——条件变量(condition_variable)

【并发编程十】c线程同步——条件变量&#xff08;condition_variable&#xff09;一、互斥二、条件变量1、为何要引入条件变量?2、不使用条件变量3、使用条件变量3.1、互斥锁有什么问题&#xff1f;3.2、条件变量3.3、条件变量成员函数3.4、demo三、future四、信号量简介&…

【并发编程九】c++线程同步——互斥(mutex)

【并发编程九】c线程同步——互斥&#xff08;mutex&#xff09;一、互斥1、mutex1.1、mutex1.2、 lock_guard1.3、 RAII2、std::recursive_mutex3、std::shared_mutex、std::shared_lock、std::unique_lock4、std::scoped_lock二、条件变量三、future四、信号量简介&#xff1…

chrony服务器

Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&#xff09;同步&#xff0c;因此让你的计算机保持精确的时间&#xff0c;Chrony也可以作为服务端软件为其他计算机提供时间同步服务。 Chrony由两个程序…

【嵌入式Linux环境搭建-10】tftp服务安装、双网卡并行

10.tftp服务安装 板子有有线网卡&#xff0c;需有线连接到电脑 主机安装TFTP服务 $ sudo apt-get install xinetd tftpd tftp $ sudo vim /etc/xinetd.d/tftp /*添加下面内容, service tftp { protocol udp port 69 socket_type dgram wait …

aws lambda 理解RIC和RIE构建和测试容器镜像并通过cdk部署lambda函数

参考资料 AWS Lambda 的新功能 — 容器映像支持 快速构建基于 Lambda 容器镜像的 OCR 应用 利用 Lambda 容器镜像搭建分布式压测引擎 lambda容器镜像构建 可以将 Lambda 函数打包和部署最大 10 GB 的容器映像&#xff0c;轻松构建和部署依赖于大量依赖项的更大型工作负载 …

【Java核心技术】创建多线程

1、多线程的概述 什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。 我们之前启动程序执行后&#xff0c;main方法的执行其实就是一条单独的执行路径。 public static void main(String[] args) {// 代码...for (int i 0; i < 10; i) {System.out.prin…

《柳叶刀》:约20%中国男性死亡可归因于吸烟

*仅供医学专业人士阅读参考 吸烟喝酒可谓众所周知的两大“健康刺客”。一首歌名为《给我一杯酒》中的歌词唱到“给我一杯酒&#xff0c;再给我一只烟&#xff0c;说走就走&#xff0c;我有的是时间”&#xff0c;传唱度极高&#xff0c;甚至还一度成为短视频平台的最热门的BGM之…

概论_第2章_重点内容__随机变量函数的概率分布

一 定义 概括地说&#xff1a; 随机变量Y是随机变量X的函数。 设g(x) 是一给定的连续函数&#xff0c; 称Yg(X) 为随机变量X的一个函数&#xff0c; Y也是一个随机变量。当X取值 时&#xff0c;Y取值 . ~~~~~~~~~~~~~~ 本文讨论连续型随机变量函数。 定理1: 设X为连续型…