Latest Entries

絵を表示するよ!

さてさて、間が空きましたが。

前回までので、テキスト部分はこれで大筋おk。
あとは適当に分岐を増やしてゲームらしくしていけばいい。
細かい表示指定は他にもあるが、これだけあればほとんど問題ない。
必要な細かいものは別途調査してもらうとして。

だが、ゲームとしてはこれでは当然不十分。

ゲームは「絵」がなくちゃ話にならん
テキストアドベンチャー以外で絵のないゲームなんて、もう今時エロゲじゃなくてもお話にもならねっすよ。

というわけで、まずは基本、背景絵を出してみましょう。

テキトーな絵を用意してくりゃれ。
ファイルはjpegかbmp
jpegだと、圧縮しすぎると荒れるので、本番の絵では高画質設定にしよう。
bmpはそのままで。サイズは大きいが、最終的には圧縮された形で配布するので、サイズは小さくなる。
表示サイズは800*600。今時のエロゲデフォサイズを。
当然のことながら、絵は大きく描いて縮小すると綺麗に見えるぞ(具体的には表示サイズに対して一辺×4倍以上での作成がオヌヌメ)。

------------------------
・bmpファイル注意!

 bmpは必ず「 24bit-bmp 」で出力すること。
 「 32ビット 」bmpだと、表示がおかしくなります!
 最近のフルカラーは、内部では32ビットになっているケースが多いので、そのままbmpに出すと32ビットになってしまいます。
 「表示がシマシマで変だ!?」という方は、CGファイルのプロパティで、画像の色数をチェックしてみて、24ビットかどうか確認してみてください。
 32ビットの場合は、減色で24ビットにするか、保存時に「24ビットbmp」で保存するか、pngに変換→bmpに再変換すれば、劣化せずに24ビットになります。

 特に「立ち絵」ではこの失敗をやりやすいので注意!

 「jpeg」で保存したときは自動的に24ビットになるので問題ありません。


------------------------


今回のコマンドは「bg」。「BackGround」のこと。
こんな感じに書く。


bg "BG\BGNoon.jpg",17,1000


書式に書く項目は三つ。


bg "(フォルダ名\)表示ファイル名", エフェクト番号, 表示時間(ミリ秒)


画像は特定のフォルダにまとめて突っ込むのがいいでしょう。
なんでこの場合、BGフォルダに背景は全部突っ込んであります。
立ち絵とかイベント絵は、STDとかEVフォルダとか、適当なのをまた作って突っ込みます。
表示する種類ごとにフォルダ分けするのは、常套手段っすね。

エフェクト番号は、1から17まで。
1が瞬間表示。パッと出てパッと消える。
10がいわゆるフェードイン/フェードアウトのこと。
17はモザイクイン/アウト。
その他のは、カーテンが引かれるように、右から左から上から下からフェードするやつとか、スクロールイン/アウトとか。必要に応じて使ってちょーだい。

表示時間はミリ秒、1000ミリ秒=1秒ね。エフェクトで1を指定したときだけは、この表示時間は無効になるので、書いても書かなくてもいい。
詳しくはマニュアルを見よ(これは見れば解るw)。

これは、表示演出として使えるので、考えて選んでちょだい。
最後の表示時間で、エフェクトがかかる時間が調整できるので、ゆっくりイン・アウトさせたければ長めに、ぱっと切り替えたければエフェクト番号1。

このエフェクト番号は、立ち絵表示やスプライトなんかでも共通なので、よく使うことになるでしょう。

イベント絵もこれで表示することになるので、覚えておこう。


今日のまとめ。

絵を表示してよりゲームらしくするよ!

その前に絵描けよ!w

戻ったどー

一回書いた長文が全部消えて凹んだorz

しばし放置しといたわけですが。
書くネタ云々より色々あって放置しといたわけですが。

とりあえず放置しっぱなしはよくないだろうと。
いや当たり前だろw

でまあ年度も新しくなりましたんで、新年度のご挨拶がてら。

えー、この3/21で、夜鷹計画(旧Nighthawk Project)は、活動開始から10周年を迎えました。

偏に俺のがんばったおかげです。有難う俺w <おまえどんだけ自信過剰だwww

いやまあー、支持してくれた方々がいなけりゃ、ドジン屋も成り立ちませんからねw
ここに篤く御礼申し上げますm(_ _)m
&今後ともよろしく。


