Ren'Pyの日本語記事が少ないからまとめてみた(初心者編)

# はじめに
一年くらい前に、Ren'pyでゲームを作ろうとしたことがあるんですが、そのとき、めっちゃ日本語の情報が少なくて、死にそうになったので、いまからRen'pyを始めようと思った人のために、コードの書き方をまとめていこうと思います。

追記:[中級者編書きました](https://qiita.com/taxi13245/items/b38aa7991d3f9e51bf6e)。ぜひ見てね！

----
このまとめを見てもほしい情報が乗ってなかったり、意味わからんわってなった時は、[Ren'pyドキュメント](https://ja.renpy.org/doc/html)を見てみてください。Ren'py公式の情報なので、ほしい情報が載ってる場合が多いです。

# 1. キャラクターの定義
ゲームで出てくるキャラクターに、いちいちセリフごとに
「この名前で、この色で、この文を表示して・・・・」
なんてやってたら、ちょっとした会話を書くだけで日が暮れちゃう。
なので、Ren'pyでは、キャラクターを定義することができます。

```python
define ta = Character('太郎', color="#ff69b4")
```
こんな感じ。
この文を、**ゲームのstartラベル[^1]より前に**記述することで、セリフを設定した人に言わせることができます。(セリフの言わせ方は、もっと後に説明します。)

上のプログラムの、「ta」と「太郎」と「#ff69b4」は、好きな文字に変えることができます。

```python
define 〇〇 = Character('好きな名前', color="色コード")
```
〇〇のところは半角英字(何文字でも可)で、好きな名前のところは表示したい名前で、色コードは、 [Web色見本](https://www.colordic.org/) の中から選ぶといいです。

[^1]: 「startラベル」とは、ゲームを新規作成したときにscript.rpyの中に書かれている、label start: のことです。（本来そういった呼び方をするかは不明ですが、この記事ではそのように呼んでいます。）

# 2. 背景画像の表示
背景画像は、Ren'py Launcherを開き、![Ren'Py Launcher 2021_08_16 13_40_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1751564/3a618f70-847c-4ce1-94f2-eca26fccec92.png)
「images」をクリックして、出てきたところに入れます。
画像の大きさのおすすめは1200×800です。(ゲームを作った時設定した解像度と同じ)

```python
scene ribing
```

コードは、こんな感じで書きます。
これはstartラベル[^1]より後に書きます。(これから下に出てくるやつも、基本的にはそうです。)
ribingのところは変えても構いません。入れた画像のファイル名を**拡張子を除いて**書くことで、Ren'pyが読み込んでくれます。
ところが、実際にやってみると、何も表示されません。
「何だよ！嘘書いてんじゃねえよ！」と思われるかもしれませんが、実は、背景画像を変えるには、あるコードが必要なのです。

```python
with dissolve
```

その名も、「トランジョン」
コードは、このように書きます。
書き忘れ選手権大会があったら堂々の一位を取るであろうこいつ、**キャラクター画像の表示&非表示、背景画像を表示したいときにそのコードの下の行**に記述します。

実際やってみると、

```python
scene ribing
with dissolve
```
こんな感じ。

実は、トランジョンにはいろんな種類があるんですが、そのことについてはまた別の記事で。(気が向いたら書く)
とりあえず、こいつが一番良く使うので、こいつだけ覚えとけば大体なんとかなります。

# 3. 立ち絵の表示&非表示
立ち絵の表示がしたいなら、

```python
show taro-smile
```

こんな感じで書きます。
立ち絵画像は、背景と同じフォルダに入れます。
画像を入れたら背景と同じで**拡張子を除いたファイル名**をtaro-smileの所に書けば、表示されます。
立ち絵の位置は、右、中央、左から選ぶことができます。
実際に書いてみると、

```python
show taro-smile at right
show taro-smile at center
show taro-smile at left
```

みたいになります。(上から、右、中央、左)
これを省略すると、勝手にcenter(中央)が選ばれます。

**立ち絵は、場面を切り替える[^2]と、消えてしまいます。また、同じ所にもう一個表示すると、立ち絵が重なってしまうので注意してください。**

---

立ち絵を隠したいとき、

```python
hide taro-smile
```

みたいに書きます。これも、taro-smileのところは自分が隠したい立ち絵の名前を書いてください。
ここに、leftやrightなどの位置の指定のためのやつを書く必要はありません。

:::note info
ちなみに、キャラクターの表示&非表示は、with dessolve を書かずとも、セリフが始まると勝手に適用されます。（混乱するので使用はお勧めしません。）
:::

[^2]: scene 〇〇 と書いたあとにwith dessolveを書くことで、場面が切り替わることを、場面を切り替えると言っています。

# 4. セリフの表示
やっとセリフを言わせられる！

```python
ta "こんにちは！"
```

コードはこのように書きます。
ここは結構簡単で、taのところは①で定義したキャラクターの英字で書いた部分、「“」(ダブルクオーテーション)で囲まれたところは喋らせたいセリフを書くことで、喋らせられます。
ちなみに、何も前に書かず「“」(ダブルクオーテーション)で囲んだ場合、

```python
"こんにちは！"
```

名前無しで喋らせられます。ナレーターとかで使えます。

# 5. 音を鳴らす

```python
play music "audio/BGM.ogg"
```
音楽を鳴らしたいなら、このように記述します。BGM.oggのところは、**拡張子を入れた**好きなファイル名に変えて構いません。ただし、「audio/」の部分はそのままにしてください。
音楽ファイルは、audioフォルダに入れてください。
元がPythonなので、大体どんな音楽ファイルでも対応してます。

---

```python
stop music
```

play musicで音を鳴らすと、音楽はループします。それを止めるためには、このように記述します。
ちなみに、「fadeout」というエフェクトが使えます。これはだんだん音が消えていくオプションで、

```python
stop music fadeout 1.0
```

このように書きます。この1.0のところは好きな秒数に変えることができます。

---

```python
play sound "audio/ドッカーン.ogg"
```

SE(効果音)を鳴らしたいとき、このように記述します。これを実行すると、音は1回しか再生されません。

# 6. 一時停止、ゲーム終了

```python
pause
```

このように記述すると、プレイヤーがクリックするまでゲームを一時停止することができます。

```python
pause 3.0
```

このようにすると、最後に書いた秒数分だけゲームを一時停止できます。3.0の部分は、好きな秒数に変えても構いません。
一時停止とは言っても、その間ゲームのデータをセーブしたりもできるので、実際はセリフを止めるといったほうが近いかもしれないです。

```python
return
```

このように記述すると、ゲームをタイトル画面に戻すことができます。
ゲームオーバー、ゲームクリアの時にpauseと合わせて使うといいです。

# 今回紹介したコード
結局どんな風に書きゃいいの？ってなる人もいると思うので、今回紹介したことをまとめたコードを書いておきます。
このままscript.rpyに書いても、画像と音楽がなくて動きませんので、ただの参考程度にしておいてください。

```Python:script.rpy
#キャラクターの定義
define t = Character('太郎', color="#c8ffc8")

label start:
    #背景画像の表示
    scene ribing
    #立ち絵の表示
    show taro-smile
    #トランジョン
    with dissolve
    #音楽の再生
    play music "music.mp3"
    #セリフの表示
    t "こんにちは！Ren'py製の新しいゲームです！"
    t "次回（中級編）では、選択肢やラベルなどの解説をします。"
    t "お楽しみに！"
    #一時停止
    pause
    #タイトルに戻る
    return
```

上のコードを書いたゲームを[ここ](https://taxi13245.github.io/Ren-py-beginner/)から遊べるようにしておきました。

# おわりに
これで初心者編は終了です。
ここまでのおさらいとして、何か本のストーリーを参考にして、ゲームを作ってみるといいかもしれません。結局は実践して体に書き方を身に着けていくのが、個人的には一番の上達法だと思っています。ぜひRen'pyをマスターして、楽しいノベルゲーム生活を！