投稿記事

Ren’pyの記事 (1)

『Ren'Py8.0.3』簡単な解説

 Ren'Pyはおそらく海外で最もポピュラーなビジュアルノベルゲームエンジンです。日本でも有名な『ドキドキ文芸部!』もRen'Py製です。海外製のゲームエンジンなので外国人好みの設定になっている点は注意が必要です。私は「簡単」「マルチ言語」「マルチプラットフォーム」という理由で選びました。海外向けにゲームを作るならおすすめです。

特徴

・台詞を打ち込むだけで大体作れる
・翻訳ファイルを作るのが簡単
・マルチプラットフォームに出力出来る
・台詞ウィンドウが全画面タイプのものも作れる
・セルフボイシング(自動読み上げ機能)がある
・ルビ機能がある

国内産との違い

・バックシーンはロールバックと言う
・マウスホイールの下回転がバックシーンを読み進めるになっている(外国ではバックシーンは必須らしい)
・「台詞ウィンドウを消す」のデフォルトキーがH
・台詞ウィンドウの透過度の調整項目がない
・環境設定はPreferences(好み)と言う
・ミュージックルームが特殊(デフォルトでは上から順番にループ再生する)
・翻訳ファイルを出力してくれる

自分で実装しなければならないもの

・ギャラリー
・ミュージックルーム
・ウィンドウ透過度

インストール方法

 Ren'Py日本語公式サイト( https://ja.renpy.org/ )へ行って「Download Ren'Py(バージョン番号)」という緑のバナーを押してダウンロードし、好きな場所にインストールします。

ランチャーの使い方


『プロジェクト』
 一番左のが『プロジェクト』がゲーム一覧です。『チュートリアル』とサンプルゲーム『The Question』が入っています。自分のゲームを作るにはその下にある「+新規プロジェクトの作成」です。

 ゲーム名をチェックしている状態で右側の項目をクリックするとそれぞれのファイルが起動します。

『ディレクトリーを開く』
 クリックすると保存先のフォルダを開けます。「base」が一番上のフォルダでその中に「game」フォルダがあり、その中に「images」「audio」「gui」があります。「gui」はウィンドウやボタンの素材を入れるフォルダです。

『ファイルを編集する』
 この項目でゲームを作っていきます。テキストエディターをどうするか聞かれたら「Visual Studio Code」をインストールする事をおすすめします。

「script.rpy」
 本体です。ここに台詞などを書いていきます。

「options.rpy」
 基本的な設定情報があります。バージョン情報とかアーカイブ化とか「メインメニューで鳴らすBGM」もここで設定します。

「gui.rpy」
 フレームの配置とか変えたい場合はここだけれど、詳しくない人は「メインメニューとゲームメニューの背景画像の指定」がここにあるのでそれくらいかな。「ゲームメニュー」とはゲーム中に呼び出されるメインメニューの亜種です。

「screens.rpy」
 メインメニューの項目とかギャラリーとか作る時に使います。

 この他に翻訳ファイルを作ると「tl」(翻訳フォルダ)の中に「common」と「style」が作成されます。拡張子が「.rpy」と「.rpyc」があるのですがよくわかりません!「.rpy」ファイルがテキストエディターで開けるのでこちらを編集します。

「common.rpy」
 システム関係の翻訳です。「警告文」(本当に戻っていいですか?等)や「セーブの日付」の翻訳があります。この翻訳ファイルを作るのが非常に面倒なので、裏技としてランチャーの右下にある「設定」をクリックし、言語を翻訳したい対象の言語に設定し、戻って「翻訳の生成」をクリックして「デフォルトインターフェースの翻訳を更新する」をクリックすると「tl」フォルダの「None」フォルダに「common.rpym」ファイルが出来るので、拡張子の「m」を取って対象の言語フォルダに入れると翻訳されました。これで良いのかわかりませんが。

「style.rpy」
 対象言語で文字が□になってしまう場合、ここで対応したフォントを指定します。

『アクション』
「GUIを変更・更新」
 最初に選んだ色とか変えられます。

「永続データ削除」
 これを押すとクリアフラグとかを初期化出来ます。

