8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

近畿大学Advent Calendar 2019

Day 5

Ren’pyを使って学祭紹介ゲームを作ってみた

Last updated at Posted at 2019-12-05

はじめに

近畿大学 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とプロジェクトの作り方などは前回の記事で紹介しているので, そちらの方を見ていってください.

セリフの書き方

セリフの書くには以下の手順を踏めば良いでしょう.

  1. キャラクターのセリフなのか独白やナレーションなのかを考える.
  2. 前者ならキャラクターを定義する. 後者は特に定義する必要なし.
  3. script.pyにその定義を書き込む.

具体的には以下のようになります.

script.rpy
# キャラクターの定義 define キャラ名 = Character("キャラ名", color="カラーを16進数で設定")
# define直後のキャラ名は基本的には1文字やキャラ名の短縮名で定義することをお勧めする.
# colorはテキストボックスに表示されるキャラ名の色.
define character = Character("キャラクター", color="#c8ffc8")

# ゲーム起動時はlabel startから始まる.
label start:
    # キャラの短縮名 "セリフ"でセリフの表示
    character "こんにちは!"

    # キャラ名を設定しないと, ナレーション.
    "ナレーションですこんにちは"

    # returnでlabelの終了.
    return

キャラクター画像の設定

キャラクター画像の設定は以下のように行います.

script.rpy
# 略
label start:
    
    show character default
    with fade
    
    character "こんにちは!"

    return
    

ここで注意すべきはshow以降の文字列です.ここでは任意の画像のファイル名を指定することで画像を表示します.

そして, 画像の名前には推奨される命名規則があり, 例えば bg green.jpg (Bg Green.jpgでも可)のように"bg"がタグ, "green"が属性という風になっています.他に以下のような命名が考えられます.

script.rpy
# bgがタグでgreenとhouseが属性
show bg green house

また, 同じタグの画像が同時に指定された場合一番最後に指定された画像が表示されます.

次にwith fadeとありますがこれはトランジションというものです.

詳細は以下を参考にしてください(数が多いので).

pythonスクリプトの使用

Ren'pyではpythonのスクリプト(python2系)が使用することができます. まだ正式に発表されていませんが今後は3系のpythonが利用できる可能性はあります.(参考: https://twitter.com/renpytom/status/1196203607252709376?s=20)

では, 使い方を説明していきます.

script.rpy

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というものがあります.

script.rpy

    menu:
        "選択肢を選んでね"
        "はい":
            jump yes
        "いいえ":
            jump no

使い方はこのような感じで,ナレーション部分はなくてもいいです."選択肢":という風に記述していきます.その後インデントして処理を書くことができます.この辺りはpythonと同じです.jumpはjump 飛ばしたいラベル名 という風に設定できてその飛びたいラベルに処理が飛び, そのラベルがreturnで終了するとまた処理が戻ってきます.

次に$ flag = True ですが, $以降に1行のみでpythonのコードが書けます.
複数行にわたってコードを書きたい場合は次のように書けます.

script.rpy
python:
    life = 100
    damage = 50
    my_life = life - damage

次にif文ですが, if文は$やpythonを用いずにそのまま使用することができます.

以上の基礎を押さえておけば, 皆さんもRen'pyを用いてノベルゲームが作れます!!!!

Ren'pyのゲーム作り応用

ここからはちょっとした応用です.

まずはRen'pyのデフォルトの起動画面を変更しましょう.

デフォルトの画面はこんな感じです.
スクリーンショット 2019-12-05 15.49.42.png

右下の青文字のtestをRen'pyにして色をオレンジ色(#f59e11)にしてみましょう.スクリーンショット 2019-12-05 20.49.55.png

変更する点は以下です.

options.rpy(16行目あたり)
define config.name = _("test")
# これを以下に変更
define config.name = _("Ren'py")
gui.rpy(28行目あたり)
define gui.accent_color = '#0099cc'
# これを以下に変更
define gui.accent_color = '#f59e11'

続いてmenuの画像を変更します.

gui.rpy(96行目あたり)
define gui.main_menu_background = "gui/main_menu.png"
# これを以下に変更
define gui.main_menu_background = "gui/main_susuki.png"

変更したらこうなります.(今回は画像サイズ合ってないけど本番は画像の方をゲームのサイズに合わせましょう)

スクリーンショット 2019-12-05 20.58.10.png

最後に

正直色々端折ったのですが基本的にここまで理解していれば, 自分の作った成果物くらいは作れると思います.
皆さんも是非Ren'pyで何か作ってみてください!

参考サイト

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?