Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述

这篇具有很好参考价值的文章主要介绍了Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter

Flutter游戏引擎Flame系列笔记
1.Flame引擎概述

- 文章信息 - Author: 李俊才(jcLee95)
Visit me at: https://jclee95.blog.csdn.net
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/132119035

【介绍】:本文介绍Flame引擎安装和该模块的整体信息。

上一节:《 | 下一节:《 通过Flame创建第一个游戏


1. Flutter游戏开发现状

当前,Flutter 在游戏开发领域的应用正在逐渐增加,尤其是对于简单的2D游戏和一些轻量级的3D游戏。虽然Flutter主要定位于移动应用和UI开发,但其强大的绘图和动画能力使得它也适用于游戏开发。

在2D游戏开发方面,Flutter提供了强大的绘图功能,使得开发者可以轻松创建2D游戏。您可以使用Canvas来绘制自定义的游戏界面,处理用户输入并实现游戏逻辑。

3D游戏上,尽管Flutter的3D图形能力相对较弱,但一些轻量级的3D游戏也可以在Flutter中实现。目前,Flutter的3D游戏开发相对较少,因为专门的3D游戏引擎在这方面更为强大和适用。

Flutter是基于Skia图形引擎构建的,其主要关注点是用户界面和UI动画,而不是高度优化的游戏性能。因此,对于复杂的3D游戏或需要更高性能的游戏,传统的游戏引擎(如Unity、Unreal Engine等)可能更为合适,不过也可以选择将一些传统的游戏引擎嵌入到Flutter应用中来。

在Flutter中,流行的游戏引擎和库包括 FlameFlareUnity for Flutter

其中:
(1)Flame 是一个用于在 Flutter 中创建 2D游戏 的开源游戏引擎。它提供了一系列易于使用的组件,例如精灵、动画、碰撞检测等,有助于开发简单的2D游戏,它是本系列笔记所记录的主体。其官方地址为:https://docs.flame-engine.org/。

(2)Flare 是一个用于创建矢量图形和动画的工具,它的核心引擎是用 C++ 和 SDL2 编写,也可以在Flutter中使用。虽然它不是传统意义上的游戏引擎,但您可以使用Flare创建复杂的角色动画,并将其集成到游戏中。其官方地址为:https://flarerpg.org/

(3)Unity for Flutter 是一款功能强大的3D游戏引擎,支持多平台发布。虽然 不是 Flutter 的原生解决方案,但 Unity 提供了将游戏 嵌入到Flutter应用中 的选项,从而在 Flutter 应用中展示 Unity游戏 内容。
模块 flutter_unity_widget (仓库地址为:https://github.com/juicycleff/flutter-unity-view-widget)用于在 flutter 中嵌入 unity,并且依据其介绍,它在Android, iPad OS, iOS, Web平台上效果都很好。

下面的一篇博客记录了 如何将Unity游戏嵌入到Flutter App中来,图文并茂,感兴趣的读者可以参考:How to embed an Android Unity game in a Flutter app:https://blog.codemagic.io/how-to-embed-an-android-unity-game-in-a-flutter-app/。

2. Flame引擎整体情况介绍

2.1 关于Flame

Flame是一个由Flutter支持的最轻量级、最小化的游戏引擎。它提供了一些简单有用的API,允许开发者在 Flutter 基础上轻松地开发出 2D 游戏。由于 Flame 使用的是 Flutter 平台,因此你可以配合使用 Flutter 的多种功能,包括但不限于 Flutter 丰富的 UI 工具、跨平台的特性等等。

依据其官方的介绍,Flame 是一个模块化的 Flutter 游戏引擎,为游戏提供了一整套偏僻的解决方案。它利用 Flutter 提供的强大基础设施,但简化了构建项目所需的代码。

Flame的官方文档地址为:https://docs.flame-engine.org/。
Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter

Flmae 中,提供了一个简单而有效的游戏循环实现,以及您在游戏中可能需要的必要功能。包括 输入Input)、图像Images)、精灵Sprites)、精灵表Sprite Sheets)、动画Animations)、碰撞检测Collision Detection)以及“火焰组件系统”(Flame Component SystemFCS)。

2.2 Flame的特点

