忍者ブログ

マドノマグラの初心者自作ゲーム制作日誌 迷走モード

プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。

ブログ履歴

2010/11/06: HSP3.22の環境を整えてみる
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ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

画面の背景画像表示 bg

前回の続きである。

まずは、下準備は前回同様以下のとおり。
*まずはnscr.exeと同じフォルダ内にimageフォルダを作った。
そして、背景写真補完の会から、siro01.jpgをダウンロードし、imageフォルダ内に入れた。


どんなエフェクトをかけて表示するかを先に定義ブロックで決める。(前回説明済)

決めたエフェクト方法は、実行ブロックで背景を表示するときに呼び出す。

というプロセスの後半戦である。

bgは背景を表示する命令であり、以下のような文が考えられる。

bg "画像ファイル",エフェクト番号

bg #rrggbb,エフェクト番号
bg black,エフェクト番号
bg white,エフェクト番号

一番上は、画像ファイルを呼び出して、背景表示をするというもの(画像は640×480ドットでよろしく)
他は、単色での塗りつぶしである。(RGB表記あるいは、文字通りwhite or black、白か黒か)


これで、背景の表示はOK。
これでさらに一歩進んだわけだ。

さて、次はどうするべきか……

PR

画面の演出効果 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ゲームも作成可能になったわけである。

そろそろ、背景などの効果を考えるところまで来ているのかもしれないなあ。と思うのであった。

初ゲーム制作 グリーンタワーver.1.0完成

とりあえず、今できる力を最大限発揮して、初ゲーム:グリーンタワー(仮)を作ってみた。

現状では、Nscripterの、

文字表示
選択肢
数字変数
条件分岐

のみを取り入れて作成した状態である。

まだ、セーブ機能・ロード機能・回想機能などは入っていない状態である。

だが、とりあえず一日でゲームを作るという目標は達成できたわけだ。
これから、さらにゲームが作れるだろうか。

そのためには、まだまだ、Nscripterを知る必要がある。そう感じたのであった。

グリーンタワー(仮)ver.1.0 ダウンロード(zip)

条件分岐を考える if notif

彼女に対して、
「この戦争が終わったら、必ず迎えに行くから~」
というとほぼ10割、その人は死んでしまうわけである。

死亡フラグというやつである。

そんな、フラグってやつを考えていきたいわけだ。

if {条件} {命令}
;{条件}が正しければ{命令}を実行
notif {条件} {命令}
;{条件}が正しくなければ{命令}を実行

ただ、このifを使うときは、:が重要になるようだ。
if文の後に2つ以上の命令を行う際に:で対応できるわけである。

:←複数の命令を一行で書きたい時に用いる記号


括弧がつかえないという弊害はこういうところに出るんですなあ。と思いつつ。
これで、フラグ判定もできるようになったわけだ。

数字変数を使ってみる % mov inc dec add sub

あるところに、主人公とヒロインがいるとする。
そして進めていくうちに選択肢が出てきて、ヒロインに好かれるような言動・行動をすれば好感度が1づつ上昇していくものとする。

そして、最後の地点で好感度が一定値以上に達していたらヒロインとハッピーエンド
一定値未満ならふられてバッドエンドなんてことはよくある話である。

その好感度などを格納するのが数字変数……という解釈でいいのかどうかはわからないが、変数というのはゲーム制作のうえで重要な鍵を握っているような気がする。

ということで、ある腹ペコ大食い王をイメージしたサンプルを作ってみた。

ここでは%1というのがカレーを何杯食べたかの数字変数になっている。

ここで、よく使いそうな構文をあげてみる。

mov 変数,数字:変数に数字を代入する
inc 変数:変数に1足す
dec 変数:変数に1引く
add 変数,数字:変数に数字を足す
sub 変数,数字:変数に数字を引く


これで、パラメーターつきの育成ゲームも作れるかも?
そんな夢を持ってみるのだった。

選択肢を使ってみる select selgosub goto gosub

小説にあって、ゲームに無い最大の要素というのは、選択肢だよなあ~
もし自分が、この道に進んでいれば、どうなっていたのかというのを体現できるのがこの選択肢というものである。

というわけで、選択肢を覚えていくことにした。

選択肢を考えるに当たって、2種類のパターンがあるようだ。


select "{選択肢1}",{*飛び先ラベル1},"{選択肢2}",{*飛び先ラベル2}
selgosub "{選択肢1}",{*飛び先ラベル1},"{選択肢2}",{*飛び先ラベル2}

