Ren'Py

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Ren'Py ビジュアルノベルエンジン
Ren’Py Logo 6-13-6 200x307px.png
Wikipe-tan visual novel (Ren'Py).png
Ren'Pyによって作られたシーンの例
作者 PyTom
初版 2004年8月24日(10年前) (2004-08-24
最新版 6.18.3 / 2014年10月21日(33日前) (2014-10-21
プログラミング言語 Python, Cython, C
対応OS AndroidLinuxMac OS XWindows
対応言語 任意の言語(UTF-8)
サポート状況 開発中
種別 ゲームエンジン (ビジュアルノベル)
ライセンス MITライセンス (部分的にLGPLなどを含む[1])
公式サイト www.renpy.org
テンプレートを表示

Ren'Py ビジュアルノベルエンジン(レンパイ -)は、ビジュアルノベルの制作を容易にするフリーソフトウェアエンジンである。NScripterのような他の有名なビジュアルノベルエンジンとは異なり、Ren'Pyは英語圏で多く用いられており、300以上のゲームが英語で製作されている[2]。Ren'Pyの名前は、「恋愛」ゲームと、エンジンの開発言語であるPythonに由来している。2012年3月より、日本語のサイトが開設された。

特徴[編集]

Ren'Pyには、多くのビジュアルノベルで必要とされる機能が含まれており、ストーリーの分岐、ゲームのセーブやロード、前の場面へのロールバック、様々なトランジションなどがある。Ren'Pyのスクリプトは脚本に似た構文で書かれ、追加的にPythonコードのブロックを含めることで独自の拡張機能を実装できる。さらに、ゲームの配布においてスクリプトを難読化・アーカイブすることで著作権侵害を軽減させるためのツールが含まれている。

ゲームエンジンは主にPythonで書かれているが、レンダリング処理などはCythonとCで書かれている。スクリプトの解析などは一貫してPythonが使われており、スクリプトはゲームの実行前にコンパイル済みのコードに変換される。スクリプト中にはPythonのコードを埋め込むことができる一方で、画像の描画やアニメーションの記述に用いられるATL(Animation and Transformation Language)は英語の構文に似ており、スクリプトの可読性が高い。

国際化対応[編集]

Ren'Pyに含まれている機能を用いることで、1つのゲームを多言語に翻訳することができる。より一般的なソフトウェアではgettextなどが用いられるが、Ren'Pyではビジュアルノベルに適した独自のフレームワークに基づいて設計されており、ユーザーの選択によって言語が切り替わる。

OpenGLによるレンダリング[編集]

画像の変換操作(回転・移動・拡大等)にはOpenGLを利用しており、描画の高速化を図っている。一方で、三次元効果には対応していない。

Pythonによる拡張[編集]

ゲームスクリプト中にはPythonのコードを記述できる。ゲームの開発者は、ストーリーの分岐に欠かせないフラグの管理をPythonのコードとして記述する他、Ren'Pyに含まれていない画面効果などを実装できる。プログラムの記述に一貫してPythonを用いることで、ゲーム開発者はポインター操作や変数の型付けといった、ゲームストーリーの製作とは直接関係ないことに割く時間を減らすことができる。

動作環境[編集]

Ren'PyはPythonPygameによって作られており、公式にAndroidLinuxMac OS XWindowsでの動作がサポートされている。また、Arch LinuxUbuntuDebianGentooのリポジトリに取り込まれている。

文法[編集]

Ren'Pyのコードは、その開発言語のPythonと同じように、字下げレベルが文法的意味を持っている。この理由の一つは、Ren'PyのコードがPythonのコードを含むからである。以下に、最も簡単なRen'Pyのコードを示す。

label start:
    "エイリーン" "Ren'Pyのゲームへようこそ"

上記のコードは、画面下の会話ウィンドウに、話し手として「エイリーン」を、話す内容として「Ren'Pyのゲームへようこそ」を表示する。

Ren'Pyの特徴の一つにキャラクターオブジェクトが存在する。キャラクターオブジェクトは内部的には関数として機能し、話し手の名前やウィンドウスタイルの状態などはキャラクターオブジェクトによって切り替える。

define e = Character("エイリーン", color="#0f0", kind=nvl)
label start:
    e "Ren'Pyのゲームへようこそ"

上記のコードは、NVLウィンドウ上にキャラクター名を緑色で描画する。

スクリプト中にはpythonステートメントを含めることができ、この内部では任意のPythonのコードを実行できる。次に、Pythonのコードを含む例を示す。

label start:
    "エイリーン" "Pythonコードを実行します。"
    python:
        some_function() # 任意のPythonコード
    "エイリーン" "実行しました。"

その他の言語仕様については、Language Basicsクイックスタートマニュアル で説明されている。

Ren'Pyで作られたゲームの例[編集]

関連項目[編集]

外部リンク[編集]

脚注[編集]