忍者ブログ
コンピューターとかゲームの最新ニュースはまとめるのが面倒なので Twitter を追ってください。もしくは1日分のツイートをまとめて簡素な HTML にするスクリプトください。

C# は C/C++ の後釜になりそうです。

初めに

ゲームの開発言語は、一部の例外を除いて、だいたいこんな感じで進化してきました。

  1. 16進数直接入力 (この時代があるのは30歳ころに師匠から教えてもらいました)
  2. アセンブラ (ファミコンは最初からニーモニックで書けた模様)
  3. C 言語 (ゲーム機では Playstation あたりが転換期の模様)
  4. C/C++ (割とすぐに C/C++ になった)
  5. 全部を C/C++ で開発するのは大変になってきたので、様々なスクリプトも併用するようになってきた。
    独自スクリプト以外で有名なのは Lua とか Squirrel でしょうか。

例外はこんな感じです。 本当にニッチなものは捨ておきますが、省略できない事項は結構あるのです…

  • PC で C 言語が主流になる前に、Wizardly が Pascal で作られたりしていた時期がある。
  • Windows 95 登場までは BASIC によるゲーム開発が、今でいうインディーズの間で流行する。
  • 様々な携帯電話上でゲームを動かすために用意した NTT ドコモ は i モードアプリは JAVA の独自拡張。
    国内の他社も同様に JAVA ベースの実行環境を提供していた。
  • マクロメディア社→Adobe社 による Flash でゲームを作る文化も一時あった。 現在は沈静化している。
  • MS は XBOX360 と同じくらいのタイミングで C# + DirectX9 によるゲーム開発環境 ”XNA” を立ち上げたが継続できずに消滅した。

こんな感じで、マシンスペックを有効利用でき、メモリを有効活用しやすい C/C++ がゲーム開発のメイン開発言語に、
演算リソースもメモリも潤沢にある環境では、第三勢力が生まれては消えていったという歴史があります。

HTML ベースのゲームの歴史は、HTML5+JS 以前は超複雑です。自分で調べてください。

が、 ゲームの開発ツール開発が C# で開発されていく流れがあったり、Unity の台頭 (と Unity で開発されたゲームの成功) によって
徐々にゲーム開発に C# ”も"使われるようになってきました。
Unity 以外の大手ゲームエンジンも C# に注目するようになってきていますので、 C/C++ に加えて C# がメインストリームの開発言語になりそうです。




ということで、Unite 前にまとめておきます。

現行の主な C# によるゲーム開発環境

Unity

3 くらいから急速に普及した C# によるゲーム開発環境。
商用の単体ミドルウェアがどんどん使えるようになったり、プラグイン対応するようになり、 C# でも C/C++ なゲームと見劣りしないゲームが作れると証明した成功者。


Unite 対策の記事なので説明は省略します。大変だもの


もっとも、C# を Windows 以外でも使えるようにした Mono プロジェクトが無ければ誕生しなかったので、Mono こそ最大の功労者でしょう。


Xenko (Silicon Studio)

シリコンスタジオの C# ゲームエンジン、元 Paradox。
オープンソース、ライセンスフリー、ロイヤリティフリーでオールインワンの統合型ゲームエンジンという非常に響きの良いゲームエンジン。
4Gamer の記事 によると、PC とスマートデバイス向けという位置付けらしいです。

  • ライセンスモデルは無料だけど2パターンある
    • オフィシャルリリースを使う場合は 独自のライセンス に同意するだけでOK。 この場合でもソースを GitHub で取得可能。
    • GitHub で入手したソースを自分でビルドする。 この場合、ごく一部のを除いて GPLv3 となる。
      • 実質的にはこちらを利用してもらうという意図は、恐らく無い。
        不具合をシリコンスタジオ以外が修正できる発売前にシリコンスタジオがオフィシャルにマージする というモデルを想定しているのでは?
  • これでどうやってシリコンスタジオが儲かるのかが不明確
    • 企業が儲からないことをやると開発を継続出来ないですし、シリコンスタジオが傾けば不採算事業として即消滅するでしょう。
      という理由で、これがクリアになっていないと利用しようと考えているデベロッパは安心できないですよねぇ
  • グラフィック API は薄いラッパーを入れ替えれば自由に変更可能。(当然 GPL 縛りがあるけど)
    • Vulcan 対応は誰かが行って pull-request すれば良いんでしょう。
    • 任天堂 NX の グラフィック API も視野に入れてるってことでしょう。(コンソール機は普通独自APIだったり、標準 API を独自拡張する)
  • 物理エンジンは Bullet 2D/3D
  • アセットやプラグインの配付(ストア)システムが無い
    • そもそもプラグインによる拡張が出来ることがアピールされていないのですが、それってどうなんでしょう?

