はじめに
近畿大学 Advent Calendar 2019の5日目担当のniyaです.
今回は, 近畿大学で毎年行われている生駒祭を紹介するゲームをRen'pyで作ったので, その時に覚えた文法等共有できたらなあと思います.
成果物は以下のurlにあります.
https://drive.google.com/drive/u/2/folders/1CVx17S12MDS8VLIsH4Q2Iu4C5U93vYC_
また, githubは以下です.
https://github.com/niya1123/Short-Novel/tree/dev
Ren'pyのゲーム作りの基礎
今回はRen'py自体のDLとプロジェクトの作り方などは前回の記事で紹介しているので, そちらの方を見ていってください.
セリフの書き方
セリフの書くには以下の手順を踏めば良いでしょう.
- キャラクターのセリフなのか独白やナレーションなのかを考える.
- 前者ならキャラクターを定義する. 後者は特に定義する必要なし.
- script.pyにその定義を書き込む.
具体的には以下のようになります.
# キャラクターの定義 define キャラ名 = Character("キャラ名", color="カラーを16進数で設定")
# define直後のキャラ名は基本的には1文字やキャラ名の短縮名で定義することをお勧めする.
# colorはテキストボックスに表示されるキャラ名の色.
define character = Character("キャラクター", color="#c8ffc8")
# ゲーム起動時はlabel startから始まる.
label start:
# キャラの短縮名 "セリフ"でセリフの表示
character "こんにちは!"
# キャラ名を設定しないと, ナレーション.
"ナレーションですこんにちは"
# returnでlabelの終了.
return
キャラクター画像の設定
キャラクター画像の設定は以下のように行います.
# 略
label start:
show character default
with fade
character "こんにちは!"
return
ここで注意すべきはshow以降の文字列です.ここでは任意の画像のファイル名を指定することで画像を表示します.
そして, 画像の名前には推奨される命名規則があり, 例えば bg green.jpg (Bg Green.jpgでも可)
のように"bg"がタグ, "green"が属性という風になっています.他に以下のような命名が考えられます.
# bgがタグでgreenとhouseが属性
show bg green house
また, 同じタグの画像が同時に指定された場合一番最後に指定された画像が表示されます.
次にwith fade
とありますがこれはトランジションというものです.
詳細は以下を参考にしてください(数が多いので).
pythonスクリプトの使用
Ren'pyではpythonのスクリプト(python2系)が使用することができます. まだ正式に発表されていませんが今後は3系のpythonが利用できる可能性はあります.(参考: https://twitter.com/renpytom/status/1196203607252709376?s=20)
では, 使い方を説明していきます.
default flag = False
label start:
menu:
"想いを伝えますか?"
"はい":
$ flag = True
"いいえ":
jump flag
return
label flag:
if not flag:
"Bad End"
else:
"Good End"
return
色々新しい要素が出てきましたね. 順番に説明します.
まず, default文がありますがこれはstartラベルの前に使いたい変数を初期化するためのものです.
なくてもいいですが, その場合label内で変数を用いるとFlaseが初期値として自動的に付与されます.
次にstartラベル内のmenuというものがあります.
略
menu:
"選択肢を選んでね"
"はい":
jump yes
"いいえ":
jump no
使い方はこのような感じで,ナレーション部分はなくてもいいです."選択肢":
という風に記述していきます.その後インデントして処理を書くことができます.この辺りはpythonと同じです.jumpはjump 飛ばしたいラベル名
という風に設定できてその飛びたいラベルに処理が飛び, そのラベルがreturnで終了するとまた処理が戻ってきます.
次に$ flag = True
ですが, $以降に1行のみでpythonのコードが書けます.
複数行にわたってコードを書きたい場合は次のように書けます.
python:
life = 100
damage = 50
my_life = life - damage
次にif文ですが, if文は$やpythonを用いずにそのまま使用することができます.
以上の基礎を押さえておけば, 皆さんもRen'pyを用いてノベルゲームが作れます!!!!
Ren'pyのゲーム作り応用
ここからはちょっとした応用です.
まずはRen'pyのデフォルトの起動画面を変更しましょう.
右下の青文字のtestをRen'pyにして色をオレンジ色(#f59e11)にしてみましょう.
変更する点は以下です.
define config.name = _("test")
# これを以下に変更
define config.name = _("Ren'py")
define gui.accent_color = '#0099cc'
# これを以下に変更
define gui.accent_color = '#f59e11'
続いてmenuの画像を変更します.
define gui.main_menu_background = "gui/main_menu.png"
# これを以下に変更
define gui.main_menu_background = "gui/main_susuki.png"
変更したらこうなります.(今回は画像サイズ合ってないけど本番は画像の方をゲームのサイズに合わせましょう)
最後に
正直色々端折ったのですが基本的にここまで理解していれば, 自分の作った成果物くらいは作れると思います.
皆さんも是非Ren'pyで何か作ってみてください!
参考サイト