2024 구글IO의 포스트 두번째 순서, 바로 Flutter에 대한 새소식입니다.
이 내용은 정확히는 본 강의가 아니라 구글IO 개발자 키노트에서 공개된 내용입니다. 바로 올해 초 Dart를 기반으로 작성된 Flutter용 구글 AI SDK가 출시되었다는 점입니다. 이 SDK를 사용함으로서 텍스트 생성, 요약, 채팅과 같은 AI가 필요할 수 있는 기능을 최소한의 세팅으로 구현할 수 있다는 점입니다. 무엇보다도 Gemini 모든 AI 모델들을 사용할 수 있다는 점입니다.
갑자기 게임에 대해서 언급을 해서 저는 살짝 당황스러웠던거 같습니다. 물론 아무리 Flutter가 운영체제의 도움을 받지 않고 Flutter Framework과 Flutter 엔진이 독립적으로 동작한다고 해도 우리가 많이 알고 있는 게임 앱을 개발한다는 것은 쉽지 않을 테니까요.
물론 그래픽 사양이 높은 게임 앱은 개발하기 어렵겠지만, 이번 강의에서 게임 개발과 관련한 몇가지 기술들을 소개했습니다.
Flame은 flutter의 오픈소스 2D 게임 엔진 중 하나입니다.
C++ 기반의 Flame 렌더러를 사용해 고성능 그래픽을 제공하고, 직관적인 API를 제공함으로서 쉽게 게임을 개발할 수 있게 합니다.
이번 강의에서는 벽돌깨기 게임을 예시로 들어서 설명을 했는데, 이 엔진을 사용했을 때 어떤 종류의 게임들을 개발할 수 있을지는 좀더 확인해봐야 할 거 같습니다.
그리고 Casual Games Toolkit과 같은 게임 게발을 위한 템플릿을 제공하는 툴킷과 Global Gamers Challenge와 같은 대회를 소개하였습니다. 이 내용은 이렇게만 설명하고 넘어가겠습니다.
이번 강의에서 소개한 내용중에 제가 가장 인상깊었던 내용이 바로 이 Impeller입니다. Impeller는 기존 Flutter에서의 렌더링 엔진인 Skia를 대체하기 위해 개발된 새로운 렌더링 엔진입니다.
기존 Skia 엔진은 GPU에서 실행할 Shader라는 것을 컴파일해서 사용하는 방식을 사용하는데, 문제는 Shader로 인해 복잡한 UI를 그리거나 하는 상황에 프레임이 끊기는 현상이 나타난다는 것입니다.
Impeller는 이러한 문제를 보완해서 기존 Skia 대비 훨씬 빠르고 부드러운 렌더링을 제공한다고 합니다. 그리고 SVG 또는 Lottie 에니메이션을 실행할 때 더 빠른 렌더링 성능을 자랑합니다.
현재 이 Impeller는 Flutter 3.10 버전 부터 iOS에서의 기본 렌더링 엔진으로 적용됬는데, 이번 강의를 통해 Impeller 엔진을 올해안에 Android로도 확대 적용한다고 발표했습니다.
Macros는 현재 Dart의 실험용 기능으로 릴리즈되어 있는 기능인데요, 코드를 생성하거나 변형하는 기능을 수행해 반복적으로 코드를 작성하는 행위를 줄이고 가독성 향상에 도움을 주는 기능이라고 합니다.
이 부분에 대한 내용은 아직 다 파악하지 못해 조금 더 내용이 파악되면 수정하도록 하겠습니다.
이번 강의에서는 Flutter Web의 WebAssembly 지원을 발표했습니다. 이를 통해 Flutter로 웹을 개발할 때 빠른 속도와 이전에는 불가능했던 이미지 처리, 3D 그래픽과 같은 것들을 구현하게 될 수 있을 것으로 기대가 됩니다.
하지만 현재는 가비지 컬렉션(WasmGC)을 사용하는 WebAssembly를 대상으로 하여 모든 브라우저에서 호환되는 것은 아니라고 합니다. 그리고 이 외에도 몇가지 제약사항들이 아직 존재하는 상황이니 Flutter로 웹을 개발하실 때 WebAssembly를 적용하는 것은 현재로서는 신중할 필요가 있어 보입니다.
제가 이전에 작성한 Firebase 강의에 경우에는 제가 아는 것들도 많고, 일부 기능들을 제가 실제로 사용하는 것들이 포함되어 있어 적을 내용들이 많았지만, 이번에는 그렇게 많이 적지 못한 것 같다는 생각이 들어 마음이 무겁습니다. 특히 Macros와 관련된 내용은 저도 조금더 스터디가 필요한 상황이라 당장 관련 내용을 적지는 못했습니다. 혹시라도 보시다가 부정확한 내용이 있다면 댓글로 알려주시면 확인 후 수정하도록 하겠습니다.
감사합니다.