誰でも簡単 タッチペンでRPG - 数理情報学科

2009 年度 卒業論文
誰でも簡単 タッチペンで RPG
龍谷大学 理工学部 数理情報学科
T050017 奥山 祐輔
指導教員 池田 勉 目次
1
はじめに
1
2
開発環境
2.1 devkitPro と msys のセットアップ . . . . . . . . . . . . .
2.2 マジコンの入手 . . . . . . . . . . . . . . . . . . . . . . .
2.3 エミュレータのダウンロード . . . . . . . . . . . . . . .
2.4 音楽関係のソフトのダウンロードとファイル形式の変換 .
.
.
.
.
1
1
2
2
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
3
4
4
4
4
6
6
7
9
9
12
13
14
3
ソフトウェア開発
3.1 サンプルプログラムの理解 . . . . . .
3.1.1 ヘッダファイル . . . . . . . .
3.1.2 ディスプレイの設定 . . . . .
3.1.3 VRAM の設定 . . . . . . . . .
3.1.4 その他の設定 . . . . . . . . .
3.2 RPG「学戦士」の内容 . . . . . . . .
3.2.1 ソースファイルの構造 . . . .
3.2.2 構造体の宣言 . . . . . . . . .
3.2.3 主人公:ラーソルの初期設定
3.2.4 ワールドマップの移動 . . . .
3.2.5 街の設定 . . . . . . . . . . . .
3.2.6 敵の設定 . . . . . . . . . . . .
3.2.7 戦闘方法の設定 . . . . . . . .
3.2.8 技の設定と発動 . . . . . . . .
3.3 その他の設定 . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
終わりに
15
5
参考文献
15
1
はじめに
現在、ゲームというものは社会的に見てマイナスなイメージを持っている。これは、過
激なゲームや複雑なゲームが犯罪やゲーム依存症を生む温床であると認識されているから
である。しかし、最近では任天堂 (株) を中心に学習の補助となるゲームや健康の維持に役
立つゲームなど、日常生活を助けるゲームが多数販売されており、注目を受けている。そ
して、これらのゲームは今までのようなボタン操作だけではなく、画面をタッチしたり、コ
ントローラーを振って操作するため、ゲームに不慣れな人でも簡単に操作できるように作
られている。そこで、私は今までゲームが苦手であった人でも手軽にゲームを楽しんでも
らえるもらえるように、任天堂 (株)[1] が販売しているゲーム機のニンテンドー DS のタッ
チスクリーン機能を用いて画面をタッチする操作だけで楽しめるようなゲームを作成する
ことを本研究の目標とした。
2
開発環境
ニンテンドー DS のソフトを開発するためにはそのソフトを開発するために必要な環境
を用意する必要がある。ニンテンドー DS のコンピュータには PC とは違った ARM という
CPU が採用されている。このため PC で作成したソースファイルをニンテンドー DS 上で
起動する nds ファイルに変換するコンパイラが必要である。本研究においては、使用する
PC の環境 Windous XP Professional Version 2002 Service Pack 2 で動作するコンパイラ
が必要なため、昨年の卒年次生と同様に devkitPro[2] を用いて開発することにした。また、
ゲーム上の音楽を作成するためのソフトや、作成した音楽ファイルやネット上で拾ってき
た音楽ファイルをニンテンドー DS 上で作動するファイル形式に変換するソフトも開発環
境として必要である。
2.1
devkitPro と msys のセットアップ
先ほども述べたように PC を用いて作成したファイルをニンテンドー DS 上で作動する
nds ファイルに変換するソフトを用意しないと研究が始まらないので、ARM 専用のコンパ
イラであるフリーソフト devkitPro をインストールした。インストーラにしたがってイン
ストールすれば devkitPro を Windows 上で動作させるシェルやアーカイブツールなどを統
合した Msys というパッケージも同時にインストールできる。これらのソフトを用いて C
言語で書かれた c ファイルから nds ファイルを作成する。
1
2.2
マジコンの入手
PC 上で作成したcファイルを前述で挙げたコンパイラ devkitPro を用いてコンパイルす
ればニンテンドー DS 上で作動する nds ファイルが作成できる。しかし、この作成した nds
ファイルをニンテンドー DS で作動させるには、ニンテンドー DS 本体にこの nds ファイル
の情報を送る必要がある。しかし、ニンテンドー DS には PC に存在する USB 端子や CD、
DVD などのスロットは無く、ニンテンドー DS 専用のソフトのスロットしか存在しない。
そのため、本研究では M3REAL[3] というマジコンを用いてこの問題を解決することにし
た。この M3REAL には microSD カードのスロットが存在し、この microSD カードに nds
ファイルを取り込んでニンテンドー DS に接続することで、作成した nds ファイルをニン
テンドー DS 上で作動させることができる。
2.3
エミュレータのダウンロード
c 言語を用いて作成した nds ファイルは 2.2 のな作業を行うことによってニンテンドー DS
上で動作確認ができる。しかし、ソースファイルの内容を変更する度に microSD カードに
保存し、それをマジコンにセットしてニンテンドー DS に接続して動作を確認していたの
では非常に時間がかかる。そのため、PC 上で nds ファイルを実行できるようにフリーソ
フトであるエミュレータ NO$GBA[4] をダウンロードした。このエミュレータはニンテン
ドー DS と完全に同じ動作をするものではないが、ほぼ同じような動作をするということ
で簡単な動作確認に用いた。
2.4
音楽関係のソフトのダウンロードとファイル形式の変換
本研究のテーマが「ニンテンドー DS で RPG」ということで RPG を作成していた。無音
の RPG を作ったところであまり楽しめなかったのでインターネット上で音楽をダウンロー
ド [5][6][7] もしく音楽を自作して RPG に組み込むことを決めた。そこで、まず自作の音楽
を簡単に作れるフリーソフト「作曲ホイホイ」[8] をダウンロードした。このソフトは最大
8小節という短い音楽しか作成できないが、その分操作も簡単で、お手軽に音楽を作成で
きるソフトである。しかし、ダウンロードした音楽や自作した音楽のファイル形式ではニ
ンテンドー DS で動作することは少なかった。そこで、様々な形式の音楽ファイルを指定
した音楽ファイルに変換するためにフリーソフト「MPTRACK」[9] と「ソフト工房 乾」
[10] の「Timidi95」をダウンロードした。「MPTRACK」では wave 形式のファイルを XM
2
形式のファイルに変換し、「Timidi95」では midi 形式のファイルを XM 形式のファイルに
変換した。これで、音楽の入ったニンテンドー DS のゲームが作成できるようになった。
ソフトウェア開発
3
ソフトウェアを開発できる環境が整ったので、ソフトウェア開発に着手する。
3.1
サンプルプログラムの理解
本研究では本学の授業でも頻繁に使用していたc言語を用いてソフトウェア開発を行う。
しかし、本学の授業では c ファイルを作成するためのソースファイルの書き方しか学習し
ていなかったので、そのソースファイルをコンパイラを使ってそのまま nds ファイルに変
換しようとしても、エラーが生じて変換できない。そこで devkitPro をインストールした
とき付随してインストールしていたサンプルプログラムの中で基礎的なプログラムのいく
つかをエミュレータで動作させつつ、インターネット上の情報 [11] も少し参考にしながら
そのソースファイルを確認することで、nds ファイルを作成するためには c ファイルを作成
するときに加えて以下のようなことが必要であることがわかった。
3.1.1
ヘッダファイル
c 言語のヘッダファイルと言えば stdio.h が有名であるが、これは「printf」などの文字の
入出力やファイルの操作に関する関数の宣言を行うものである。nds ファイルを作成する
にはこの他に nds.h というヘッダファイルが必要である。このヘッダファイルにはニンテ
ンドー DS 特有の関数が多数用意されている。
3.1.2
ディスプレイの設定
ニンテンドー DS では文字や画像を出力するためのディスプレイが二つあるため、基本
的には各々のディスプレイごとに設定する必要がある。
3
3.1.3
VRAM の設定
VRAM とは Video Random Access Memorry の略で、ディスプレイに対するビデオの表
示部分の RAM のことである。設定方法は A からまでの個の VRAM BANK にその機能を
割り当てていく。
3.1.4
その他の設定
nds ファイルを作成するには上記の三つの他にも音楽の設定や色の設定など、様々な設
定が必要であった。そこで、次節では本研究で作成したソースファイルの中で、ニンテン
ドー DS 特有の機能を利用した部分(関数)に絞って論述していく。
3.2
RPG「学戦士」の内容
これより本研究により作成したニンテンドー DS 用のデータファイル「学戦士」につい
て論ずる。
3.2.1
ソースファイルの構造
各関数の解説に入る前に、本研究で作成したソースファイルの gakusensi.c の構造につい
て簡単に解説する。RPG というゲームは、ワールドマップ(キャラクターの移動)画面や、
戦闘画面、買物の画面など頻繁に画面が切り替わるゲームである。そこで、私はソースファ
イルを作成するにあたって次のように各シチュエーションごとに関数を作成し、必要に応
じて適宜違う関数へジャンプするような構造にした。その基本構造を下の箇条書きに示す。
1. 関数「main」により主人公「ラーソル」の初期設定
2. 関数「world」によりワールドマップの設定 (一定時間移動で 4. へ。また、一定領域
進入で 3. へ)
3. 関数「machi」により街の設定
4. 関数「encount」により戦闘開始の設定(fight 選択で 5. へ。skill 選択で 6. へ)
5. 関数「fight」により戦闘の設定(敵を倒すと 2. へ。倒せないと 7. へ)
4
6. 関数「skill」により技の設定(上記 fight と同様)
7. 関数「enemy」により敵の反撃の設定(自分が倒れるとゲームオーバー。倒れなけれ
ば 4. へ)
また、この基本構造にレベルアップやステータス表示を加えて図示したものが下の図 1 で
ある。
図 1: ソースファイルの全体構造
5
3.2.2
構造体の宣言
「学戦士」ではキャラクターとしてプレイヤーが操る主人公の「ラーソル」と 6 種類の敵
が存在する。そこで主人公「ラーソル」のデータを格納する構造体と敵のデータを格納す
る構造体をそれぞれ宣言する必要がある。構造体の具体的な内容としては、まず Man とい
う構造体が主人公「ラーソル」のデータをもつ構造体になっている。整数の変数 x および y
によってワールドマップ上の「ラーソル」の位置を表し、その後、
「ラーソル」のステータ
スとなる HP(ヒットポイント)、MP(マジックポイント)、レベル、最大 HP、最大 MP、蓄
積経験値、攻撃力、防御力、所持通貨、所持アイテム、所持武器、移動中のマップ番号を
いずれも整数の変数で宣言する。ここで所持アイテムの変数のみ一次元配列としているが、
これはアイテムの種類とその所持数を記憶するためである。そして、1 次元配列 sx[100] と
sy[100] を宣言する。この二つの配列はともに技のアクションを記憶する配列であるが、詳
しくは後述の「技の設定」で説明する。なお、主人公「ラーソル」には図の 1 のようにの
四方向を向いた画像を用意している。図の左から順に後ろ向き、前向き、右向き、左向き
であるが、これは各方向へ移動する際にその方向を向いているように見せるためである。
図 2: 主人公:ラーソル
3.2.3
主人公:ラーソルの初期設定
「main」というと普通はプログラムの中で主要部分を占める関数であるが、3.2.1 でも示
したように本研究で作成したソースファイル「gakusensi.c」は機能ごとに各関数がつくら
れているため「main」関数の内容は主人公「ラーソル」の構造体の初期設定のみとなって
いる。中身は次項の -main- の通りである。設定が終わると関数「world」へ移行する。
-mainint main(void)
{
int i;
Man man = {1,0};
6
man.hp = 100;
man.mp = 20;
man.lv = 1;
man.mhp = 100;
man.mmp = 20;
man.exp = 0;
man.at = 10;
man.df = 10;
man.pt = 0;
man.we = 0;
man.st =13;
man.x = 100;
man.y = 100;
for(i = 0; i < 3; i++){
man.it[i] = 0;
}
world(man);
return 0;
}
具体的には上から四行目で Man 型の man という構造体を用意し、「ラーソル」のステー
タスを HP:100、MP:20、レベル:1、最大 HP:100、最大 MP:20、蓄積経験値:0、攻
撃力:10、防御力:10、所持通貨:0、所持アイテム:いずれも 0、所持武器:0、としてい
る。ここで st とはあらかじめ用意した 1 から 25 のマップのうちどのマップにいるかという
情報であり、初期設定として真ん中の 13 としている。そして、初期設定が終わった段階で
初期画面を設定している「world」という関数に移行する。
3.2.4
ワールドマップの移動
下の図 2. にワールドマップの画面を示している。関数「world」ではそのマップ上のキャ
ラクターの動きを制御しており、この図で赤丸のついた主人公「ラーソル」をタッチペン
や十字キーを使って操作できるように設定している。
7
図 3: ワールドマップの画面
ここでは、まずワールドマップ上で流れる音楽の設定を行う。ゲームの中でもっとも多く
呼び出される画面なので、明るく和やかな雰囲気の音楽を採用した。次に、この関数のメ
インとなる処理であるキャラクターのマップ上の移動について説明する。その方法は、ま
ずタッチスクリーン機能を利用してタッチした位置の各座標を読み取る。そしてその座標
が例えば left と書かれた周辺の領域内であればキャラクターの位置の x 座標を 1 減らし左
を向く、right と書かれた周辺の領域内であればキャラクターの位置の x 座標を 1 増やし、
右を向く。同様に up の周辺領域内であればキャラクターの位置の y 座標を 1 減らし上を向
き、down の周辺領域内であればキャラクターの位置の y 座標を 1 増やし下を向く。ここで、
これらの文が while 文によって繰り返されるので、各領域をタッチし続けるとキャラクター
はそれの対応した方向に向き、同じ方向に進み続ける。また、タッチする操作を十字キー
の各方向を押すことに対応させた処理も行っており、右の十字キーを押し続けるとキャラ
クターが右を向き、右に移動していく。左や上下にも同様にして移動させることができる。
また、
「学戦士」では、下に示している図 3 のように 25 このマップが存在し各マップにおい
て上下左右いずれかの端にキャラクターを移動させることにより一つ隣のマップへ移動す
ることができる仕組みになっている。先ほど紹介した図 2 の画面は初期位置であるマップ
13 であり、このマップの左端に行けばマップ 12 の画面へ移行し、上端に行けばマップ 8 の
8
画面へ移行する。このマップ間の移動を行うための設定についても関数「world」で設定し
ている。ここでは、キャラクターが画面の x 座標が右端より 30 の領域内に入った場合マッ
プ番号を 1 増加し、そのキャラクターを左端より 31 の座標へ移動させる。こうすることに
よってプレイヤーはカメラの視点が画面の横幅分だけ右側に移動したように感じる。左や
上下のマップ間移動も同様にして行える。また、次に行くべきマップが存在しない場合 (例
えば 1 から 5 のいずれかのマップから上のマップへ行こうとしたとき)、この端から 30 の
座標より奥へは進めないように設定している。この後、前述によって定められたマップの
定められた位置に画像を繰り返し表示することにより、キャラクターを動いているように
見せる。このようにして主人であるキャラクター「ラーソル」をタッチペンや十字キーを
使って自由に動かすことができる。そして、関数「world」呼び出し時に選ばれた疑似乱数
と関数「world」呼び出しからの経過時間をある式に当てはめた値が別に用意しておいたあ
る値と一致したときに戦闘画面における動作を設定している関数「encount」に移行する。
また、図 2 はマップ 13 の画面であるが、その上の画面中央に赤い四角が表示されている。
これは街のシンボルをあらわしており、この四角に「ラーソル」が接触することで街の画
面へ移行することができる。
3.2.5
街の設定
この街の画面では敵を倒すことで入手できるゲーム上の通貨 pt を使用して宿屋に泊った
り (宿屋に泊ると HP・MP 回復)、戦闘を有利に行うための武器やアイテムを購入すること
ができる。この画面でも購入商品の選択や購入の諾否の確認などの場面でプレイヤーの選
択が生じてくるが、この選択方法もいくつか書かれた選択肢の中から選択するものの近辺
をタッチすることによって正しい選択ができるように設定されている。その仕組みはタッ
チペンによるマップの移動方法と同様である。そして、街の画面で「go out」を選択す
ることによりワールドマップの画面へ戻ることができる。
3.2.6
敵の設定
関数「encount」では戦闘における初期の設定を行う。ここでもまずは戦闘画面で流れる
音楽の設定を行う。敵と遭遇した直後、サイレンのような警告音を 3 度流し、プレーヤー
に驚きと緊張を与える。その後、切迫した雰囲気を与えられるようテンポがはやくプレイ
ヤーを焦らせるような音楽を流し、戦闘の臨場感を与えている。この画面を下の図 4. で示
している。ここで重要になってくるのはどのような敵を出現させるかである。そこで、関数
9
「encount」の中でも敵の種類やステータスの設定にかかわる部分を抜き出して解説する。
図 4: エンカウント画面
ここでは st(マップ番号) が 25 であるときのみラスボスが出現する。図 5 の画像がそのラス
ボス:プロフェッサーの画像である。この敵のステータスは 1 次元配列 est[5] で設定してお
り HP:1000、撃破時獲得経験値:500、撃破時獲得 pt(通貨)
:1000、攻撃力:10、防御
力:10 となっている。st が 25 でない場合は関数が呼ばれた時の「ラーソル」の x 座標と y
座標をもとに敵の種類が決定される。このラスボス以外の敵が五体存在し、それぞれの敵
の画像、名称は図 6 から図 10 のとおりである。いずれの敵もラスボスと同様にそのステー
タスを 1 次元配列 est に読み込み、その敵の画像を上の画面中央に表示するが、そのステー
タスは敵ごとに異なる。
10
図 5: プロフェッサー
図 6: コリオリ
図 7: ドクター
図 8: ビッグフェイス
図 9: スマイルボマー
図 10: タッカー
そして敵と遭遇したらやはり戦わなければならない。そこで、この敵の設定が終わると攻
撃をするため、通常攻撃を行う「fight」、特殊攻撃を行う「skill」のいずれかを選択する。
この選択方法もタッチペンによって行えるように設定している。その方法は図 4. の下半分
の画面にある「fight」と書かれている近辺をタッチすることで「fight」へ移行し、「skill」
と書かれている近辺をタッチすることで「skill」へ移行する。また、A ボタンを押すこと
で「fight」へ、B ボタンを押すことで「skill」へ移行することができるようにも設定して
いる。
11
3.2.7
戦闘方法の設定
戦闘画面における設定は関数「fight」によって行うが、戦闘方法が通常の RPG と大変異
なる。典型的な RPG の攻撃方法としてはいくつかの選択肢の中から「たたかう」をえらぶ
と、すぐに指定したキャラクターがすぐに攻撃して、敵を倒すことができなければすかさ
ず反撃してくるというものである。しかし、本研究において作成したゲーム「学戦士」で
は「fight」を選ぶとランダムな二桁+ニ桁もしくは二桁−ニ桁の計算が出題され、その解
答をタッチペンで入力し、その解答の正否や所要時間によって相手に与えるダメージが決
定するようなプログラムになっている。この戦闘画面の例を下の図 11. に示す。
図 11: 戦闘画面
まず問題となる二つの項を乱数を使って決定し、上の画面左上に筆算の形で出力する。そ
して次に電卓のボタンとなる赤い正方形を横方向は 17 の位置から 80 の間隔をおいて三つ、
縦方向は 15 の位置から 75 の間隔をおいて四つの全部で十二個の正方形を出力する。次に
制限時間として変数 count の値を 1200 に設定し、問題を出力する。これと同時に、printf
12
をうまく使って先ほど出力した赤い正方形の真ん中に図 5 のように番号を出力する。これ
で関数「fight」の主な出力は完了したので次に入力の設定を行う。まずは while 文を使って
繰返しを行い、この繰り返しが一周するごとに count の値を 1 ずつ減らしていく。この間に
画面をタッチするとその座標が関数「hanbetu」へ送られて、その座標が赤い正方形の内部
であったならそこにふってある番号の数が一の桁の解答として配列 n[0] に格納される。次
に任意の赤い正方形をタッチすると、十の桁の解答として配列 n[1] に格納される。図の右
下の「E」と書かれた正方形をタッチすると入力された二桁の数が正解かどうか判断する
関数「kakutei」に送られる。ここで、答えが正解なら初めて敵に攻撃することができる。
攻撃によって敵に与えるダメージはラーソルの攻撃力、敵の防御力のほかに、変数 count
の値によって決定される。もちろん答えが間違っていた場合や、count が 0 になった時には
「Miss!!」と出力し敵のターンに移行する。この変数 count は while の中が一周する度に1
減り、約 20 秒で 0 になる。また「D」と書かれた四角をタッチすると、今まで入力された
データ(二桁の数)が削除され、再び一の桁の数から入力できるようになる。
3.2.8
技の設定と発動
一般的な RPG では戦闘画面において通常攻撃のほかに魔法や技を使って戦闘を優位に進
めることができる。そこで「学戦士」にもこの技の要素を入れることにした。大半の RPG
はレベルに応じて製作者が用意した技を覚えていくだけである。しかし、
「学戦士」では覚
えた技のアクションをプレイヤーが設定できるようにした。その関数が「ns」である。具
体的な内容としては、まず while 内の処理によって整数の変数 i が 100 になるまでタッチし
ている x 座標および y 座標を配列 sx[i],sy[i] に読み込み、これが終わると今度は i が 0 から
100 になるまで sx[i] を x 座標、sy[i] を y 座標とした位置に四角形を出力させていく。この
ようにすることでプレイヤーがタッチした通りに四角形を動かすことができる。さらにこ
の四角形の後におくれて小さい四角形を表示することで軌跡に余韻をあたえている。また、
この際関数「kiru」によって一定時間毎に三回、高音の切断音を効果音として流し、敵を
切っている感覚を味わうことができる。そして、この配列 sx[i] や sy[i] は man という構造
体に保存されるので、以後「skill」を選択することで関数「skill」へ移行し、いつでもプレ
イヤーが定めたアクションの技が出せるようになる。ちなみにこのアクションの設定では
タッチペンを画面につけたまま約一秒ほど動かせるので、敵を十字に切ったり、何回も突
いたりするようなイメージのアクションをつけることができる。この技を発動した様子を
次項の図 12. に示している。
13
図 12: 技の発動画面
3.3
その他の設定
前述により解説した六つの関数(main,world,mach,encount,fight,hanbetu,kakutei,ns,skill,kiku)
以外にも「学戦士」の内容を設定する関数が八つあるので簡単に解説する。一つ目は「menu」
という関数である。この関数はワールドマップ上で「ラーソル」のステータスを表示する
ための設定を行う関数で「ラーソル」の現在の HP、MP、レベル、所持 Pt を表示する。二
つ目は「mado」である。これも「ラーソル」のステータスを表示する設定を行っているが、
戦闘画面で表示するのでステータスの項目を戦闘で不必要な Pt は表示しない。三つ目は
「enemy」である。これは、
「ラーソル」が敵に反撃される時にあたえられるダメージを敵の
攻撃力と「ラーソル」の防御力により決定し、また「ラーソル」の生存の有無を判別する。
四つ目は「lvup」である。これは、
「ラーソル」の蓄積経験値が一定以上になると呼び出さ
れ、レベルアップによるステータスの変化や技の習得の有無を決定する。五つ目は「buy」
である。これは、街での pt の支払いや、そもそも pt を支払額以上所持しているか判別す
14
る。残りの三つ「INN」
「item」
「weapons」ではそれぞれ街の宿屋、道具屋、武器屋に入っ
たときの文字の出力やタッチペンによる買物の方法を設定している。
4
終わりに
昨年の卒年次生がニンテンドー DS のソフトウェア開発を研究テーマにしていたので、そ
の卒業論文 [12] をもとに開発環境の準備や動作確認の方法などは参考になったがコンパイ
ラである devkitPro のバージョンが異なるために、同じソースファイルを作成してもコンパ
イル時にエラーが多数発生し、ソースファイルの作成の際にはあまり参考にならなかった。
そこでインターネットで検索したが役立つ情報は少なく、書籍も調べてみたがほとんどな
かった。このため、コンパイラに付随してきたサンプルプログラムしか頼るものがなかっ
た。この結果、サンプルプログラムにある簡単な機能については理解できたが、複雑な部
分は理解できなかったので、簡単な機能の設定方法を組み合わせたり、適宜編集するなど
して研究を進めていった。しかし、画像や音楽など、付属的なファイルをうまく活用する
ことで少しはゲームらしさがある作品が作成でき、満足している。また、ニンテンドー DS
のタッチスクリーン機能は画面をタッチするという簡単で日常的に行う動作によって操作
ゲーム操作が可能であるためゲーム慣れした人だけではなく、ゲームに不慣れな人も楽し
めるゲームが作成できる素晴らしい機能である。なお、本研究において作成した「学戦士」
のソースファイル gakusensi.c を別冊の補助資料にまとめて載せているので、アイテムや武
器の効果が未設定であったり、不必要な文があるなどして、ゲームとして完全なものでは
ないが、ここまで述べてきたこととソースファイルの対応が知りたい方は参照していただ
きたい。
5
参考文献
[1] 任天堂, http://www.nintendo.co.jp/
[2] devkitPro, http://www.devkitpro.org/
[3] M3REAL, http://www.m3flash.jp/M3realpd.htm
[4] NO$GBA, http://nocash.emubase.de/gba.htm
15
[5] フリー効果音 On-Jin ∼音人∼, http://www.yen-soft.com/ssse/index.html
[6] Music with myuu [無料音楽 (フリー MIDI Wave MP3) と効果音、着メロ], http://www.ne.jp/asahi/
[7] Always M-N, http://page.freett.com/nari m/index.html
[8] 作曲ホイホイ Music Factory, http://www5f.biglobe.ne.jp/ mcs
[9] MODPlug Central, http://www.modplug.com/
[10] ソフト工房 乾, http://www2.ocn.ne.jp/ mohishi/
[11] めらまん PukuWiki, http://meraman.dip.jp/index.php?
[12] 南香澄 りんご採りゲーム∼ニンテンドー DS ソフトウェア∼ 2008 年度卒業論文
16