「配布物のビルド」
 これで配布出来るExeファイルなどを生成します。Steamで販売する場合は「ビルドするパッケージ」の一番下の「Windows, Mac, Linux for Markets」を選ぶと色々必要なファイルを同梱してくれるらしい。しかし、MacはMacでビルドしないとエラーになるとか。Linuxはわからないです。
「設定」の「from節をcallステートメントに加える」はチェックを外した方が良いみたいです。

「Android」
 Android向けビルドは少し面倒です。

・SDKをインストールし不正防止用のキーを設定する。

・構成を設定する。RAMを何GB使うかと聞かれますがPC版よりAndroid版の方が時間がかかるのでRAMに余力があればなるべく多く(個人的には8以上)指定した方が良いです。

・Google Playで販売する場合は「Play Bundle」をそれ以外は「Universal APK」にチェックを入れる

・Android用の画像を用意する。Baseフォルダにアイコン画像2枚(android-icon_background, android-icon_foreground)、ローディング画面の画像2枚(android-downloading, android-presplash)入れる。

 最後に「パッケージのビルド」を押せば生成されます。しかし、その前にJavaをインストールしてその場所を教えてあげなければ動きません。

 OpenJDK8U-jdk_x64_windows_hotspot_8u362b09をインストールし、その場所の「システム環境変数」を設定します。


 「コントロールパネル」→「システムとセキュリティ」→「システム」→「デバイスの仕様」の下にある「システム詳細設定」→「環境変数(N)…」→「システム環境変数(S)」の下にある「新規(W)…」をクリック→「変数名(N):」の欄に「JAVA_HOME」と記入→「変数値(V):」の欄に「ファイルの場所(OpenJDK8U-jdk_x64_windows_hotspot_8u362b09をインストールしたアドレス)」を入力→OK→OK→OK→Ren'Py再起動

ギャラリー実装

1.メニューにギャラリーのテキストリンクを作る


「screens.rpy」の「メインメニュースクリーンとゲームメニュースクリーン」の追加したい場所に

textbutton _("ギャラリー") action ShowMenu("gallery")

 と記述する。行頭のスペース数(Tab)を間違えるとエラーになるので気を付けて下さい。#はコメントアウトと言って緑色になっている所はプログラミングコードを書いても実行されません。

2.ボタンに画像ファイルを格納する
 ギャラリーを作る前に、表示させる画像の下準備をします。
「screens.rpy」の最後にでも以下の画像をみて追加して下さい。


Initi python:
(Tab)g=Gallery()

 と書いたら、

g.button("好きな名前を付ける(画像管理名)")
g.condition("persistent.好きな名前を付ける(フラグ管理名)")
g.image("表示させたい画像のファイル名")

 とギャラリーで表示させたい画像の分だけ書きます。

g.condition("persistent.unlock")

 は、「unlock」というフラグが「True」だったら表示するという意味です。「unlock」の部分は好きな文字にする事が出来ます。「persistent.」というのはゲームを再起動してもフラグが消えてしまわないようにする為の文字です。フラグを使わない場合「g.condition()」の行はいらないです。

3.ギャラリーページを作る
screen gallery:

 と続きに書いて、ここからがギャラリーページになります。


grid 5 5:

 画像の例では、5✕5=25マスで25枚表示出来るグリッドが出来ました。後は

add g.make_button()

 を25行書いてサムネイルを指定するだけです。サムネイルを沢山作る必要があります!

name
(さっき作ったボタンの名前)

unlocked
(閲覧可能な時のサムネイル)

locked
(閲覧可能な時のサムネイル)

hover_border
(カーソルをサムネイルの上に乗せた時にこのサムネイルに切り替わる)

 を書いて終了です。「hover_border」は「unlocked」の明度を10%上げるとかして作れば良いと思います。「locked」の項目はロックしない場合は不要です。「gridの数」と「add g.make_button()の数」が同じでないとエラーが出るので注意して下さい。

3.画像閲覧フラグ


フラグを立てたい「script.rpy」ファイルの本文の中に

