このチュートリアルでは、Suika2を使ってノベルゲームを作成する方法を説明します。
内容はとってもかんたんです。用意はいいですか?さあ、始めましょう!
もしチュートリアルの内容でわからないことがあれば、遠慮なく下のチャットで質問してください!
ここではWindowsを使います。https://suika2.com/dl/にアクセスします。
↓画面1.
↓画面2.
↓画面3.
↓画面4.
↓画面5.
↓画面6.
↓画面7.
ここでは日本語アドベンチャー形式でゲームを作成します。
↓画面8.
↓画面9.
↓画面10.
↓画面11.
↓画面12.
生成されたゲームのフォルダを開いてみます。
↓画面13.
↓画面14.
それぞれのフォルダがゲームの中身です。ファイルの振り分けは下記のようになっています。
●100%必要なので覚えたいフォルダ
名前 | 役割 |
bg/ | 背景画像を格納するフォルダです |
ch/ | キャラクタ画像を格納するフォルダです |
txt/ | シナリオを格納するフォルダです |
●すべてのフォルダ(カスタマイズ時に必要なところだけ開けばよい)
名前 | 役割 |
anime/ | アニメファイルを格納するフォルダです |
bg/ | 背景画像を格納するフォルダです |
bgm/ | BGMを格納するフォルダです |
cg/ | メッセージボックス等のシステム画像を格納するフォルダです |
ch/ | キャラクタ画像を格納するフォルダです |
conf/ | 設定ファイルを格納するフォルダです |
cv/ | ボイスを格納するフォルダです |
font/ | フォントを格納するフォルダです |
sav/ | セーブデータを格納するフォルダです |
se/ | 効果音を格納するフォルダです |
txt/ | シナリオを格納するフォルダです |
wms/ | プラグインを格納するフォルダです |
このゲームに変更を加えてチュートリアルを進めていきます。イメージをつかむために「続ける」ボタンを押してプレイしてみてください。
↓画面15.
右側の編集画面に表示されているのは txt フォルダに入っている init.txt というファイルです。
ここで一度、テキストの中身をすべて削除して、次の内容を貼り付け、改行キーを押して実行してみてください。
@bg roof.png 1.0
↓画面16.
↓画面17.
このように屋上の背景が表示されるはずです。
@bg というのが背景を表示する命令(コマンド)で、 roof.png は bg フォルダの中のファイル名、 1.0 は画面の表示が完了するまで(フェードイン)の時間(秒)です。
背景を表示できたところで、次はキャラクタの表示に移ります。
init.txt の中身をすべて削除して、次の内容を貼り付け、先頭行をポイントして「移動」ボタンを押し、「続ける」ボタンを押してください。
@bg roof.png 1.0 @ch center 001-fun.png 1.0
屋上の背景が表示され、続いてキャラクタが表示され、クリックを行うと、終了するはずです。
@ch というのがキャラクタを表示するコマンドで、 center は表示位置(中央)、 001-fun.png は ch フォルダの中のファイル名、 1.0 はフェードインの時間(秒)です。
背景、キャラクタを表示できたところで、次はメッセージとセリフの表示に移ります。
init.txt の中身をすべて削除し、次の内容を貼り付け、実行してみてください。
@bg roof.png 1.0 @ch center 001-fun.png 1.0 メッセージボックスにテキストを表示するのが"メッセージ"です。 みどり「キャラクタの名前を付けたメッセージが"セリフ"です。」 *みどり*011.ogg*セリフにはボイスをつけることができます。
先ほどのキャラクタが表示されたあと、メッセージとセリフが表示されるはずです。
名前付きのセリフとして認識される行は、先頭が * で始まる行か、名前「メッセージ」の形式の行です。
また、名前の付かないメッセージとして認識される行は、 普通の文章の行(先頭が @ や * や : ではない行)です。
メッセージ、セリフを表示できたところで、次はBGMの再生に移ります。
init.txt の中身をすべて削除して、次の内容を貼り付け、実行してみてください。
@bgm 01.ogg @bg roof.png 1.0 @ch center 001-fun.png 1.0
BGMが再生され、先ほどのキャラクタが表示されるはずです。
@bgm はBGM再生コマンドを表します。 01.ogg は bgm フォルダのファイル名を表します。
再生できるファイルは、44.1kHzのOgg Vorbis形式です。ステレオ、モノラルのどちらでも構いません。
ちなみに、01.ogg を 02.ogg に書き換えて実行してみてください。 曲が変わります。
BGMの再生ができたところで、次は選択肢の表示に移ります。
init.txt の中身をすべて削除して、次の内容を貼り付け、実行してみてください。
@bg roof.png 1.0 @ch center 001-fun.png 1.0 さて、学校へ行くか。 @choose label1 歩いて行こう label2 自転車で行こう :label1 歩いて行くことにした。 @goto end :label2 自転車で行くことにした。 @goto end :end
コピペしたら、ゲームを実行します。3つの選択肢が表示されるはずです。
@choose は選択肢コマンドを表し、 label1, label2 は選択肢が選ばれたときにジャンプする先のラベルです(後述)。 ラベルと選択肢がセットです。
:label1 は、ジャンプ先として指定されるラベルです。 ラベルの行は、ゲームの見た目の上では何も実行されません。
別な書き方として、次のようなスタイルもあります。この場合、ラベルは省略できます。お好みの方法を使ってください。
@bg roof.png 1.0 @ch center 001-fun.png 1.0 さて、学校へ行くか。 <<< switch "歩いて行こう" "自転車で行こう" { case "歩いて行こう": 歩いて行くことにした。 break case "自転車で行こう": 自転車で行くことにした。 break } >>>
選択肢の表示ができたところで、次はフラグを立てて分岐する処理に移ります。
これができればノベルゲームがひとまず形になります。
init.txt の中身をすべて削除して、次の内容を貼り付け、実行してみてください。
@bg roof.png 1.0 @ch center 001-fun.png 1.0
さて、学校へ行くか。
<<< switch "歩いて行こう" "自転車で行こう" { case "歩いて行こう": 歩いて行くことにした。 @set $1 = true break case "自転車で行こう": 自転車で行くことにした。 break } >>>
@if $1 == false NO_MONEY お金を拾った。 :NO_MONEY
保存したら、Suika2を再起動してゲームを実行します。
「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されるはずです。
ここでは @set と @if を組み合わせています。
@set は、フラフを立てるコマンドです。 続く $1 は、変数番号1に値trueをセットすることを意味します。 続く = は、単純な代入であることを意味します(他にも計算ができますが、ここでは割愛します)。 true は、整数の1を代入することを意味します。 変数の初期値は 0、つまり false ですので、「歩いて行こう」が選択されたときだけ、変数 $1 の値が true になります。
@if は、条件分岐です。 $1 == false は、変数 $1 の値が false、つまり 0 の場合、という条件を意味します。 NO_MONEY は、ラベルの名前です。条件に一致したとき、:NO_MONEY という行にジャンプします。 変数の初期値は 0、つまり false ですので、結果として、「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されることになります。
変数の使い方は0/1やfalse/trueのフラグだけではなく、好感度などの数値を持つこともできます。 詳細はコマンド・リファレンスの @set と @if をご覧ください。 ただ、スクリプトをシンプルに保つためには、なるべく0/1のフラグとして運用する方が望ましいと思います。
ちなみに、@if を便利にした書き方もあります。拡張if文と呼ばれています。 ラベルやジャンプがよくわからないときは、この書き方を使ってみてください。
<<< if $1 == 0 { お金を拾った。 } >>>
シナリオの分岐ができたところで、 ちょっとステップアップして、 タイトル画面やメニュー画面の作成方法を説明します。
init.txt の中身をすべて削除して、次の内容を貼り付け、実行してみてください。
@gui menu.txt :START :LOAD :CONFIG :QUIT
ゲームを実行すると、タイトル画面が表示されるはずです。
詳しく見ていきます。
@gui menu.txt というコマンドは、メニュー画面(GUIと呼ばれる)を表示するコマンドです。 これは gui フォルダの menu.txt というファイルで設定されているメニュー画面を表示しています。menu.txt はGUIファイルと呼ばれています。
GUIファイルの書き方については、 タイトル画面の作り方 を参照 してください。
何やら難しそうと思われるかもしれませんが、Photoshopのレイヤーを理解していれば、とても便利に使っていただけます。
シナリオの分量が大きくなってくると、1つのスクリプトファイルで書くのが大変になります。
そこで、シナリオの章やシーンごとにスクリプトを分割する方法があります。
txtフォルダの中に、init.txt のコピーを作成して、second.txt と名付けてください。
init.txt と second.txt の中身をすべて削除し、 次の内容を貼り付け、保存してみてください。
init.txt:
@bg roof.png 1.0 @ch center 001-fun.png 1.0 init.txtの中にいます。 @load second.txt
second.txt:
second.txtに移動しました。
保存したら、Suika2のメニューで「リロード」を選んでから、ゲームを実行してみてください。
second.txtに移動できたことがわかるはずです。
@loadは、指定されたスクリプトファイルに移動するためのコマンドです。
ここで気をつけたいこととして、ラベルはスクリプトファイル内でのみ有効ということがあります。ジャンプ前のスクリプトファイルで使っていたラベルは、 ジャンプ後のスクリプトファイルからは使うことができません。逆に言うと、異なるスクリプトファイルで同じ名前のラベルを作成することができます。
ゲームリリース時には、素材ファイルがそのまま見えないように、ファイル群を1つのパッケージにまとめます。
Suika2のメニューの「エクスポート(E)」から、 「Windowsゲームをエクスポートする」を選択します。
すると、Windows用に出力された完成形のフォルダが生成され、表示されます。配布ファイルには、suika.exe と data01.arc の2点があれば動作します。動画を利用した場合は mov フォルダも必要になります。(動画は現状ではパッケージに入らない仕様であるため)
細かい演出機能はのちのち覚えていくとして、まずはこれでゲームが作れます。
以上でチュートリアルは終わりです。おつかれさまでした。
もしチュートリアルの内容でわからないことがあれば、遠慮なく下のチャットで質問してください!