てなわけで。
今後の目標でも……
まあ景気悪いし、ドジン屋だけでなく、商業漫画の方もなんか色々とねえ。景気悪い話ばっかですが。
なんとか目標立ててそれに向けて動いた方がなにかとやりやすいと。

最初の目標は、「ノストラダムスのクソバカヤロウにやられる前にやれw」で始めたという勢いだけでしたが、その後3年生存率100%、5年生存率100%を目指し、10年生き続けました。
ここまでいったら……まあ、死ぬまでなんかやってんじゃないでしょかw
商業誌にいっぺん描けたらええかなあ、てなとこでも目標にしますかね、次は。<また10ヵ年計画かwwww
「壁になりたい!」なんてのはそうそうプロでも叶う夢ちゃうんでwww

まあ、ええ歳こいたジジイになっても「萌え〜♪」とか言ってんのもどうかと思うけどwww
いやリアルで真剣に「萌え〜♪」とか言ったことありませんがねw
ジジイになる前に死んどいた方が世のためかもしれんねwww
そう簡単に死にたくありませんので拒否しますがwwww

でもリアルでそういう「萌えジジイ」「腐婆」はこれから増えそうだな……
「萌え老人ホーム」が20年後には必要だwwww
お、これは次のビジネスとしてイケそうだwwwwだれかアイディア買ってくれwwww


そんなこんなで続く。

あー同人ソフト制作の続きも書いとかんとw

同人ソフト作るよ!の4;分割したり分岐したり

さて、前回はテキストを表示するところをやった。
今回はテキストの2、「テキスト分割」と「分岐」をやっていこう。


テキスト打ちがある程度進むと、多分テキストで0.txtが膨れ上がっていくことだろう。

えー、ちなみに私は00.txtとして使っているので、そちらに表記を統一するとしよう。システム的にもそちらを推奨してるし。
テキスト量が多いときには、以下のこともあって、二桁表示可能な形にする方が都合がよいので。

そこで、「テキスト分割」を、場面転換などで適宜行っていくようにしたい。

具体的には、最初のテキストは00.txtだが、それに続けて01.txt、02.txt……と、テキストを増やしていくことができるのだ。
連続した数字のファイルを順番に読んでいくので、00.txtに書いてある最初のスクリプトの定義設定を、改めて書く必要はない。
00.txtの続きを、どんどん続きナンバーのテキストファイルに書いていけばいいのだ。

ただし。
一番最後のナンバーのファイルには、必ず "end" タグがはいってないといけない。
他のファイルには逆に入れない。
入れると、「そこで終り」になるから。
ゲームの終りに入れて、「ここで終りッスよ」というマーカーなのだ。

例えば、00〜08.txtまであったら、08.txtの最後に「だけ」"end"を入れる。
ただし、途中でendが入ってると、スキップしない限りはそこで強制終了になってしまう。
例えば途中の06.txtの最後にendを入れたままだと、07.txt、08.txtの内容は全く表示されないままムダになる。

例外として、下で書くが、「分岐」で「これを選択したらゲーム終了」となるように「あえてしてある」のなら問題はない。
デバッグ用にすぐ終わらせたいときには、「endタグへ飛ばす」よう分岐コマンドで書けばいい。
もちろん、普通に右上の×を押せばいいって話もあるが。


さて、テキスト分割はこれでおkだろう。

次は、ただ一本道として流れていくテキストに変化を出すために、「分岐」を作る。
分岐を作ることで、アドベンチャーゲームらしくなってくるではないか。

さて、分岐を作るためのコマンドは「csel」。「Command SELect」の略ね。
テキストウインドウに選択肢が出て、選んだ先の「タグ」へと分岐が飛んでいく。

ADVサンプルのラストにこんなのが入っていたと思うが、これが分岐コマンドの書き方である。

-----------------

csel "分岐1",*tag1,"分岐2",*tag2,"分岐3",*tag3

-----------------


ウインドウには、↓のような感じで表示されるので、それをクリックして選んでもらう。

-----------------

分岐1
分岐2
分岐3

-----------------

で、クリックされると、それぞれ上から*tag1、*tag2、*tag3と書かれた「タグ」へとジャンプする。

ただ、これはあくまで「選択肢だけの分岐」であって、飛んだあとにまた別の処理を考えなくてはならない。
飛んだ先で、選択肢に応じたフラグ立て(潰し)、パラメータの変化、それぞれの場合に出すテキストを変えたり、表示する絵を変えたり……といった、ことを記述して実行するのである。

