はじめに
一年くらい前に、Ren'pyでゲームを作ろうとしたことがあるんですが、そのとき、めっちゃ日本語の情報が少なくて、死にそうになったので、いまからRen'pyを始めようと思った人のために、コードの書き方をまとめていこうと思います。
追記:中級者編書きました。ぜひ見てね!
このまとめを見てもほしい情報が乗ってなかったり、意味わからんわってなった時は、Ren'pyドキュメントを見てみてください。Ren'py公式の情報なので、ほしい情報が載ってる場合が多いです。
1. キャラクターの定義
ゲームで出てくるキャラクターに、いちいちセリフごとに
「この名前で、この色で、この文を表示して・・・・」
なんてやってたら、ちょっとした会話を書くだけで日が暮れちゃう。
なので、Ren'pyでは、キャラクターを定義することができます。
define ta = Character('太郎', color="#ff69b4")
こんな感じ。
この文を、ゲームのstartラベル1より前に記述することで、セリフを設定した人に言わせることができます。(セリフの言わせ方は、もっと後に説明します。)
上のプログラムの、「ta」と「太郎」と「#ff69b4」は、好きな文字に変えることができます。
define 〇〇 = Character('好きな名前', color="色コード")
〇〇のところは半角英字(何文字でも可)で、好きな名前のところは表示したい名前で、色コードは、 Web色見本 の中から選ぶといいです。
2. 背景画像の表示
背景画像は、Ren'py Launcherを開き、
「images」をクリックして、出てきたところに入れます。
画像の大きさのおすすめは1200×800です。(ゲームを作った時設定した解像度と同じ)
scene ribing
コードは、こんな感じで書きます。
これはstartラベル1より後に書きます。(これから下に出てくるやつも、基本的にはそうです。)
ribingのところは変えても構いません。入れた画像のファイル名を拡張子を除いて書くことで、Ren'pyが読み込んでくれます。
ところが、実際にやってみると、何も表示されません。
「何だよ!嘘書いてんじゃねえよ!」と思われるかもしれませんが、実は、背景画像を変えるには、あるコードが必要なのです。
with dissolve
その名も、「トランジョン」
コードは、このように書きます。
書き忘れ選手権大会があったら堂々の一位を取るであろうこいつ、キャラクター画像の表示&非表示、背景画像を表示したいときにそのコードの下の行に記述します。
実際やってみると、
scene ribing
with dissolve
こんな感じ。
実は、トランジョンにはいろんな種類があるんですが、そのことについてはまた別の記事で。(気が向いたら書く)
とりあえず、こいつが一番良く使うので、こいつだけ覚えとけば大体なんとかなります。
3. 立ち絵の表示&非表示
立ち絵の表示がしたいなら、
show taro-smile
こんな感じで書きます。
立ち絵画像は、背景と同じフォルダに入れます。
画像を入れたら背景と同じで拡張子を除いたファイル名をtaro-smileの所に書けば、表示されます。
立ち絵の位置は、右、中央、左から選ぶことができます。
実際に書いてみると、
show taro-smile at right
show taro-smile at center
show taro-smile at left
みたいになります。(上から、右、中央、左)
これを省略すると、勝手にcenter(中央)が選ばれます。
立ち絵は、場面を切り替える2と、消えてしまいます。また、同じ所にもう一個表示すると、立ち絵が重なってしまうので注意してください。
立ち絵を隠したいとき、
hide taro-smile
みたいに書きます。これも、taro-smileのところは自分が隠したい立ち絵の名前を書いてください。
ここに、leftやrightなどの位置の指定のためのやつを書く必要はありません。
ちなみに、キャラクターの表示&非表示は、with dessolve を書かずとも、セリフが始まると勝手に適用されます。(混乱するので使用はお勧めしません。)
4. セリフの表示
やっとセリフを言わせられる!
ta "こんにちは!"
コードはこのように書きます。
ここは結構簡単で、taのところは①で定義したキャラクターの英字で書いた部分、「“」(ダブルクオーテーション)で囲まれたところは喋らせたいセリフを書くことで、喋らせられます。
ちなみに、何も前に書かず「“」(ダブルクオーテーション)で囲んだ場合、
"こんにちは!"
名前無しで喋らせられます。ナレーターとかで使えます。
5. 音を鳴らす
play music "audio/BGM.ogg"
音楽を鳴らしたいなら、このように記述します。BGM.oggのところは、拡張子を入れた好きなファイル名に変えて構いません。ただし、「audio/」の部分はそのままにしてください。
音楽ファイルは、audioフォルダに入れてください。
元がPythonなので、大体どんな音楽ファイルでも対応してます。
stop music
play musicで音を鳴らすと、音楽はループします。それを止めるためには、このように記述します。
ちなみに、「fadeout」というエフェクトが使えます。これはだんだん音が消えていくオプションで、
stop music fadeout 1.0
このように書きます。この1.0のところは好きな秒数に変えることができます。
play sound "audio/ドッカーン.ogg"
SE(効果音)を鳴らしたいとき、このように記述します。これを実行すると、音は1回しか再生されません。
6. 一時停止、ゲーム終了
pause
このように記述すると、プレイヤーがクリックするまでゲームを一時停止することができます。
pause 3.0
このようにすると、最後に書いた秒数分だけゲームを一時停止できます。3.0の部分は、好きな秒数に変えても構いません。
一時停止とは言っても、その間ゲームのデータをセーブしたりもできるので、実際はセリフを止めるといったほうが近いかもしれないです。
return
このように記述すると、ゲームをタイトル画面に戻すことができます。
ゲームオーバー、ゲームクリアの時にpauseと合わせて使うといいです。
今回紹介したコード
結局どんな風に書きゃいいの?ってなる人もいると思うので、今回紹介したことをまとめたコードを書いておきます。
このまま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
上のコードを書いたゲームをここから遊べるようにしておきました。
おわりに
これで初心者編は終了です。
ここまでのおさらいとして、何か本のストーリーを参考にして、ゲームを作ってみるといいかもしれません。結局は実践して体に書き方を身に着けていくのが、個人的には一番の上達法だと思っています。ぜひRen'pyをマスターして、楽しいノベルゲーム生活を!