導入
今回は、FlutterでGameを作成することができ、そのDemoがあったので、手順にしたがって作成してみました。
自分なりの応用などはなく、ただ写経しただけになります。
使用したサイトや関連情報
こちらのサイトにDemoがあったので、こちらに沿ってDemoアプリを作成しました。
ライブラリとして重要なのは、flame
というFlutterの2Dゲームエンジンのようでした。
ただ、今回は「Flutter」でゲーム作成をするという体験をしたかったのですが、Flutterは3Dグラフィックに対するサポートは乏しく、3Dゲームを作成するには、Unityなどで作成したゲームを以下のライブラリ等でFlutterに埋め込むことになるそうです。
とはいえ、Flutterで2Dゲームが作れるだけでもワクワクするので、上にあるDemoを作成しました。
作成
Demoは手順に従えば問題なく、作成できました。
とくに難しいことはありませんが、flame
ライブラリの使用は初めてだったので、詳細まで理解しようとするとかなり時間がかかりそうな印象でした。
また、私の開発環境は以下の通りですが、おそらくflame
関連のライブラリのバージョンが上記のサイトと異なることが原因で、コードをコピペしていくと、1箇所だけコンパイルエラーとなりました。
そのため以下のように修正しています。ただ、それ以外は完全にコピペで動かすことができました。
dependencies:
characters: ^1.3.0
equatable: ^2.0.5
flame: ^1.15.0
flame_forge2d: ^0.16.0+5
flutter:
sdk: flutter
xml: ^6.5.0
- 修正箇所
class MyPhysicsGame extends Forge2DGame {
MyPhysicsGame()
: super(
gravity: Vector2(0, 10),
- camera: CameraComponent.withFixedResolution(width: 800, height: 600),
+ cameraComponent: CameraComponent.withFixedResolution(width: 800, height: 600),
);
できたもの
丸いキャラクターを飛ばして、四角い敵を倒すゲームです。
重力などもしっかり聞いている感じがあってゲームを作った感はありますね。
リスタート等がないので、再度始めたりするには、アプリをキルする必要がありますが、ゲームとしては完成しました。
所感
まず、マイナス面から。
覚える要素が多い。通常Flutterを触ってアプリ開発していても出会わないクラスやライブラリを使用するため、ある程度の慣れが必要に感じました。
また今回は用意されたアセットを利用したのですが、結局のところゲームはデザインが重要で、そこが難点に感じました。
お絵描きが得意な人はいいかもしれませんが、私はあまり得意ではないので、1から作るとすると、そこがネックに感じました。
一方で、画像生成AIの普及により、画像を作成することのハードルは低くなっていると思うので、もしかしたらAI利用で、そこの障壁はクリアできるかもしれません。
プラス面。
完成して動かせた時の嬉しさや楽しさが大きいです。
普通にアプリ開発でも同じことが言えますが、その度合いがゲーム開発の方が強いように感じました。
よくある言語のチュートリアルでTODOリスト作りました、という時の気持ちとは異なり、より新しいものを作りたい気持ちになりました。
終わりに
今回のDemoを通じて感じた「ゲームを作る楽しさ」は、アプリ開発の新たな視点を与えてくれる気がしました。今後も新しい技術やライブラリを学びながら、自分なりのオリジナルゲームの開発に挑戦していけたらと思います。