これはどういう構造かといえば……

例えばこういう表記をしていると、上のコマンドセレクトから*tag1、*tag2、*tag3へ飛んだあと、


-----------------

*tag1

(イベント1処理をいろいろここへ書く、以下同様)

goto EV4    ;「*EV4へジャンプ」というコマンド(*tag2、*tag3をすっとばす)
           ↓
*tag2        ↓
           ↓
(イベント2)    ↓
           ↓
goto EV4    ;「*EV4へジャンプ」(*tag3をすっとばす)
           ↓
*tag3        ↓
           ↓
(イベント3)    ↓
           ↓
         ; こ↓こは別にジャンプしなくてもすぐ↓なので書かない
           ↓
*EV4     ←←+ ;で、ここへ到着
(イベント4)

end       ;終了ー


-----------------

スクリプトっていうのは基本的に、「上から順番に処理していく」のである。
だからこういう「処理をとばす」コマンドがないと、処理の重複があっても省略できないし、選択肢が基本的に作れないのである。
それではスクリプト言語としては欠陥品だ。

↑の例だと、「goto EV4」てのがないと、

イベント1→イベント2→イベント3(→共通イベント4→終了)

と順番に処理していく。
「どんな場合」でも。cselでどんな選択をしても、同じイベントになってしまう。

それぞれのイベントが独立して発生する場合、上から順番に処理していったのではおかしいことになる。
イベントを選択できる状態の場合、どこを選択しても上から順に起こる=「全て同じ」では、選択肢の意味がない。

なので、この分岐が役に立つ。

分岐で選択した番号が、それぞれイベント1・2・3に対応して、対応するイベントだけを起こし、次に移るようにしたい場合には、これを使うことになる。

goto ××」というコマンドは、「タグ *××へ行け」というコマンドで、処理を指定の場所まで飛ばすコマンドである(飛び先のタグは必ず頭に半角「*」をつけること)。
これで全て、共通イベントタグ"*EV4"へ飛ばすように指定してある。

↑の場合では、イベント1・2・3が分岐選択イベントで、その選択に応じて、

分岐1: イベント1(→2・3飛ばす)→4→終了

となったり

分岐2: イベント2(→3飛ばす)→4→終了
分岐3: イベント3→4→終了


となったりするのである。

これは後に書く「条件分岐」とは別の、テキストのみの「分岐表示」の話で、パラメータを変化させたければ、これに変数(後述)の操作コマンドを加えて使う。



今日のまとめ。

分岐を作ってゲームらしくするよ!


これができなきゃ、アドベンチャーすら作れまへんでー。
分岐の方法は他にもあるけど、とりあえずこれは基本中の基本ってことで。

同人ソフト作るよ!の3:テキスト表示は面毒斎

さて、マニュアルの方はとりあえずおいといて。

実際にゲーム作るよ!

まずはテキスト打ちから。
例の0.txt(もしくは00.txtとしてもよしっつーかこっち推奨みたい)を開きまして。
中身を読んで行くと、コメントがあちこちに入ってますんで、まあ最初のアレコレはカスタマイズしなきゃまあそのままで。

で、「*start(サンプルではさらに下の"*game_start")」ってのを探して、その下からが、テキストとかCGとか表示するとこになってるんで、そこからどぞ。

んで、プロット立ててー、それを文章化して打ち込んでいくわけ。
ペコペコペコペコ。

そこで改行とかの指示。
文章の終りに「@」をつけたり、「\」をつけたりで、改行や改ページを指示できる。
何もつけなければ改ページ、@をつければ複数行を表示する。
基本的にはクリック待ち、一行ごと表示。放置しといても勝手に変わったりしないように。勝手に流すようにもできるけど、今回それは採用しない方向で。
ただ、一ページの表示可能範囲を越えては表示できないため、そこを超えるとエラーウインドウが出てストップする。
デバッグで、そうならなうように一画面の表示文字数を揃え直していく。テキスト量が増えると、これが一番めんどくさい。

そのテキスト表示定義は次のとおり。
テンプレ内の「*start」タグのすぐ下あたりで定義。

