Suika2 チュートリアル

Suika2の世界へようこそ!このページでは、Suika2を使ってアドベンチャーゲーム・ノベルゲームを作成する方法を説明します。内容は非常に簡単です。用意はいいですか?さあ、始めましょう!

準備

ここではWindowsを使います。

まずはじめに、Suika2のバイナリを ダウンロード します。ダウンロードしたZIPファイルを展開すると、下記のようなフォルダとファイルが作成されます。これは、Suika2の実行ファイルとサンプルゲームが一緒になったものです。

このサンプルゲームに変更を加えてチュートリアルを進めていきます。まだサンプルゲームをプレイしていなければ、イメージをつかむために、一度suika.exeを実行してプレイしてみてください。

スクリプトを開く

サンプルゲームのフォルダ構成を確認していただいたところで、次に移ります。Windowsに付属のメモ帳以外のエディタを用意してください。txtフォルダを開くと、init.txtというファイルがあります。このファイルが、ゲームの起動後、最初に読み込まれるスクリプトです。テキストエディタで開いていただければ、ただのテキストファイルであることがわかるはずです。

背景を表示する

init.txtがテキストファイルであることを確認していただいたところで、次は背景の表示に移ります。ここで一度、init.txtの中身を、次の内容に置き換えて、保存してみてください。文字コードはUTF-8 (BOMなし)ですが、詳しくなければ、init.txtを編集して上書きするだけでOKです。ただし、Windowsに付属のメモ帳は使えませんのでご注意ください。

@bg roof.png 1.0
@click

保存したら、ゲームを実行します。屋上の背景が表示され、クリックを待って、終了するはずです。@bgというのが背景を表示するコマンドで、roof.pngはbgフォルダの中のファイル名、1.0はフェードインの時間(秒)です。

キャラクタを表示する

背景を表示できたところで、次はキャラクタの表示に移ります。init.txtの中身をすべて削除して、次の内容に置き換えて、保存してみてください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
@click

保存したら、ゲームを実行します。屋上の背景が表示され、続いてキャラクタが表示され、クリックを待って、終了するはずです。@chというのがキャラクタを表示するコマンドで、centerは表示位置(中央)、001-fun.pngはchフォルダの中のファイル名、1.0はフェードインの時間(秒)です。

メッセージとセリフを表示する

背景、キャラクタを表示できたところで、次はメッセージとセリフの表示に移ります。init.txtの中身を次の内容に置き換えて、保存してみてください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
メッセージボックスにテキストを表示するのが「メッセージ」です。
*みどり*キャラクタの名前を付けたメッセージが「セリフ」です。
*みどり*011.ogg*セリフではボイスを再生することができます。

保存したら、ゲームを実行します。先ほどのキャラクタが表示されたあと、メッセージとセリフが表示されるはずです。メッセージとして認識される行は、先頭が@や*ではない行です。セリフとして認識される行は、先頭が*で始まる行です。

なお、もし文字化けした場合は、文字コードがUTF-8 (BOMなし)であるかを確認してみてください。

BGMを再生する

メッセージ、セリフを表示できたところで、次はBGMの再生に移ります。init.txtの中身を次の内容に置き換えて、保存してみてください。

@bgm 01.ogg
@bg roof.png 1.0
@ch center 001-fun.png 1.0
BGMが再生されます。

保存したら、ゲームを実行します。BGMが再生され、先ほどのキャラクタが表示されるはずです。@bgmはBGM再生コマンドを表し、01.oggはbgmフォルダのファイル名を表します。再生できるファイルは、44.1kHzのOgg Vorbis形式です。ステレオ、モノラルのどちらでも構いません。

選択肢を表示する

BGMの再生ができたところで、次は選択肢の表示に移ります。init.txtの中身を次の内容に置き換えて、保存してみてください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
さて、学校へ行くか。
@select label1 label2 label3 歩いて行こう 自転車で行こう やっぱりサボろう
:label1
歩いて行くことにした。
@goto end
:label2
自転車で行くことにした。
@goto end
:label3
今日は休むことにした。
:end

保存したら、ゲームを実行します。3つの選択肢が表示されるはずです。@selectは選択肢コマンドを表し、label1 label2 label3は選択肢が選ばれたときにジャンプする先のラベルです(後述)。その後ろに選択肢が続きます。

:label1は、ジャンプ先として指定されるラベルです。ラベルの行は、ゲームの見た目の上では何も実行されません。

フラグを立てて分岐する

