C言語ゲームプログラミング 個人レベルで開発可能なゲーム機/ゲーム実行環境について




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を協力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



個人レベルで開発が可能なゲームの実行環境について検討してみたいと思います。
新旧の入れ替わりが激しくなかなか現状に追いつけませんが、頑張って更新していきたいと思います(古い内容も参考のために残しておきます)。

大きく分けて据え置き型、携帯型の実行環境に分かれると思います。 据え置き型といえば、パソコン(Windows、Mac、Linuxなど)、Wii、PS2、PS3、Xbox360などがあります。 携帯型といえば、Nintendo DS、PSP、携帯電話などがあります。 しかし、現在ではスマートフォンの普及により個人レベルでのゲーム開発が飛躍的に拡大しています。 また、iPhone、AndroidともにC言語の知識が役に立つ環境なので、C言語の注目度もあがってきているようです。

1.スマートフォン


□ iPhone

iPhone用のアプリ開発は、Objective-Cで行います。 Objective-Cは、C言語の上にObjective-C用のインクルードファイルとライブラリを追加したようなイメージの言語です。 基本的にはC言語なので、C言語について理解している必要があると思います。 開発にはMac OSが動くマシンが必要です(Windowsマシンでは開発できません)。


□ Android

Android用のアプリ開発は、基本的にJavaで行われています。しかし、C/C++での開発環境も提供されています。 Javaでの開発は、Android SDK、C/C++での開発はAndroid NDKを使用して行います。 JavaからC/C++をライブラリとして呼び出すような使い方も可能です。 高速な動作が必要なゲームではNDKを使用していることが多いようです。 例えば、ニコニコニュースのページの中ほどに「リッチなゲームタイトルの多くはこれ(=NDK)を使って開発されている。」といった記載があります。
ブロック崩しゲームをAndroidに移植してみました。 Androidに関する予備知識は、「Javaで開発するようだ」程度だったためNDKの存在にも気づかずAndroid SDKで移植しました。 適当にAndroid開発入門ページをいくつか見てJavaに書き換えました。
1日目...開発環境作成(実機デバックにしました)からビットマップ等の画面表示と画面タッチイベント取得のテストプログラム作成
2日目...取り合えず動くように強引に移植。2日目にしてとりあえずブロック崩しゲームとして動くようになりました。
3日目...Javaとしてソースをきれいにして移植は完了しました。
下の画像が移植したブロック崩しゲームの画面イメージです。実際には実機デバックで作成したのですが、写真を撮るのが面倒だったのでエミュレータのキャプチャー画像です。
ブロック崩しAndroidに移植
今回はJavaで移植しましたが、Webで調べながら移植している途中でC/C++、NDKの存在を知りました。 今後はNDKにも移植してみようかと思っています。

□ Cocos2d-x

iPhone、Android用2Dゲームの共通プラットフォームであるCocos2d-xの利用も拡大しているようです。 Cocos2d-xで開発すれば、同じソースコードでiPhone、Androidの双方で動作するゲームを作成することができます。
Cocos2d-xは、C++での開発となります。 Objective-CもC++も100% C言語の文法を含んでいます。やはりゲーム開発の分野ではC言語の重要性が高いと思います。


2.据え置き型

□ パソコン

Windows以外にもMac OSやLinuxもありますが、わざわざマイナーなOS上で作る必要もないと思うので、Windows上での開発について記載します。 Windows上では、C言語、C++、C#、JAVAなど色々な言語で自由な開発が可能です。 ただし、最終的にはWindowsが提供するAPIであるGDI+かDirect Xによるプログラムになるのではないかと思います。 現在、市販されている多くの3DゲームはDirect Xで作成されているのではないかと思います。 一方、2Dのゲームや趣味で作るようなゲームはGDI+での作成で十分だと思います(初めてゲームを作るような人は間違ってもDirect Xで作ろうと思わない方が良いと思います)。 Study Cで作ったゲームも、GDI+を使ったものとなります 最近は、これ以外にも「.NET Framework」、「Managed DirectX」、「XNA Framework(XBox360参照)」といったものが出てきています。 Windowsでゲーム作成を勉強するという人はGDI+で十分ですが、本格的にゲームを作ろうという人は、今後どれが主流になるか見極めていく必要があります(新しいものは、いつの間にか来てしまうことがあるので)。


□ XBox360

