「ゲームエンジン・ライブラリ・ツールの開発 Advent Calendar 2016の3日目です。
Altseedとは
初めに
公式より引用
Altseedは複数のプログラミング言語に対応したゲームエンジンです。C++、C#、Javaといった複数のプログラミング言語で 同じゲームエンジンを用いて開発できます。プログラミング言語が異なってもほとんど同じ記述でゲームを開発できます。 同じ組織内で複数のプログラミング言語が使用されている大学のサークルの講習や他のプログラミング言語を学ぶ際に役立ちます。
とあるとおり、複数のプログラミング言語で使用できることを特徴としたゲームエンジンです。C++を使っている人が新しいプログラミング言語を学ぶために、ただHelloWorldの文字を表示するだけではではなく、とりあえずゲームを作って学んでみようという場合に便利です。
教育に便利とありますが、実際はしっかりとしたゲームを開発できる性能があります。採用事例は公式サイトにあるので見てみましょう。
特徴
複数プログラミング言語対応というとC言語のような関数だけで構成されるイメージがあると思いますが、Altseedはオブジェクト指向です。標準でオブジェクト指向に適した設計になっており、実際のゲームに使用される機能を短いソースコードで実装できます。当然、それをC++やC#両方で実現できます。
予め、ゲームに必須な機能も最初から提供されています。
例えば、普通に記述すると長くなるシーン遷移のフェードインアウトですが1行で記述できます。
asd.Engine.ChangeSceneWithTransition(new Transition_Fade_Scene2(), new asd.TransitionFade(1.0f, 1.5f));
ポーズも3行で記述できます。
foreach(var layer in Scene.Layers)
{
if(layer != this) layer.IsUpdated = false;
}
面倒なUI画像の配置もpsdファイルをほぼそのまま使うことにより楽々できます。
ちなみに、WindowsでもMacでもおそらくLinuxでも動作します。
使い方
公式で配布しているパッケージに数十個のサンプルおよびマニュアルがあります。これらを読むことで大体使えるようになると思います。
また、C#限定ですが、公式のSTG製作講座があります。
複数プログラミング言語
C++、C#、Javaで空のウインドウを出してみました。.NETとJVMに対応していれば他のプログラミング言語でも使用できます。
C++
void main()
{
// Altseedを初期化する。
asd::Engine::Initialize(u"Empty", 640, 480, asd::EngineOption());
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedの終了処理をする。
asd::Engine::Terminate();
return;
}
C#
class Program
{
[STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("Empty", 640, 480, new asd.EngineOption());
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
Java
class Main
{
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("Empty", 640, 480, new asd.EngineOption());
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
入手方法
公式サイトから入手できます。
最後に
Altseedは常時コミッターを募集しています。
現在、C++、C#、Javaには対応しておりますが、将来的にはD、Python、Ruby等にも対応しようと考えています。
興味ある方はGithubを見てください。
開発の方針等はSlackで決めつつ開発を進めています。