チュートリアル のバックアップ(No.3) - Polaris Engine Wiki

Wikiトップ   編集   新規作成   複製   名称変更   アップロード   添付ファイル一覧   バックアップ  

 

はじめまして

Suika2の世界へようこそ!

このチュートリアルでは、Suika2を使ってノベルゲームを作成する方法を説明します。

内容はとってもかんたんです。用意はいいですか?さあ、始めましょう!

途中でわからなくなったら……

もしチュートリアルの内容でわからないことがあれば、遠慮なく下のチャットで質問してください!

1. Suika2でスクリプトを作成する準備

準備

ここではWindowsを使います。

まずはじめに、 ダウンロード したSuika2のEXEファイルを実行すると、デスクトップにSuika2アイコンが作成されます。これを起動してください。

1. 「新規ゲームを作成します。」というウィンドウが表示されますので、「はい」をクリックしてください 2. ゲームの作成先を選択するウィンドウが表示されますので、新しいフォルダを作成して、「開く」を押してください 3. 「全画面スタイルにしますか?」という質問が表示されますので、「いいえ」を押してください

以上でサンプルゲームが生成されます。

表示されたSuika2のメニューから、「ファイル」→「ゲームフォルダ」を開くを選択します。すると、下記のようなフォルダが作成されていることがわかります。 これがゲームの中身です。

名前役割
anime/アニメファイルを格納するフォルダです
bg/背景画像を格納するフォルダです
bgm/BGMを格納するフォルダです
cg/メッセージボックス等のシステム画像を格納するフォルダです
ch/キャラクタ画像を格納するフォルダです
conf/設定ファイルを格納するフォルダです
cv/ボイスを格納するフォルダです
font/フォントを格納するフォルダです
sav/セーブデータを格納するフォルダです
se/効果音を格納するフォルダです
tools/便利ツールやWeb/Android/iOS用のファイルが入ったフォルダです
txt/シナリオを格納するフォルダです
wms/プラグインを格納するフォルダです

このサンプルゲームに変更を加えてチュートリアルを進めていきます。

まだサンプルゲームをプレイしていなければ、イメージをつかむために、 一度サンプルゲームをプレイしてみてください。

スクリプトを開く

サンプルゲームのフォルダ構成を確認していただいたところで、次に移ります。

txt フォルダを開くと、 init.txt というファイルがあります。

このファイルが、ゲームの起動後、最初に読み込まれるスクリプト(Suika2への指示書)です。

init.txt をダブルクリックして開いていただければ、 ただの文字の並び(テキストファイル)であることがわかるはずです。

好きなテキストエディタを使おう

init.txt をダブルクリックすると開くのは、Windows標準のメモ帳というアプリだと思います。 メモ帳以外にも便利なテキストエディタがたくさんあります。 テキストエディタの選択次第で作業効率が大きく変わります。 たとえば、人気のVisual Studio Code を使えば、コマンド入力の補完が利用できます。

2. Suika2で背景を表示する方法

背景を表示する

init.txt がテキストファイルであることを確認していただいたところで、次は背景の表示に移ります。

ここで一度、 init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

@bg roof.png 1.0
@click

保存したら、 Suika2を起動して、ゲームプロジェクトを開きます。

「続ける」ボタンを押して、ゲームを実行します。

屋上の背景が表示されるはずです。

@bg というのが背景を表示する命令(コマンド)で、 roof.png は bg フォルダの中のファイル名、 1.0 は画面の表示が完了するまで(フェードイン)の時間(秒)です。

3. Suika2でキャラを表示する方法

背景を表示できたところで、次はキャラクタの表示に移ります。

init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

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

保存したら、Suika2を再起動してゲームを実行します。

屋上の背景が表示され、続いてキャラクタが表示され、クリックを行うと、終了するはずです。

@ch というのがキャラクタを表示するコマンドで、 center は表示位置(中央)、 001-fun.png は ch フォルダの中のファイル名、 1.0 はフェードインの時間(秒)です。

4. Suika2でメッセージとセリフを表示する方法

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

背景、キャラクタを表示できたところで、次はメッセージとセリフの表示に移ります。

init.txt の中身をすべて削除し、次の内容を貼り付け、保存してみてください。

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

メッセージボックスにテキストを表示するのが"メッセージ"です。

みどり「キャラクタの名前を付けたメッセージが"セリフ"です。」

*みどり*キャラクタの名前を付けたメッセージが"セリフ"です。
*みどり*011.ogg*セリフにはボイスをつけることができます。

保存したら、ゲームを実行します。

先ほどのキャラクタが表示されたあと、メッセージとセリフが表示されるはずです。

メッセージとして認識される行は、 普通の文章の行(先頭が @ や * や : ではない行)です。

セリフとして認識される行は、先頭が * で始まる行か、名前「メッセージ」の形式の行です。

5. Suika2でBGM(音楽)を再生する方法

BGMを再生する

メッセージ、セリフを表示できたところで、次はBGMの再生に移ります。

init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

@bgm 01.ogg
@bg roof.png 1.0
@ch center 001-fun.png 1.0