XNA Game Studio Expressという開発ツールが無償提供されています。 Windowsマシンで無償提供の開発ツールを使いXbox360用のゲームが作ることができます(開発言語はC#)。 また、作成したプログラムはPC上でも実行可能でXbox360に転送しなくても実行確認をすることができるようです。 ここまでは良いのですが、作成したプログラムをXbox360へ転送し実行するには「XNAクリエイターズ・クラブ」という有料(年間9,800円)のサービスを加入する必要があります。 「XNAクリエイターズ・クラブ」に加入していないとXbox360上で作成したプログラムを実行することができません。 つまりXbox360でプログラムを実行したい間は、毎年9,800円を払い続ける必要があります。 これは自作したXbox360のプログラムを一般に公開したいと思ったときも同じことになります(毎年9,800円払っているごく一部の人しか公開したプログラムを実行できません)。 「メーカーがゲーム開発環境の無償提供」と画期的な話のようだったのですが、結局は一般に配布できないという極めて中途半端(というかあまり実用性のない)な企画のようです。 XNA Game Studio Expressや資料などのダウンロード


□ PS2

かなり昔になりますが、10数万円で「ネットやろうぜ」という開発キット?が販売されていました。 たしか、作成したプログラムを自由に配布することはできなかったような気がします。 いずれにしても、かなり昔に販売は終了してしまっているので入手することはできません。


□ PS3

PS3で動作するLinuxが存在します。 Linux上で動作するプログラムを作成すればPS3で実行させることができるわけです。 ただし、残念なことにグラフィック表示にGPUの機能(2D、3Dアクセラレーション)が使用できないとことです。 つまりCPUで直接フレームバッファに書き込んで行くしか方法が無いわけです。 実用的な速度のゲームが作れるのかは疑問です。

購入時にLinuxのためのハードディスク領域を確保しておく必要があるとのことです。 つまりPS3にもともとインストールされているゲーム用のシステム領域?とLinuxのための領域をそれぞれ作っておく必要があります このような準備をしておかないと、領域を確保する時にゲームのデータをバックアップする必要があります。 外部メディアも必要ですし、Linuxをインストールしようと思っている方は、購入時に領域確保を行った方が良いのではないかと思います。

2Dアクセラレーションを動かすことに成功した模様との書き込みや すでに使えるようになったとの書き込みもありました。 近い将来GPUを活用したプログラムを自由に使える日が来るのではないかと楽しみにしております(逆にアクセスを禁止されてしまうかもしれませんが)。 とはいえ、今のところ極めて微妙(悪い意味で)な実行環境であることには間違いありません。
ダウンロードやインストールの手順


□ Wii

調査中としていましたが、時代はWii Uに移行してしまいました(売れ行きは微妙なようですが)。


3.携帯型


□ PSP

市販のメモリースティックが記憶媒体として使われているゲーム機なので 最も自作のプログラムが動作しやすそうですが、通常ではメモリースティック内の プログラムを実行することはできません。 ただし、PSP本体のファームウェアを改造(改造されたものと交換=カスタムファーム)することによってプログラムの実行が 可能となります。 ファームウェアの改造は、それを阻止しようとするメーカの対策により 事実上不可能な状態となっていました。 具体的には、古いファームウェアのバージョンの まま更新していないPSP本体を持っているか、ルミネスというバグの発見されたソフトを 持っているといった、ごく一部の人達しかファームウェアを改造することはできませんでした。

ところが最近になって状況が変わりました。 PSPのバッテリーに細工を加えることでファームウェアの改造が可能になりました。 何通りかの方法があるようですが、 パンドラバッテリーなどと呼ばれている2,000円程度の特殊なバッテリーを購入してしまうのがもっとも簡単な方法だと思います。


新旧のPSPに対して、有効な方法のようです。無料でないとはいえ、Xbox360の年間9,800円に比べると雲泥のさがあると思います。 ちなみに、 パンドラバッテリーは1度か使えない訳ではありません。知り合いに貸してあげたりして、何度でも使用することが可能です。 また、現在パンドラバッテリーに対するメーカー側の有効な対策も出ていないようです。


□ Nintendo DS

Gameboy アドバンス用と同じように、microSDカードなどを利用して プログラムを格納することができます。 画面も2画面あったり、CPUも2個搭載されていたりで ゲーム作成は、ちょっと難しいかもしれませんが、世界中で人気のゲーム機ですから チャレンジしてみる価値は大いにあると思います。 最近では、このようなカードのことをマジコンと呼ぶそうです(Nitendo DS用は、NDSマジコンと略します)。 NDSマジコンは多数の物が用意されております。 基本的におおきな違いはないようです。
R4 DSが一番売れているとのことです。
NDSマジコンも有料ですが、PSPと同様にXbox360の年間9,800円に比べると雲泥のさがあると思います(ゲーム1本分程度の出費でいつまでも使えるのですから)。


□ 携帯電話

スマートフォンに、その座を譲った感のある携帯電話ですが、今でも販売されているので「昔の...」には入れないでおきます。
NTT docomoなどほとんどの携帯電話が、JAVAによるプログラミングだと思います。 ちょっと苦戦しているようですが、一番台数が多いNTT docomoの携帯電話について記載します。
NTT docomoが提供するDoJaをダウンロードして開発を行います。 Windows上で動作するエミュレータでも実行することができます。 携帯電話に転送するには、インターネット上にアップロードする必要があります。 ブロック崩しゲームを試しに移植してみました。 iアプリの開発自体は、以前に仕事で行ったことがあるので1時間ほどで移植は完了しました。 JAVAもCも大差ないので簡単に移植できました。 携帯電話は機種ごとに画面の解像度が異なり、どんな画面サイズでゲームを作るかで結構迷います。 少し前までは、プログラムサイズの制限も結構貧弱でしたが今ではかなり改善されています。


ツールや資料のダウンロード

4.昔のプログラミング可能だった携帯型ゲーム機


□ Gameboy Advance

もう過去のゲーム機ですが、Nintendo DSで動作させることができます。 Nintendo DSのプログラミングは多少難しい点があるので 初めてゲーム作成を勉強する人にはGameboy Advanceの方が適しているかもしれません(Gameboy Advanceでのゲーム作成の<解説書まで販売されていますし)。 プログラムは、フリーのC言語(C++)を使用して作成します。 昔は、ゲームを格納するメモリカードと転送ケーブルが主流でしたが、現在はmicroSDカードにプログラムを格納するタイプになっているようです。


□ワンダースワン

Wonder Witchというゲーム開発用の環境が販売されていました。 今では、ゲーム機自体の入手も困難だと思います。