pit-rayの備忘録

知識のあうとぷっと

【C/C++】初心者でも簡単に使えるゲーム用タスクシステムライブラリ

今回はゲーム用のタスクシステムをご紹介します。

タスクシステムは主に弾幕系シューティングゲームやストーリー系のゲーム全般に用いられています。タスクシステムを用いることで、処理する関数の順番を決めたり、途中で特定の関数をストップできたりします。これにより、キャラの登場や一時停止処理などが柔軟に扱うことができます。非オブジェクト指向言語によるゲーム開発には欠かせない存在だと思います。

といっても最近はUnreal Engine 4やUnityにより根本的な部分まで作る必要が無くなったため、あまり需要はないかもしれません。しかし、C言語/C++に入門する方はDXライブラリなどと当ライブラリを用いて、ゲーム自体を作るのに専念できます。

入門してすぐにタスクシステムを構築しようとすると挫折してしまいがちですが、それを当ライブラリが代わりに処理してくれます。プログラミングに勉強する上で、ゲームなどを作りながら行うとモチベーションを保ちながら作れるため、是非利用してみてください。また、タスク一つあたり28バイトなので省スペースで動かすことができます。

タスクとは、一つの処理単位を示しています。例えば、主人公の描画、敵Aの描画といったところです。タスクシステムに登録するうえで、タスクには優先度・処理関数・データを設定します。先ほど挙げた描画を取り上げて具体的に解説をします。

背景の描画というタスクと主人公の描画というタスクを登録するとします。背景が主人公よりも先に描画される必要があることを考慮して、背景の優先度は主人公の優先度よりも高く設定します。処理関数には描画用の関数を、データには画像データやハンドルを渡します。

このようにすることで、タスクシステムは優先度にしたがってタスクの関数を呼び出すように処理します。つまり、プログラムを書く際に関数の呼び出しの順番を考慮しなくてもいいことになります。これは共同開発をする際に大きなアドバンテージになります。なにせ優先度という直感的なパラメータのみ気にすればよいですから。


ライセンスは、MITライセンスを採用しています。

タスクシステムの説明や導入方法はかなり省いておりますので、分からないことがありましたら、お気軽にご質問ください。

GitHubでダウンロードする
リファレンスをみる