Building a (Mini) 3D Flutter Game Engine - Part 1

Published on Jul 13, 2024

Flutter 游戏引擎 游戏开发

Nick Fisher 正在开发一个基于 Flutter 的小型 3D 游戏引擎,利用 Filament PBR 渲染库实现跨平台 3D 渲染,并通过 Google 的 Flutter 游戏比赛作为契机,开始了这个项目的实际开发。他首先构建了一个简单的游戏概念,即划船捡垃圾的游戏,并逐步实现了摄像机跟随、碰撞检测和键盘/鼠标控制等基础功能,尽管采取了一些简化的方法来节省时间。

摘要

Nick Fisher 已经在开发 flutter_filament 包一段时间,该包允许在 Flutter 应用中使用 Filament PBR 渲染库进行跨平台 3D 渲染。虽然他还没有发布关于这个包的博客文章,但提供了一个演讲视频和 GitHub 问题链接作为参考。由于对游戏开发的兴趣和 Google 的 Flutter 游戏比赛,他决定扩展 flutter_filament 为一个基础的 3D 游戏引擎。他的初衷是构建一个尽可能简单的引擎,以便在忙碌的工作中找到时间进行开发。最初的游戏概念是划船捡垃圾,旨在通过捡垃圾获得分数,但最终他选择了一个不同的概念,这将在第二部分中讨论。

在技术实现方面,Nick 使用 Flutter 处理 2D UI 叠加,并利用 flutter_filament 进行 3D 对象的渲染和变换、灯光和天空盒子的添加以及动画播放。他还实现了摄像机跟随、碰撞检测和键盘/鼠标控制等功能。为了简化碰撞检测,他在 Blender 中添加了隐形的碰撞体积。在处理用户输入时,他利用 Flutter 的 GestureDetector 小部件,并考虑了将 flutter_filament 重构为更接近传统游戏引擎循环的结构。

观点

  • Nick Fisher 正在开发 flutter_filament 包,以便在 Flutter 应用中实现跨平台 3D 渲染。
  • 他利用 Google 的 Flutter 游戏比赛作为动力,开始构建一个基础的 3D 游戏引擎。
  • 他的目标是开发一个尽可能简单的“迷你”游戏引擎,以便在忙碌的工作中找到时间进行开发。
  • 最初的游戏概念是划船捡垃圾,但最终选择了一个不同的概念。
  • 他使用 Flutter 处理 2D UI 叠加,并通过 flutter_filament 进行 3D 渲染。
  • 为了实现摄像机跟随功能,他采取了在 Blender 中将摄像机作为模型的子节点导出的简化方法。
  • 碰撞检测采用了简单的 O(N^2) 复杂度算法,尽管这在实际的游戏引擎中是不可取的。
  • 他通过在 Blender 中添加隐形的碰撞体积来解决碰撞检测的问题。
  • 对于键盘/鼠标控制,他利用 Flutter 的 GestureDetector 小部件,并考虑了将 flutter_filament 重构为更接近传统游戏引擎循环的结构。
Read Original Article

《Maeiee成长感悟》- 从北漂到准父亲的生活洞察

生活在快速节奏的都市,作为程序员和即将迎来人生新角色的我,经历了无数难忘的瞬间和深刻的思考。这些体验和感悟,我渴望与你分享。

《Maeiee成长感悟》是一个收集我所有重要生活事件和心得的地方。每一篇文章都是对过去经历的反思和对未来生活的展望,真实记录作为一个程序员、副业探索者、终身学习者、一个准爸爸和一个北漂的多重身份之间的平衡与挑战。

这里没有华丽的辞藻,只有最真实的思考和感受,希望它们能触动你的心弦,也许能在你的生活旅程中提供一些启示和慰藉。