Flame游戏引擎的主要特性特意归纳为以下四点:

  1. 首先,Flame可以与Flutter无缝集成 。如果你已经熟悉Flutter的开发环境,使用Flame将会非常轻松。Flame没有引入什么新的构建概念,它完全建立在原生Flutter环境之上;
  2. 其次,Flame具有优秀的渲染性能。根据官方的介绍和开发者的反馈,Flame的表现优越,可在大多数设备上达到满格的FPS(每秒帧数);
  3. 支持跨平台开发。Flame游戏可以在 iOS 和 Android 上运行,甚至是Web和桌面(尽管Web和桌面目前还在预览阶段);
  4. Flame 提供了基础但强大的游戏开发组件 。 Flame内置了Sprite(精灵图)、精灵表、瓦片地图以及粒子系统等游戏开发中常用的组件。

2.3 Flame官方提供的独立软件包

模块 描述 主页
flame_audio 它使用Audioplayers包提供音频功能。
如果你想播放背景音乐、环境声音、音效等,请将其作为依赖项添加到您的 Flame 游戏中。
https://pub.dev/packages/flame_audio
flame_forge2d 它使用Flame自己的名为Forge2D的Box2D端口提供物理功能。 https://pub.dev/packages/flame_forge2d
flame_tiled 这提供了与Tiled 模块封装的集成。 https://pub.dev/packages/flame_tiled
flame_svg 该模块提供了与 flutter_svg 模块的集成。 https://pub.dev/packages/flame_svg

3. Flame的安装

安装Flame非常简单,主要需要几个步骤,我们一步步来看。

步骤一:安装Flutter

由于Flame建立在Flutter上,所以在安装Flame之前,需要确保Flutter已经安装并正确配置。