コマンドは「setwindow」。画面下、テキスト表示域の設定をするコマンド。
テンプレには入ってるので、これを前回の800*600にした全体ウインドウにあわせて拡大。
↓設定では、5行*37文字設定。800*600でなら、これでまあ問題はなかろう。
表示ベースは半透明ウインドウ。
左右になんか表示したり、テキスト枠とか使いたい場合には、その分エリア削ったり位置変更しなきゃならんけど、とりあえずはこれで。

行数オーバーしたり、文字数が一画面表示をオーバーしたりすると、エラー出て止まる。
そこいらを考えて、テキストを一画面で収まるように調整しながら、テキスト演出をする。
一遍に表示できるのは4行ぐらいまで、と考えるように。
まあ実際は、ほとんど1〜2行でページ変わるけど。

;テキストウインドウ設定(対応する数字がそれぞれの項目を意味する、座標やサイズは表示ピクセル単位)
;setwindow 文字スタート座標X,同Y,文字数横,同数縦,フォントサイズX,同Y,字間pixX,同Y,
; デフォルト表示速度,太字フラグ(1/0),
; ウインドウ色,表示座標X,同Y,右下座標X,同Y,

setwindow 30,480,37,5,20,20,0,1,0,1,1,#BB8866,20,470,780,580


コマンドに続く数字が、上のコメントにある項目に対応してる。


で、表示テキストの書き方・例。
---------------------------------

つまり、こんな具合になる。@ :←改ページ(+クリック待ち:以下デフォルト)
こういう風に書いていくと、こういう表示になる。 :←マークなし(改行のみ)
ここは続けて一画面に表示される。 :←マークなし(改行のみ)
で、ここで改ページ。\ :←改ページ(次の画面へ)
ここから次の画面に入る。 :←マークなし(改行のみ)
さらに続く。@ :←クリック待ち&改ページ

---------------------------------

テキストが表示されるのはこんな具合。


つまり、こんな具合になる。

 ↓

こういう風に書いていくと、こういう表示になる。

 ↓

こういう風に書いていくと、こういう表示になる。
ここは続けて一画面に表示される。

 ↓

こういう風に書いていくと、こういう表示になる。
ここは続けて一画面に表示される。
で、ここで改ページ。

 ↓

ここから次の画面に入る。

 ↓

ここから次の画面に入る。
さらに続く。

 ↓

<終了>


こんなテキストを、ゲームにあわせてペコペコペコペコ打っていく。
時々ゲームを立ち上げて、表示チェック。エラーウインドウが出たら、そこを直して再度チェック。
これで、エラーウインドウが出なくなって、最後まで終わるように書くこと。
途中で止まるようじゃいかんですよ。

テキストを扱う場合の注意。

・英数字は全角しか使えない。半角は無視されるので注意。
(※ただし、一時的に「英語モード」にすることで、半角英数字が使えるようになる)
(※が、ここでは英語モードは必要ないので、特に書きませんw)
・コメント行冒頭の「;」が「全角」になってると、表示されるぞw
 半角に直せよ。




さらに、ここで「テキストの流れ」というのを考える。

具体的には、文のまとまりや意味で、表示をまとめるということ。
場面転換より細かい単位で、文章表示を「演出」として考えること。
スクリプトレベルで、その表示演出を考えていかなければならない。
例えば、全部一行表示でやっていくと、短い文章がぶつ切りでずっと表示されることになる。
テンポは速い感じがするが、改ページばかりでは広いテキストエリアを取っても意味がない。
ある程度の「表示の固まり」は考えていった方がよかろう。

詳しいことは、君らの持ってるエロゲとか見ながら考えておくれw
ただ、変な地雷を参考にして地雷になっても、責任はもてんよwwww
テキストが上手いと思われるエロゲを選んでな。

Nscripter作者の高橋氏も、サイトで「エロゲテキスト講座」をやってたりするので、それを参考にするのもよかろう。
エロゲにはエロゲなりの文法てのがあるらしいので。


今日のまとめ。

・テキスト表示の演出考えるよ!

小説的には、段落のまとまりとかと同じことっすよ。

年末まんがまつり

当たりますた(゚∀゚)ニヤニヤ

12/30 東1ホール・E-41bだす。

これで今年も安心して終われますのうw

さて、その前に11/16の秋ティアがあるでのう……あ、これも東1だ。なんの因果だね。

Appendix

プロフィール

Author:夜鷹@偽者
貴様ッ、見ているなッ!

最近の記事

夜鷹来訪者

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