Suika 2の使い方 (2017/8/26版)

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

目次

チュートリアル

準備

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

bg/背景画像を格納するフォルダです
bgm/BGMを格納するフォルダです
cg/メッセージボックス等のシステム画像を格納するフォルダです
ch/キャラクタ画像を格納するフォルダです
conf/設定ファイルを格納するフォルダです
cv/ボイスを格納するフォルダです
font/フォントを格納するフォルダです
sav/セーブデータを格納するフォルダです
se/効果音を格納するフォルダです
Suika.app/Mac用アプリです
tool/ファイルをパッケージにまとめるツールのフォルダです
txt/スクリプトを格納するフォルダです
COPYINGSuika 2とライブラリのライセンス表示です
readme.htmlSuika 2の簡単な説明です
suika.exe Windows用アプリです

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

なお、注意事項として、背景とBGMは、ライセンスの都合で、加工や再配布といった2次利用ができません。

スクリプトを開く

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

背景を表示する

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

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

キャラクタを表示する

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

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

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

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

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

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

BGMを再生する

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

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

選択肢を表示する

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

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

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

フラグを立てて分岐する

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

保存したら、ゲームを実行します。「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されるはずです。ここでは@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コマンドは、画像を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なし)です。

init.txtsecond.txt

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

CG鑑賞モードを表示する

よくあるCG鑑賞モードを作るためのコマンドが@retrospectです。このコマンドを使うと、CGのサムネイルが並んでボタンになっているような画面を作成できます。CGをすでに見たか、見ていないかを、フラグで管理し、まだ見ていないCGは表示しない機能がついています。(執筆中・サンプルゲームに実装します)

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

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

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

コマンド・リファレンス

@bgコマンド

背景を変更します。背景の変更後、キャラクタはステージ上からいなくなります。

使い方1: sample.pngを1.5秒かけて背景にセットします。
@bg sample.png 1.5
使い方2: sample.pngを即座に背景にセットします。
@bg sample.png
使い方3: sample.pngを1.5秒かけてカーテンフェードで背景にセットします。
@bg sample.png 1.5 c

利用できるバージョン: Suika 2.0.0以降

@bgmコマンド

BGMを再生します。BGMファイルはフォルダ"bgm"に格納されている必要があります。再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。

使い方1: sample.oggを再生します。
@bgm sample.ogg
使い方2: BGMを停止します。
@bgm stop
応用例: BGMを2秒かけてフェードアウトします。
@vol 0 2
@wait 2
@bgm stop

利用できるバージョン: Suika 2.0.0以降

@chコマンド

キャラクタを変更します。キャラクタの位置は、上位レイヤから順に、中央前面(center)、右(right)、左(left)、中央背面(back)の4つがあります。

使い方1: sample.pngを0.5秒かけて中央前面にセットします。
@ch center sample.png 0.5
使い方2: centerはcと省略して構いません。
@ch c sample.png 0.5
使い方3: noneを指定するとキャラクタを退場させます。
@ch c none 0.5
使い方4: 時間を指定しないと即座に表示されます。
@ch c sample.png

利用できるバージョン: Suika 2.0.0以降

@clickコマンド

クリックされるのを待ちます。待っている間、メッセージボックスは非表示となります。

使い方:
@click

利用できるバージョン: Suika 2.0.0以降

@gotoコマンド

ラベルにジャンプします。ループを作成するときや、ループから抜け出す際に使用します。

使い方1: ラベル"abc"にジャンプします。
:abc
ここに何らかの処理やメッセージを記述します。
@goto abc

利用できるバージョン: Suika 2.0.0以降

@ifコマンド

条件式が成立するときラベルにジャンプします。

使い方1: 変数1が10以上であればラベル"abc"にジャンプします。左辺値は変数名である必要があります。右辺値には整数か変数名が使用できます
@if $1 >= 10 abc
変数$1が10未満のときの処理を記述します。
:abc

利用できるバージョン: Suika 2.0.0以降

@menu

画像を2枚使ってメニューを表示します。ボタンを4つまで作成できます。基本的に1枚目の画像が表示されますが、ボタンがマウスでポイントされている間は、そのボタンの領域だけ2枚目の画像が表示されます。メニュー画面は右クリックでキャンセルできません。

使い方:
@menu menu.png menu-selected.png START 640 480 240 120
:START

利用できるバージョン: Suika 2.0.0以降

ラベル

ジャンプ先となるラベルを作成します。

使い方:
:ジャンプ先
何かメッセージを表示する
@goto ジャンプ先

利用できるバージョン: Suika 2.0.0以降