選択肢の表示ができたところで、次はフラグを立てて分岐する処理に移ります。これができればアドベンチャーゲームがひとまず形になります。init.txtの中身を次の内容に置き換えて、保存してみてください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
さて、学校へ行くか。
@select label1 label2 label3 歩いて行こう 自転車で行こう やっぱりサボろう
:label1
歩いて行くことにした。
@set $1 = 1
@goto next
:label2
自転車で行くことにした。
@goto next
:label3
今日は休むことにした。
:next
@if $1 == 0 end
お金を拾った。
:end

保存したら、ゲームを実行します。「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されるはずです。ここでは@setと@ifの2つのコマンドを組み合わせています。

@setは、変数設定コマンドを表します。続く$1は、変数番号1に値を格納することを意味します。続く=は、単純な代入であることを意味します(他にも計算ができます)。続く1は、整数の1を代入することを意味します。変数の初期値は0ですので、「歩いて行こう」が選択されたときだけ、変数$1の値が1になります。

@ifは、条件分岐コマンドを表します。$1 == 0は、変数$1の値が0の場合、という条件を意味します。続くendは、条件に一致した場合はラベルendにジャンプする、という意味を表します。変数の初期値は0ですので、結果として、「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されることになります。

変数の使い方は0/1のフラグだけではなく、好感度などの数値を持つこともできます。詳細はコマンド・リファレンスの@setと@ifをご覧ください。ただ、スクリプトをシンプルに保つためには、なるべく0/1のフラグとして運用する方が望ましいと思います。

メニュー画面を表示する

シナリオの分岐ができたところで、ちょっとステップアップして、タイトル画面やメニュー画面の作成方法を説明します。init.txtの中身を次の内容に置き換えて、保存してみてください。

:MENU
@menu menu.png menu_selected.png START 27 485 317 193 LOAD 357 493 318 213 QUIT 678 492 315 191
:START
スタートします
@goto END
:LOAD
ロードします
@goto $LOAD
@goto MENU
:QUIT
終了します
:END

保存したら、とりあえずゲームを実行してみてください。サンプルゲームのタイトル画面が表示されるはずです。詳しく見ていきます。

@menuコマンドは、画像を2枚使ってメニュー画面を表示するコマンドです。@menu menu.png menu_selected.pngとありますが、これはbgフォルダのmenu.pngとmenu_selected.pngを使うという意味です。この2つのファイルを見てみてください。menu.pngは、画面内のボタンがマウスでポイントされていない時の画像です。また、menu_selected.pngが、画面内のボタンがマウスでポイントされている時の画像です。

@menu menu.png menu_selected.pngに続くSTART 27 485 317 193ですが、これはボタンを作成しています。ボタンがクリックされたときのジャンプ先ラベルがSTARTです。その後ろは、座標(27, 485)に317x193ピクセルのボタンを作成する、という意味を表しています。ボタンは4つまで作成でき、ここでは3つ作成しています。

スクリプトファイルを分割する

シナリオの分量が大きくなってくると、1つのスクリプトファイルで書くのが大変になります。そこで、シナリオの章やシーンごとにスクリプトを分割する方法があります。init.txtのコピーを作成して、second.txtと名付けてください。init.txtとsecond.txtの中身を次の内容に置き換えて、保存してみてください。このとき、文字コードはUTF-8 (BOMなし)です。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
init.txtの中にいます。
@load second.txt
second.txtに移動しました。

保存したら、ゲームを実行してみてください。second.txtに移動できたことがわかるはずです。@loadは、指定されたスクリプトファイルに移動するためのコマンドです。ここで気をつけたいこととして、ラベルはスクリプトファイル内でのみ有効ですので、古いスクリプトファイルで作成したラベルは、新しいスクリプトファイルからは見ることができません。逆に言うと、古いスクリプトファイルで定義したのと同じ名前のラベルを作成することができます。

ファイルを1つのパッケージにする

素材ファイルがそのまま見えてしまうのが嫌だという場合、すべてのファイルをパッケージにまとめることができます。

  1. toolフォルダに入っているpackage-win.exeを、Suika2の実行ファイルがあるフォルダにコピーしてください
  2. 上でコピーしたファイルをダブルクリックで実行すると、パッケージファイルdata01.arcができあがります
  3. 配布ファイルには、Suika2の実行ファイル、data01.arcの2点があれば動作します
  4. そのほかのbg, bgm, cg, ch, conf, cv, font, se, txtのフォルダは、配布ファイルに含める必要はありません
  5. パッケージとふつうのファイルの両方がある場合、ふつうのファイルが優先的に利用されます