共通点:

選択肢1
選択肢2

という選択肢が表示され、「選択肢1」をクリックするとラベル「*飛び先ラベル1」へ、
「選択肢2」をクリックするとラベル「*飛び先ラベル2」へ飛ぶといった動作をする。
選択肢は2つ以上書くことも可能。

で、違いは?というとBASICのgosubと同じだそうだ。

selgosubの場合は、return文にきたところで、selgosubの次の行に戻ってくれるようである。
selectにはその効果はない。

ちなみに、BASICでおなじみの、goto、gosubも構文として存在するようだ。

goto {*ラベル名}で、飛び先ラベルへ飛ぶ
gosub {*ラベル名}で、飛び先ラベルへ飛ぶ。returnで戻ってくる。


ただ、プログラミングにあまり詳しくないので、どの状況で、gosub系の構文を使っていいのかがわからない。
スパゲッティだとか、ソースだとかいわれてもさっぱりである。

とはいえ、これで選択肢を使うという選択肢を手に入れたわけだ。

NScripterで文字を表示させてみる @ \ br end

NScripterで文字を表示させるに当たって、まず以下の作業を行った。

まず、新規ファイル"greentower"を作った。
ダウンロードしてきたnscr.exeをコピーしてきた。
テキストファイル00.txtを入れてみた。

続き部分で示されるような文を00.txtに打ちこんだ。
とにかく、文章が完成したら保存して、nscr.exeをダブルクリックで起動させると……

おーっ!
表示されたよ、すごいなあ。
記述した文章が出てきてそのまま出てきたわけだ。

文を出すだけなら、本当に簡単だなあ…


ただし、表示する文書は必ず全角で書くという約束ごとがあるらしい。
うーん、英語は小文字のほうが半角のほうがかっこいいのにねえ。

ここで、コマンド紹介っぽいことをしてみる。
どうやらこういうことになっているらしい。

@:クリック待ち
@のところで文が止まって、クリックすると続きが始まる効果。

\(円マーク):改ページ
\(円マーク)のところでクリック待ちが行われ、クリックするとページが変わって、画面の始めから続きの文が始まる効果

br:改行
空行を作ることができる効果。

end:終了
NScripterを終了する効果


さて、次はどうしようかなあ……

NScripter基本形を学ぶ *define game *start

今回、初ゲーム:グリーンタワー(仮)を作ってみることにする。
そのために基本形を学ぶのが大事ということで、順番に学んでいくことにした。

まず、続き部分に示された文が基本の形になるのだそうな。

*defineからgameまでの間:「定義ブロック」ここに全体の設定等を記述する。
*start以下:「実行ブロック」、ここに内容が書かれる。

どうやら私がグリーンタワー(仮)作成に当たって書いた文章は、実行ブロックに書けばいいようである。

次は文章を表示させてみるのであった。ファイトだ、自分。

初ゲームのストーリーを考えてみる。

ちょっと、軽く初ゲームの中身について考えてみた。

とりあえず、技術面から考えて、絵や音楽の必要が無いゲームを作ることがいいと考えるわけだ。
よって、主人公のとりまく環境は、暗闇であり、音が聞こえない状態であるほうがいい気がする。
そう、何かの影響によって、暗闇+無音の環境にいるということにすればいいのだ。

そこで、昔、レトロゲームの攻略サイトを巡回していたころのことを思い出す。
そういえば、ドルアーガの塔で暗闇でクリアした人のサイトを見たことがあるような気がする。
しかも、ゴースト系の敵は見えない状態になっていて、他の宝を出すのにかなり苦労していたようだった……気がする。(詳細はあまり覚えていない)

これを踏まえて、こういう筋の話を作ればいいのだと考えた。

1.ある理由で塔の頂上を目指している主人公
2.現在自分がいる階より下の階で取るべきアイテムをとり損ねた状態。
3.2により、自分を取り巻く環境が暗闇状態+無音状態。

とりあえず、そんな暗闇状態の主人公が、塔の頂上を目指すような話にしてみようと思うのであった。

PR

カテゴリー

最新記事

アーカイブ

プロフィール

HN:
マドノマグラ
性別:
非公開
職業:
趣味:
駄文書き
自己紹介:
ゲームを作ろうとしているうちに、言語学習に飽きていく。典型的なダメな人パターンに陥るアホな人

リンク

ブログ内検索

バーコード

RSS

忍者ブログ │ [PR]