メッセージ

メッセージボックスにテキストを出力します。\nで改行できます。$数字で変数の値を出力できます。

使い方:
こんにちは、世界。

利用できるバージョン: Suika 2.0.0以降

@loadコマンド

スクリプトファイルにジャンプします。スクリプトファイルはフォルダ"txt"の中に存在する必要があります。

使い方: スクリプトファイル"001.txt"にジャンプします。
@load 001.txt

利用できるバージョン: Suika 2.0.0以降

@retrospect

CG鑑賞モードを実行します。@menuと同様に2枚の画像を使用します@。menuとの違いは、作成できるボタンの数が12個までであることと、それぞれのボタンに変数を指定して、変数の値が0のときはボタンを隠すことです。また、@menuと異なり右クリックでキャンセルが可能です。

引数が多いです。先頭から順に、背景画像、選択時に上書きされる画像、変数の値が0のときに背景を塗りつぶす色のR、G、B、各ボタンの幅、各ボタンの高さと続きます。以降、ボタンの数だけ、ジャンプ先ラベル、チェックする変数、ボタンのX座標、ボタンのY座標、の4つが続きます。

使い方:
@retrospect menu.png menu-selected.png 0 0 0 320 240 PICTURE1 $1 320 240
キャンセルされました
@goto END
:PICTURE1
@bg picture1.png 1.0
@click
:END

利用できるバージョン: Suika 2.0.0以降

@selectコマンド

選択肢を表示してラベルにジャンプします。選択肢の数は3つに固定されています。

使い方:
@select label1 label2 label3 おはよう こんにちは こんばんは
:label1
おはよう
@goto end
:label2
こんにちは
@goto end
:label3
こんばんは
:end

利用できるバージョン: Suika 2.0.0以降

セリフ

メッセージボックスにセリフを出力します。また、名前ボックスに名前を出力します。ボイスを再生することができます。ボイスファイルは、フォルダ"cv"の中に存在する必要があります。ボイスファイルの形式は、44.1kHzのOgg Vorbisである必要があります。メッセージと同様に、\nで改行できます。$数字で変数の値を出力できます。

使い方1: セリフを出力します。
*名前*こんにちは、世界。
使い方2: ボイスを再生して、セリフを出力します。
*名前*001.ogg*こんにちは、世界。
使い方3: 指定したビープ音をリピート再生して、セリフを出力します。
*名前*@beep.ogg*こんにちは、世界。

利用できるバージョン: Suika 2.0.0以降

@set

変数に値をセットします。セーブデータごとに値が異なるローカル変数は、$0から$9999までの10000個を利用できます。変数の初期値は0です。すべてのセーブデータで共通の値となるグローバル変数は、$10000から$10999までの1000個を利用できます。利用できる演算子は、=, +=, -=, *=, /=, %=です。

使い方1: 変数$0に値1を代入します
@set $0 = 1
使い方2: 変数$10に値23を加算します
@set $10 += 23
使い方3: 変数$0にランダムな正の整数を代入します
@set $0 = $RAND
使い方4: 変数$1に変数2を加算します
@set $1 += $2

利用できるバージョン: Suika 2.0.0以降

@switch

最大2階層のコマンド選択肢を表示します。親コマンドと子コマンドがそれぞれ8個ずつで、合計で最大64分岐を記述できます。1階層のメニューとして利用することも可能です。

使い方1: 1階層で2つの選択肢を表示します
@switch 親選択肢1 親選択肢2 * * * * * * LABEL1 * * * * * * * * * * * * * * * LABEL2 * * * * * * * * * * * * * * *
使い方2: 2階層で4つの選択肢を表示します
@switch 親選択肢1 親選択肢2 * * * * * * LABEL1 子選択肢1 LABEL2 子選択肢2 * * * * * * * * * * * * LABEL3 子選択肢3 LABEL4 子選択肢4 * * * * * * * * * * * *

利用できるバージョン: Suika 2.1.0以降

@vol

時間を指定してボリュームを調整します。調整できる出力は、BGM(bgm)、ボイス(voice)、SE(se)の3つの入力です。

使い方1: BGMの音量を1秒かけて0.5にします
@vol bgm 0.5 1.0
使い方2: bgmはbと省略できます。
@vol b 0.5 1.0

利用できるバージョン: Suika 2.0.0以降

@wait

時間を指定して待機します。途中、キーボードやマウスの入力があれば待機を終了します。待機中、メッセージボックスは表示されません。

使い方: 5秒待ちます。
@wait 5.0

利用できるバージョン: Suika 2.0.0以降