Flutter: Игорь тонет или нет?
Flutter – замечательное кросс-платформенное решение для разработки приложений различной сложности. Однако, в контексте игр, по словам самих разработчиков, оно уступает таким фреймворкам как Unity и Unreal Engine (особенно если речь идёт о сложных 3д-проектах).
While you can create simple 2D games using Flutter, for complex 2D and 3D games, you’d probably prefer to base your app on a cross-platform game engine technology like Unity or Unreal. They have more domain-specific features like physics, sprite and asset management, game state management, multiplayer support and so on.
– https://www.raywenderlich.com/books/flutter-apprentice/v2.0/chapters/1-getting-started#toc-chapter-007-anchor-001
Тем не менее, для Flutter существует довольно функциональная библиотека для создания 2д-игр под названием Flame. Её возможностей будет достаточно для создания 2д-платформеров, файтингов, визуальных новелл и т.п.. Ознакомиться с возможностями движка можно по этой ссылке.
Лично я, в данный момент, занимаюсь разработкой каркаса для визуальных новелл (меню, интерфейс, декорации, персонажи и прочие ключевые элементы для игры этого жанра). По задумке, этот каркас можно будет брать за основу и быстро привносить фантазии и мечты авторов в жизнь. Пока всё в зачаточном состоянии. Может быть, позже расскажу о проекте подробнее.
Также для Flutter есть мощный инструмент под названием Rive. Он позволяет делать качественные анимации и «зашивать» в них логику. Это будут не просто «гифки», а нечто, обладающее «машиной состояний» (state machine). Создаваемые анимации будут опираться на ваш код и переменные в нём. Доступны типы переменных bool (истина/ложь), num (числа), а также триггеры.
В вашем арсенале доступны инструменты анимирования с помощью временной ленты и расстановки ключей (вы определяете, в каком состоянии будет находиться объект в заданное время). Его можно разбить на составные части и перемещать их в пространстве с помощью костей, отвечающих за взаимосвязанное движение всех элементов «скелета».
Несмотря на то, что Flutter не назовёшь специализированным решением для разработки игр, не всё так грустно, как могло бы быть.
Связка Flutter+Flame вам подойдёт, если:
– Вы уже умеете писать проекты на Dart/Flutter, но у вас нет опыта разработки в Unity или Unreal Engine;
– Вы разрабатываете 2D, а не 3D проект (с 3D во флаттере пока грустновато и изменений в ближайшей перспективе не предвидится);
– Вам хочется углубиться в различные детали и ньюансы разработки игр, так как придётся реализовывать много функционала, изначально доступного на заточенных под игры фреймворках, но не доступного в связке Flutter+Flame.