シリコンスタジオはポンポン いろんなゲームエンジンをリリースしていますけど、全部メンテできるんでしょうか…


ソースのあってビルドできる統合開発環境なので、使えそうなツール類だけ利用して自社の開発環境をリッチにするのは多くのゲーム開発スタジオで有用な選択肢かと。

CryEngine V

Amazon と提携したり、お布施形式のビジネスモデルになったりした、老舗の大規模開発向けのゲームエンジン "CryEngine" も V から C# を利用できるようになりました。
調べてみた感じでは、2010年くらいから研究していた CryMono というプロジェクトの成果みたいです。


CryEngine では、上記のゲームエンジンと異なり、C/C++ での開発を前提とした既存のゲームエンジンに C# 実行モジュールを追加した という、使用言語の幅を広げる方向になっています。
具体的には、 CryEngine の C/C++ コンポーネントとして C# とのブリッジ機能が提供され、その上位に ”CE# Framework(CryEngine c# Framework)" という CryEngine 独自の C# フレームワークが用意されている という構造になっています。
使いたくないデベロッパは完全に切り離せますし、やろうと思えばプログラムのほぼ全てを C# で記述することもできるという大手商用ゲームエンジンとしてふさわしい対応ですね。


CryTek 的には、どうやら 「UI 周りに C# を使うといいよ」 という考えのようで、今現在 CE# Framework は UI 周りの機能が充実しています。


なお、C# と関係ないですが・・・
CAPCOM で次世代ゲームエンジン 「Panta Ray」 のレンダリング周りのリードプログラマだった人が Crytek に移籍しており、その結果、グラフィックス周りの実装が刷新されているみたいですね。

Mono for Unreal Engine

Xamarin が提供している Unreal Engine4 で Mono を動かすプラグイン。
こちらは標準機能じゃないので紹介だけしておきます。

カプコンの次世代ゲームエンジン(不確定名)

何故か固有名詞を使っていないので、Panta Ray じゃない何か。
CEDEC2015 のセッションしか情報が無いので、CEDEC のページをリンクしておきます。
http://cedec.cesa.or.jp/2015/session/ENG/3250.html


今のところ、Mono を使わずに自社製 VM を用意しているのはこれだけ。
C# の実行環境は CryEngine V と同じと思われます。 受講していないので憶測ですが C/C++ との併用が前提じゃないでしょうか?
深読みすると、カプコンは DMM で ブラウザゲーも展開していますし スマホゲーも開発していますので、ハイエンド向けゲームエンジンとは別に 自社の C# ベースのゲームエンジンも用意して 脱 Unity を目指しているとも考えられますね。

改めて CEDEC の講演内容を見ると、ツールプログラマを増やした結果、開発環境は充実したけどゲーム制作の人員が足りなくなってる感がありますね(;´∀`)
良いゲームを産み出すという点においては MT Framework は優秀だったなぁ… と感じます。

今後の予想

MS が Xamarin を買収したので、

  • C# と .NET Framework がマルチプラットホーム化する(希望的観測)
  • Mono をメンテナンスする人が変わる
  • Mono をメンテナンスする人が居ないまま MS 以外は真綿で首が締まり続ける

の どの方向に流れるかが確定するまではさっぱりわからないです。
Unite で MS のセッションを受講するので、その際に質問してみたいところ。



PR