マイコンマニヤックス/ニンテンドーDSで自作ゲームを作ろう
さて、前からほざいていたニンテンドーDSでのオリジナルゲーム作成に挑戦だ。
コレもマイコン内蔵機器の一種だよな。マイコンというよりはコンピュータよりかもしれないが。
CPUはARM系のはずです。まぁCで作るからあんまり関係ないけど・・・
とりあえず道具を買った。GENOで3000円くらいだったか?いわゆるマジコンという奴だ。
この手のものはコピーゲームが動く動かないがいろいろあって、鉄板はR4とかいう奴らしいんだが、今回は自作ソフトの起動ができれば事足りるので安かったらなんでもいい。
あくまで自作ゲームを動かすための道具としての購入だしな。
さて、DSでソフトってどうやって作るんだ?いろいろググってみる。
すると日本語での開発情報をまとめてくださっているありがたいサイトがここにある。
http://void-main.org/dsprogram/index.php?%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8
開発ツールはここらへんで無料でダウンロードできる。
デバッグ用のエミュはここで。
http://nocash.emubase.de/gba.htm
とりあえず、マジコンそのものの動作確認してみる。
ここにあるフリーのゲームを試してみる。
http://www.mrdictionary.net/lemmings/
ちゃんと動きますね。
たぶん自分で作った奴でも動くんでしょう。
とりあえず「Nintendo DSでプログラミング」さんのチュートリアルどおりやってみよう。
ごく簡単な、画面に文字を出すだけのプログラムを作ってみたいとおもいます。*1
いわゆるHELLO WORLDって奴ですね。
ソースを適当に捏造してコンパイル。
エミュで動作確認してからマジコンに書き込んでDSを起動してみます。
あっさり動きますね。
だいたいこの手の奴は、まず開発環境で物つくって起動さすまでが大事だったりするんですが、こんなにあっさり動いていいんでしょうか?
とりあえず付属のサンプルソースをゆっくりみてますが、簡単な2Dのパズルゲーム程度なら簡単に作れそうですね。
これはなかなか遊べそうです。もっともオイラ、DSは持ってないのですが・・・
さて、ゲームといえばどんなのを作るかだ。
まぁ、PONG(いわゆるテニス)、ブロック崩し、15パズルなんてのが定番だけど、今回はたまたまソースが手元にあったテトリスにしてみる。
原作の奴はDOSのテキストコンソールで動かす(文字で書いた)テトリスだ。
ANSIシーケンスでキャラクタを操って表示するのね。
これなら、機種依存する部分(画面への文字表示とかキー入力なんか)を移植すれば簡単に動くやろ。
画面表示自体はサンプルのこれをみれば、おおよその見当はつく。
C:\devkitPro\examples\nds\Graphics\2D\hello_world
キー入力はこれ。ゲーム機なんで押した離した押しっぱなし、のあたりがちょとパソコンと違うくらいかな?VSYNCでキーをひらっておくとか。
C:\devkitPro\examples\nds\input\keyboard
正直、あんまりゲーム機だから特別にどうとかというのはこの段階ではない。3Dとかを使いまくるわけでもないので。
ということで、テキスト版テトリスが完成である。
実機に転送してプレイしてみるが、それなりに動く。まぁもともと動いていたソースなんで当たり前だけど。
さて、これだとさすがに画面が寂しい。(味があってこれはこれでいいんだけど)
つうことでグラフィックっぽくして音をつけてみようじゃないか。
まずプレイ画面のグラフィックだが、このゲームはキャラクタ単位の移動でことが済むので、フォントをオリジナルのグラフィックにしてやれば(いわゆるPSGって奴ですね。おっさんほいほいなキーワードです)それっぽく見えるだろう。
サンプルはこのへんですね。
C:\devkitPro\examples\nds\Graphics\2D\custom_font
で、テトリスだと使い道がない上画面は飾りのグラフィックでも表示してみよう。
Wikipediaあたりから版権フリーのクレムリン宮殿の画像をひっぱってきてVRAMにデータを転送する。
やり方はこのへんで。
C:\devkitPro\examples\nds\Graphics\2D\256_color_bmp
で音だ。これが一番苦労した。
最初、WAVを鳴らそうとしてたんだが、一曲まるごとだとデータがでかくなりすぎる。
MP3とかをライブラリがサポートしてくれてたらいいんだけど・・・
標準のライブラリではBGMに音楽を鳴らすときはアミーガMOD形式の音源ファイルを使うことはサンプルみてわかった。
C:\devkitPro\examples\nds\audio\maxmod\basicsound
とりあえずサンプルを参考に実装。本当はロシア民謡にしたいんだけど、適当なMODファイルがないしMIDIファイルからの変換がどうもうまいこといかないんで、とりあえずはサンプル付属のBGMを鳴らしておく。
ただループさせるだけならコマンド一発のようです。
つうことで完成。まずはオープニング画面です。
プレイ画面。なんとなくそれっぽいでしょ?
ということで製作過程とプレイ動画です。
まぁ作ってる間のほうが楽しいですね(w
マジな話。私は若い人、というか子供たちに真に伝えたい。
たかが3000円くらい出せばプログラミングが楽しめるのだ。
ぜひとも挑戦してもらいたいです。
攻略本みれば結末まで載ってる他人が作ったゲームばっかりプレイしてたらアカンぜよ。
世の中にないものを、どんなゴミでもいいから自分で作ることこそ楽しいゲームだとおもう。
ヤクザもいってます。「クスリはヤルもんじゃない、作って売るもんだよ」