如果还没有安装,请访问官方Flutter安装页面(https://flutter.dev/docs/get-started/install )并按照安装步骤进行操作。

步骤二:创建Flutter项目

你可以在已经存在的Flutter项目上安装Flame,或者是新建一个Flutter项目,具体的创建命令如下:

flutter create my_game

步骤三:在项目中添加Flame依赖

进入你的Flutter项目,在 pubspec.yaml文件中添加Flame的依赖。具体依赖版本请访问官方文档查看最新版本。下面是一个例子:

dependencies:
  flutter:
    sdk: flutter

  flame: ^1.8.1

并在控制台执行 flutter packages get 来下载和安装依赖。

经过以上步骤,Flame已经成功安装在项目中。接下来就可以开始使用Flame来构建你的游戏了。

4. Flame的基础架构

在深入了解Flame如何开发游戏之前,我们需要先了解一下Flame中的一些基本概念和核心组件。本节总结了Flame框架中的六个概念,分别是 游戏循环组件输入处理资源管理碰撞检测

4.1 游戏循环 (Game Loop)

游戏循环是游戏开发中非常基础的概念,它实际上就是一个在游戏运行期间不断循环进行的过程。游戏循环中主要包含两个操作:更新(Update)和渲染(Render)。更新处理游戏逻辑,例如角色移动、碰撞检测等;渲染则负责显示游戏的画面。Flame中有一个名为 Game的抽象类,开发者需要继承这个类并实现相应的 updaterender方法。

4.2 组件 (Components)

在Flame中,组件代表了游戏中的所有元素,例如角色、按钮、背景图等。组件的设计遵循"组合优于继承"的原则。这使得在游戏开发过程中,可以通过组合不同的组件来实现复杂的功能。Flame中常见的组件包括:SpriteComponent(精灵图)、TextComponent(文本)、AnimationComponent(动画)等。

4.3 层 (Layers)

Flame支持将组件放置在不同的层上,以实现游戏中的层叠效果。层可以帮助你管理游戏场景的组织结构,并控制组件的绘制顺序。

4.4 输入处理 (Input Handling)

Flame提供了与Flutter平台无缝集成的输入处理功能,例如触摸、拖拽、点击等。你可以很容易地为组件添加事件监听器,实现在Flutter环境中的交互功能。

4.5 资源管理 (Assets Management)

游戏开发过程中,涉及到许多资源,例如图片、音频等。Flame提供了一套资源管理机制,方便你加载、缓存和访问游戏所需的资源。

4.6 碰撞检测 (Collision Detection)

Flame也支持碰撞检测功能,将碰撞检测组件添加到游戏元素中,可以为游戏逻辑增加判断条件,例如角色与敌人发生碰撞等。

现在您应该对Flame的基本架构有了一个大致的了解。在实际开发过程中,还有很多更高级的功能等待着我们去探索。在接下来的章节中,我们将深入学习如何在Flame中创建场景、角色、交互以及其他有趣的功能。

5. 关于Flame的示例项目

你可以在 https://examples.flame-engine.org 页面上找到大量的Flame的示例。该网站页面元素如下:

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter
其中,点击展开左侧的“导航”可以看到一个基于不同知识点主题组织的目录:
Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter
右侧的说明按钮可以打开当前游戏项目的介绍或指引:
Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter
“查看源码”按钮可以看到当前项目的源代码,这一般回通过浏览器打开当前项目的github页面地址:
Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter
“设备预览”按钮可以选择游戏预览的设备和设备的属性:
Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述,Dart语言与Flutter框架开发笔记,Flutter的Flame游戏引擎,游戏引擎,Flame,Flutter文章来源地址https://www.toymoban.com/news/detail-628025.html

到了这里,关于Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter Dart语言(04)库操作

    该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。 引入代码如下所示: 一般从官方网站:Page 1 | Top packages中 搜索需要的第三方库,打开项目中的配置文件,名为:pubspec.yaml,找到dependencies选项,这

    2024年02月14日
    浏览(41)
  • Flutter框架性泛学习系列之一、Flutter框架概述与源码获取

    Flutter是一种跨平台的移动应用开发框架,它使用Dart语言编写,并且具有高性能和灵活的UI设计能力。Flutter的源码是开源的,可以在GitHub上找到。 任何知识体系,都需要系统的去学习,有一个大概的框架,学习才能如遇得水。知道自己学习的是什么,属于知识体系中的哪一环

    2024年02月21日
    浏览(40)
  • flutter游戏引擎,1307页字节跳动Android面试全套真题解析火了

    我以为是HR一面,结果是技术,没想到啊,没想到! 1、描述Activity的生命周期。 2、描述一个Activity启动另外一个Activity的生命周期 3、Activity标签可以配置什么 4、IntentFilter里面的标签可以干嘛 5、Service怎么启动 了解IntentService吗? 6、几大控件有 7、存储数据的方式有 8、Inte

    2024年03月09日
    浏览(39)
  • 【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系?

    【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系? 👏🏻 正在学 Flutter 的同学,你好! 😊 本专栏是解决 Flutter 面试过程中可能出现的问题,而进行汇总整理的。一个问题一篇文章,尽可能详细解答,满足面试需求。 🔍 想解决开发中的零散问题?碎片化教程 👉 Flutte

    2024年02月22日
    浏览(46)
  • 【Flutter】Flutter Dart 获取当前时间戳

    在日常的软件开发中,我们经常需要获取当前的时间戳。无论是用于日志记录,还是用于生成唯一标识符,或者是用于时间同步,时间戳都发挥着重要的作用。 本文将详细介绍如何在 Flutter 和 Dart 中获取当前时间戳。 通过阅读本文,你将掌握以下知识: 了解时间戳的重要性

    2024年02月12日
    浏览(39)
  • Flutter学习2 - Dart

    Dart语言特点: Dart 2.0 开始便是强类型语言,而且是静态类型的(可以类比Java,C#等) 强类型语言的优点:所有类型的检查必须在编译的时候完成 前端开发的 js 语言是弱类型的语言 强类型的语言需要在定义的时候指定类型,如果不指定,编译器也可以在赋值的时候推断出变

    2024年02月21日
    浏览(47)
  • 无涯教程-Flutter - Dart简介

    Dart是一种开源通用编程语言,它最初是由Google开发的, Dart是一种具有C样式语法的面向对象的语言,它支持诸如接口,类之类的编程概念,与其他编程语言不同,Dart不支持数组, Dart集合可用于复制数据结构,例如数组,泛型和可选类型。 以下代码显示了一个简单的Dart程序

    2024年02月10日
    浏览(53)
  • 【Flutter】dart构造函数、工厂构造函数

    在OOP中,我们会使用类来定义一类对象的属性,和行为。通过调用该类的构造函数来创建类的实例对象。在通过调用方法来实现操作行为。 和大多数 OOP 语言一样, dart 的构造函数,采用和类同名的函数名作为构造函数, 不显示声明构造函数会自动创建无参构造,构造函数不

    2024年01月21日
    浏览(33)
  • Flutter 四:main.dart简单介绍

    main.dart简单介绍 运行结果

    2024年02月03日
    浏览(39)
  • 【Flutter】Dio 强大的Dart/Flutter HTTP客户端

    Dio是一个强大的Dart/Flutter HTTP客户端,支持全局配置、拦截器、FormData、请求取消、文件上传/下载、超时等功能。 首先,

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包