マドノマグラの初心者自作ゲーム制作日誌 迷走モード
プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。
ブログ履歴
2009/11/09: Rubyで適当版自分用関連記事リンク作成プログラムを作る
2009/06/04: Visual C++(DXライブラリ使用)の環境を整えてみるも休止状態に
2009/03/17: ActionScript勉強の環境を整えるも結局休止状態に
2006/07/15: とりあえず分岐型ゲームを作る グリーンタワーVer1.2 ダウンロード(zip)
2006/07/02: ブログスタート。NScripterで何かを作ろうとする
[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
バージョン表示 versionstr
古いバージョンのゲームをして、なんだバグがあるじゃないか!と騒いでしまった経験がある人もいるのではないだろうか。
そう、バージョンなどの表示が無いと、そういうトラブルだってありかねないのである。
というわけで、バージョン情報のダイアログで表示される文字を変えていく方法である。
versionstr "1行目文字","2行目文字"
1行目文字:1行目に表示される文字列
2行目文字:2行目に表示される文字列
次はタイトル画面っぽいのを作っていこうかなと思うのであった。
タイトル表示 caption
ウィンドウの左上に付くタイトルを付けたい、または色々と変えてみたいときはこれ。
caption "タイトル"
タイトル:文字通り、左上に表示されるタイトル
場面によって、微妙にタイトル部分を変えてみるというのもいいかもしれない。
次回はさらにどうでもいいところをいじってみる。
文字表示の位置を設定してみる。locate
たまに、一文が画面の真ん中らへんに出てくる演出がある。
NScripterで、brや全角スペースを駆使すれば、その状態を作ることはできる。
でも、ちょっと面倒だよなあ。
というときに役立つのがこれである。
locate 文字数,行数
文字数:横方向に送る(全角スペースをx個分)
行数:縦方向に送る(brをy個分)
まあ、個人的にはこれはあまり使わないのかもしれないが、念のためということで。
次はさらにどうでもいい部分をいじってみることにしよう。
立ち絵の消去をやってみる cl
キャラクターが登場したからといって、そのままずっといるわけにもいかない。
そう、そのキャラクターがその場を立ち去る演出がしたいときに困るのである。
というわけで、立ち絵の消去をやってみるのだった。
*下準備(前回と同様)*
まずはnscr.exeと同じフォルダ内にimageフォルダを作った。
そして、昼行灯素材倉庫(管理人:文月さん)から、ダウンロード及び解凍をして得た、ji.Bmpをimageフォルダ内に入れた。
今回使うのはこの構文
cl 消去する立ち絵の位置,エフェクト番号
消去する立ち絵の位置:これはld文で表示させたもの。
エフェクト番号:いつものとおり。
なお、背景を変えると、立ち絵も消えるようである。
さて、次は何をしてみようか。
少し、どうでもいいところをいじってみようかな?
立ち絵を表示してみる ld
ほとんどのAVGでは必ずといっていいほど、何らかのキャラクターが画面に現れるという演出がある。
そう、いわゆる簡単な立ち絵の出し方を見てみることにするのであった。
*下準備*
まずはnscr.exeと同じフォルダ内にimageフォルダを作った。
そして、昼行灯素材倉庫(管理人:文月さん)から、ダウンロード及び解凍をして得た、ji.Bmpをimageフォルダ内に入れた。
今回使うのはこの構文
ld 立ち絵の位置,":透過形式;画像ファイル",エフェクト番号
立ち絵の位置:文字通り位置を設定するもの。(3種類選べる)
l:left(左)
c:center(中央)
r:right(右)
透過形式:
c:コピー 透明色設定はなし。単純にコピーします。
l:左上設定 左上のピクセルの色を透過色として指定する。
r:右上設定 右上のピクセルの色を透過色として指定する。
a:アルファブレンド。(かなり重要らしいが今回はパス)
エフェクト番号:もう勉強したよね。
なんで透過形式が必要になるかというのは、
画像ファイルは四角形をしているから。
*そのまま立ち絵として表示すると周りの余計な部分も表示されてしまうのはサンプル文のとおり。
あと、立ち絵が上にくる順番は右→中央→左になっているようだ。(数少ない経験則でまだまだ未確認)
次は、立ち絵の消去をやってみることにしよう。
画面の背景画像表示 bg
前回の続きである。
まずは、下準備は前回同様以下のとおり。
*まずはnscr.exeと同じフォルダ内にimageフォルダを作った。
そして、背景写真補完の会から、siro01.jpgをダウンロードし、imageフォルダ内に入れた。
どんなエフェクトをかけて表示するかを先に定義ブロックで決める。(前回説明済)
↓
決めたエフェクト方法は、実行ブロックで背景を表示するときに呼び出す。
というプロセスの後半戦である。
bgは背景を表示する命令であり、以下のような文が考えられる。
bg "画像ファイル",エフェクト番号
bg #rrggbb,エフェクト番号
bg black,エフェクト番号
bg white,エフェクト番号
一番上は、画像ファイルを呼び出して、背景表示をするというもの(画像は640×480ドットでよろしく)
他は、単色での塗りつぶしである。(RGB表記あるいは、文字通りwhite or black、白か黒か)
これで、背景の表示はOK。
これでさらに一歩進んだわけだ。
さて、次はどうするべきか……
画面の演出効果 effect
たとえば、主人公が光に包まれたりするときは、徐々に画面が真っ白になった方が面白いわけである。また、やられたときには、画面がだんだんと真っ赤になった方がなんとなく、臨場感があったりするわけである。
というわけで、画面が変わる際の演出をしてみようというわけだ。
下準備
*まずはnscr.exeと同じフォルダ内にimageフォルダを作った。
そして、背景写真補完の会から、siro01.jpgをダウンロードし、imageフォルダ内に入れた。
さて、画像表示の流れはこういうことになる。
どんなエフェクトをかけて表示するかを先に定義ブロックで決める。
↓
決めたエフェクト方法は、実行ブロックで背景を表示するときに呼び出す。
今回は効果を定義することを考える。
effect エフェクト番号,効果番号,掛ける時間
エフェクト番号:画像表示のとき呼び出される番号です。 (2以上の数らしい)
効果番号:効果が割り当てられた番号です。(1から18まで)
掛ける時間:効果にかける時間(単位ミリ秒)
ここで、効果番号の説明(15から18は、よくわからないのでとりあえずパス)
1:瞬時表示。時間指定不用
2:左シャッター
3:右シャッター
4:上シャッター
5:下シャッター
6:左カーテン
7:右カーテン
8:上カーテン
9:下カーテン
10:ピクセル単位のクロスフェード
11:左からスクロール
12:右からスクロール
13:上からスクロール
14:下からスクロール
そして、次は画像表示なのだが、これは次回の講釈。
右クリックでメニューを表示(セーブ・ロード・回想など) rmenu
短いノベルゲームならまだしも、中・長編のゲームになってくるとちゃんと、セーブ・ロードあるいは回想機能がないと話にならないわけだ。
というわけで、そんな機能を加えるため、右クリックでメニューを表示してみましょうというわけである。
サンプル文の中の、定義ブロックの rmenu がそれである。
rmenu "文字列",機能,…
で、表示される文字と、機能が決定する。
ちなみに機能は以下のとおり。
save…セーブメニューを出します。
load…ロードメニューを出します。
lookback…回想モードに行きます。
skip…「選択肢まで進む」をクリックするのと同じです。
windowerase…ウィンドウを消します。
reset…プログラムをリセットします。
とりあえず、これを定義ブロックに入れ込むだけで、セーブ・ロードなどの機能はOKである。
ここまでくれば、長文のAVGゲームも作成可能になったわけである。
そろそろ、背景などの効果を考えるところまで来ているのかもしれないなあ。と思うのであった。
条件分岐を考える if notif
彼女に対して、
「この戦争が終わったら、必ず迎えに行くから~」
というとほぼ10割、その人は死んでしまうわけである。
死亡フラグというやつである。
そんな、フラグってやつを考えていきたいわけだ。
if {条件} {命令}
;{条件}が正しければ{命令}を実行
notif {条件} {命令}
;{条件}が正しくなければ{命令}を実行
ただ、このifを使うときは、:が重要になるようだ。
if文の後に2つ以上の命令を行う際に:で対応できるわけである。
:←複数の命令を一行で書きたい時に用いる記号
括弧がつかえないという弊害はこういうところに出るんですなあ。と思いつつ。
これで、フラグ判定もできるようになったわけだ。
数字変数を使ってみる % mov inc dec add sub
あるところに、主人公とヒロインがいるとする。
そして進めていくうちに選択肢が出てきて、ヒロインに好かれるような言動・行動をすれば好感度が1づつ上昇していくものとする。
そして、最後の地点で好感度が一定値以上に達していたらヒロインとハッピーエンド
一定値未満ならふられてバッドエンドなんてことはよくある話である。
その好感度などを格納するのが数字変数……という解釈でいいのかどうかはわからないが、変数というのはゲーム制作のうえで重要な鍵を握っているような気がする。
ということで、ある腹ペコ大食い王をイメージしたサンプルを作ってみた。
ここでは%1というのがカレーを何杯食べたかの数字変数になっている。
ここで、よく使いそうな構文をあげてみる。
mov 変数,数字:変数に数字を代入する
inc 変数:変数に1足す
dec 変数:変数に1引く
add 変数,数字:変数に数字を足す
sub 変数,数字:変数に数字を引く
これで、パラメーターつきの育成ゲームも作れるかも?
そんな夢を持ってみるのだった。