保存したら、Suika2を再起動してゲームを実行します。

BGMが再生され、先ほどのキャラクタが表示されるはずです。

@bgm はBGM再生コマンドを表します。 01.ogg は bgm フォルダのファイル名を表します。

再生できるファイルは、44.1kHzのOgg Vorbis形式です。ステレオ、モノラルのどちらでも構いません。

ちなみに、01.ogg を 02.ogg に書き換えて実行してみてください。 曲が変わります。

6. Suika2で選択肢を表示する方法

選択肢を表示する

BGMの再生ができたところで、次は選択肢の表示に移ります。

init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
さて、学校へ行くか。
@choose label1 歩いて行こう label2 自転車で行こう label3 やっぱりサボろう
:label1
歩いて行くことにした。
@goto end
:label2
自転車で行くことにした。
@goto end
:label3
今日は休むことにした。
:end
保存したら、Suika2を再起動してゲームを実行します。

3つの選択肢が表示されるはずです。

@choose は選択肢コマンドを表し、 label1, label2, label3 は選択肢が選ばれたときにジャンプする先のラベルです(後述)。 ラベルと選択肢がセットです。

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

より便利な書き方

別な書き方として、次のようなスタイルもあります。 この場合、ラベルは省略できます。 お好みの方法を使ってください。

@bg roof.png 1.0
@ch center 001-fun.png 1.0
さて、学校へ行くか。

<<<
switch "歩いて行こう" "自転車で行こう" "やっぱりサボろう" {
case:
    歩いて行くことにした。
    break
case:
    自転車で行くことにした。
    break
case:
    今日は休むことにした。
    break
}
>>>

7. Suika2でシナリオを分岐させる方法

フラグを立てて分岐する

選択肢の表示ができたところで、次はフラグを立てて分岐する処理に移ります。

これができればノベルゲームがひとまず形になります。

init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

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

さて、学校へ行くか。

<<<
switch "歩いて行こう" "自転車で行こう" "やっぱりサボろう" {
case:
    歩いて行くことにした。
    @set $1 = 1
    break
case:
    自転車で行くことにした。
   break
case:
    今日は休むことにした。
    break
}
>>>
@if $1 == 0 NO_MONEY
お金を拾った。
:NO_MONEY

保存したら、Suika2を再起動してゲームを実行します。

「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されるはずです。

ここでは @set と @if を組み合わせています。

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

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

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

より便利な書き方

ちなみに、@if を便利にした書き方もあります。拡張if文と呼ばれています。 ラベルやジャンプがよくわからないときは、この書き方を使ってみてください。

<<<
if $1 == 0 {
  お金を拾った。
}
>>>

8. Suika2でメニュー画面を表示させる方法

メニュー画面を表示する

シナリオの分岐ができたところで、 ちょっとステップアップして、 タイトル画面やメニュー画面の作成方法を説明します。

init.txt の中身をすべて削除して、次の内容を貼り付け、保存してみてください。

@gui menu.txt
:START
:LOAD
:CONFIG
:QUIT

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

詳しく見ていきます。

@gui menu.txt というコマンドは、メニュー画面(GUIと呼ばれる)を表示するコマンドです。 これは gui フォルダの menu.txt というファイルで設定されているメニュー画面を表示しています。menu.txt はGUIファイルと呼ばれています。

GUIファイルの書き方については、 タイトル画面の作り方 を参照 してください。

何やら難しそうと思われるかもしれませんが、理解してしまえばとても便利に使えます。

9. Suika2でスクリプトファイルを分割する方法

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

シナリオの分量が大きくなってくると、1つのスクリプトファイルで書くのが大変になります。

そこで、シナリオの章やシーンごとにスクリプトを分割する方法があります。

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は、指定されたスクリプトファイルに移動するためのコマンドです。

ここで気をつけたいこととして、ラベルはスクリプトファイル内でのみ有効ということがあります。ジャンプ前のスクリプトファイルで使っていたラベルは、 ジャンプ後のスクリプトファイルからは使うことができません。逆に言うと、異なるスクリプトファイルで同じ名前のラベルを作成することができます。

10. Suika2で素材ファイルをパッケージにまとめて見えなくする方法

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

ゲームリリース時には、素材ファイルがそのまま見えないように、ファイル群を1つのパッケージにまとめます。

Suika2のメニューの「エクスポート(E)」から、 「Windowsゲームをエクスポートする」を選択します。

すると、Windows用に出力された完成系のフォルダが開きます。配布ファイルには、suika.exe と data01.arc の2点があれば動作します。動画を利用した場合は mov フォルダも必要になります。(動画は現状ではパッケージに入らない仕様であるため)

11. チュートリアルの最後に

基本はこれでOK

細かい演出機能はのちのち覚えていくとして、まずはこれでゲームが作れます。

以上でチュートリアルは終わりです。おつかれさまでした。

わからないところがありましたか?

もしチュートリアルの内容でわからないことがあれば、遠慮なく下のチャットで質問してください!

https://discord.gg/tv9yKuEG9Q