C# Advent Calendar 6日目の記事です。

C# でゲーム開発といえば何を思い浮かべますか?
最近だとやはり Unity  が多いのでしょうか?
ですが、私はあまり Unity を触ったことがないので今回 Unity の話はありません。

 一昔(?)前は C# でゲーム開発といえば、 XNA Game Studio だったと思います。
 XNA はとても素晴らしいものでしたが、開発が終了してしまったのでこれから使い始めるのも遅いですね。
(私は前から使ってて未だに使っていたりするのですが……)
そこで、今回は XNA 以降の、C# でのゲーム開発に使えるライブラリ・フレームワークをいくつか紹介します。

SharpDX
公式サイト : http://sharpdx.org/

オープンソースの高速な DirectX ラッパーライブラリです。
DirectX 11.1 まで対応しており、 Windows ストアアプリ開発にも使用できます。
わざわざ高速な、といったように、マネージドな DirectX の ラッパーの中で一番速いらしいです。(参考)
DirectX を薄く ラップしているだけなので、これだけでゲームを開発するのは難しいですが、
SharpDX.Toolkit としてゲーム開発に使える高レベルな API もいくつか用意されています。
また、以下に紹介するフレームワークにもゲーム開発に便利な多くの機能が提供されています。

MonoGame
 公式サイト : http://www.monogame.net/

 XNA 互換のオープンソースのフレームワークです。
名前空間まで XNA と合わせているので XNA で書いたコードをほとんどそのまま使うことができます。
公式サイトによれば、サポートしている環境は
  • iOS
  • Android
  • Windows (OpenGL 及び DirectX (DirectX 11 は未対応))
  • Mac OS X
  • Linux
  • Windows ストアアプリ
  • Windows Phone 8
  • PlayStation Moblie
  • OUYA
と、多くの環境へ移植することが可能です。
一部の環境の実装に SharpDX が使われていたりします。
まだ未実装の機能があったり、 Windows 以外の環境は開発環境のインストールが大変だったりとかありますが、
XNA を使っていた人や、多くの環境にゲームを提供したい人には良いと思います。
FezSkulls of the Shogun などのゲームも MonoGame で作られているそうです。

ANX Framework
プロジェクトページ : http://anxframework.codeplex.com/

オープンソースのゲームフレームワークです。
XNA の設計を参考にされており、MonoGame のように名前空間まで同じではないですが、
using する名前空間さえ変更すれば、 XNA のコードも使用できるようになっています。
Graphics や Input など多くの実装に SharpDX が使われています。
まだ ver 0.5 なのでこれからに期待ですね。
余談ですが、 ANX は 'ANX's not XNA' の頭字語らしいです。


以上の他にも、OpenGL を使う OpenTKGLFW や、
SharpDX を含め様々なライブラリを使って実装されている Delta Engine などがあります。


PlayStation Mobile
公式サイト : https://psm.playstation.net/portal/ja/

最後に、少し毛色の違うものを紹介。
PlayStation Mobile (以下 PSM) は、ソニーが提供している、PS Vita や Android スマートフォン・タブレット向けのプラットフォームです。
要は、いろいろなデバイスで同じゲームを遊べるのですが、
この PSM 向けゲームはパブリッシャーライセンスを申し込めば個人でも配信することが可能です。
XNA が Xbox360 や WindowsPhone 向けのゲームを作ることができたのと似ていますね。
PSM のゲームは Mono による VM で動作し、 C# で開発することが可能です。
もちろんタッチ操作やモーション入力などの高レベル API が用意されています。
今ならパブリッシャーライセンスが無料になっています。



いかがでしたか?
簡単な紹介でしたが、C# でのゲーム開発をやったことがない方も興味を持っていただけたら幸いです。