$ persistent.unlock = True

 と記述して下さい。「unlock」以外の文字は変えないで下さい。これで「unlock」というフラグが立ち、ここを通過すればギャラリーの「condition」で「unlock」のフラグを持つ絵が自動的に閲覧可能になります。
 こんな感じの5✕5ギャラリーが出来ます。

ミュージックルーム実装

 ミュージックルームはデフォルトの関数だと上から自動でループ再生するものしか作れなかったのでそれで勘弁して下さい。日本人向けの使い易いものを書いてくれた方もいましたがRen'Py8.0.3では動きませんでした。

1.メニューにテキストリンクを作ります
「screens.rpy」のメインメニューとゲームメニュースクリーンに以下のように追加します。

2.音楽を音楽格納箱に入れる
 音楽も画像と同様に格納箱に入れてから使わないと使えません。
 以下を「screens.rpy」の一番下にでも追加します。

init python:
(Tab)mr = MusicRoom(fadeout=1.0)

 と記述してから、

mr.add("音楽ファイルの名前")

 これを音楽の数だけ追加します。音楽はゲーム中に一度聞くとアンロックされるらしいです。音楽が再生されない場合は入っているフォルダ名も記述すると直ります。

2.ミュージックルームを作る
screen music_room:

 と記述したら

textbutton "音楽の名前" action mr.Play("音楽ファイルの名前")

 を追加していくとクリックして曲が再生出来るテキストリンクが生成されます。PlayのPは大文字なので注意して下さい。翻訳対象文字にしたい場合は_("ここの文字が翻訳対象")のように書きます。

ウィンドウ透過度実装

「options.rpy」の一番上か一番下辺りに

define persistent.window_alpha = 1.0

 と記述します。
「screens.rpy」の「Preferences(環境設定)スクリーン」の好きな所へ下記を追加して下さい。

label _("ウインドウ透過度")

bar value FieldValue(persistent, 'window_alpha', 1.0, max_is_zero=False, style=u'slider', offset=0, step=1)

その他の便利機能

1.アーカイブ化


「option.rpy」の一番下辺りにある。アーカイブとはパス付きZipファイルみたいな感じ。直接ファイルの中身を見られないようにしたり、沢山のファイルを一つにまとめたり出来る。

2.デフォルトの言語
define config.enable_language_autodetect = True

 と「option.rpy」に記述しておくとRen'Pyはゲームをプレイする人の言語に対応した翻訳ファイルを自動で選択してくれる(翻訳フォルダの名前をRen'Pyが認識できる名前にしておく必要がある。繁体字は「tchinese」簡体字は「schinese」等(多分))。

 しかし、プレイヤーに対する翻訳言語がないとデフォルトの「None」ファイルが使われるので翻訳前の台詞やメニュー項目は英語で書いた方が良い。翻訳前のファイルを日本語で書いてしまった場合、翻訳がない言語の人に日本語で表示されてしまい「環境設定」まで辿り着けなくなってしまう。そうなってしまった場合「english」の翻訳フォルダを生成して、

define config.default_language = "english"

で、デフォルト言語が英語になる(多分)。

3.デフォルトの音楽ボリューム
define config.default_music_volume = 0.5

 これも「option.rpy」の好きな所に記述。0が最小、0.5が中央、1.0が最大。

4.Steam実績
 Ren'PyにはSteam実績専用関数がある。
 下準備として

・「option.rpy」に下記を記述する。


define config.steam_appid = (自分のアプリの7桁の数字)

・Steamで実績の項目を埋める。

 後はフラグと同じ感じで、「script.rpy」の本文に下記の一行を追加するだけで、ここを通過すると実績が解除される。

$ achievement.grant("実績の名前")

 もっと万全なプログラミングをしたい方は下の画像参照。なお、実績は実装出来ていてもSteamのチェックボックスにチェックがつかない場合がある。

おわり
 これで最低限度のビジュアルノベルが作れるはず!見易いようにと思い1ページにまとめました!12時間くらいかかった!プログラミング初心者なので間違っていたら許して下さい!「Ren'Py Documentation」という解り易い公式サイトがあるので見てみて下さい!それではご覧頂きありがとうございました!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索