Category Archives: Python

NVLモード : ウィンドウの表示/非表示

WikiLogo
ver 6.14.1

Ren’Pyには2つの表示モードが標準実装されています。
・ADVモード: デフォルトではこのアドベンチャーモードです。恋愛ゲーム等に見られる画面上部にキャラクター表示、画面下部に会話が表示される形式です。
・NVLモード: ノベルモード。かまいたちの夜のような画面全体に文章が表示され、背景としてキャラクターなどが表示される形式。

NVLモードへの変更についてはWikiに説明があるのでそちらを参考にされると良いと思います。
ここでは備忘録として簡単にまとめておきます。

NVLモードに変更するには scrript.rpy などに下記を付け加えます。

init python:
    config.empty_window = nvl_show_core # NVLモード・ウィンドウの制御を有効化
    config.adv_nvl_transition = dissolve
    config.nvl_adv_transition = dissolve

config.empty_window を nvl_show_core に設定すると、NVLモード・ウィンドウは、トランジションを伴って表示されます。
最後の2行では、ウィンドウの表示/非表示の切り替えに使われる既定のトランジションを設定しています。

有効化することで、windowコマンドによってウィンドウの表示/非表示ができるようになります。

NVLモードでtransitionを使った場面転換をすると、ADVモードのウィンドウが一瞬表示されたりします。
デフォルトではtransition時にウィンドウを表示し続ける設定になっていますが、これをtransitionするときには
ウィンドウを消すように設定(False)すると、NVLモードにADVモードのウィンドウが出てくることはありません。

init python
    # トランジション中もウィンドウを表示させる場合はフラグをTrueに
    _window_during_transitions = False

参考
NVLモード・チュートリアル

ファイル入出力時に文字コードを指定する

python_logo
ver2.7

codecsモジュールのopen関数を使う。

import codecs

fp = codecs.open("read.txt", "r", "shift_jis") # shift_jisのread.txtを読み込む
fp = codecs.open("write.txt", "w", "utf-8") # utf-8でwrite.txtに書き込む

実行後のwrite.txtには文字コードがUTF-8で出力される

参考
[文字コード] ファイル入出力時にエンコードを指定する – nelnal@python
Pythonライブラリリファレンス 4.9 codecs — codec レジストリと基底クラス

日本語の文章に対応させる

WikiLogo
ver 6.14.1

Ren’Pyは元々英語圏のソフトなので、標準では日本語の文章が正常にゲーム画面に表示されなかったりする。
サンプルゲームや、チュートリアルソフトもそのままだと英語でよくわからない(´・ω・`)

Wikiのチュートリアルに「チュートリアルゲーム日本語訳(v6.14)」があります。
ダウンロードして解答した中にある3つのファイルを、ゲーム毎に個別のgameディレクトリに置くと日本語化は完了です。
1. VL-Gothic-Regular.ttf (日本語フォントファイル)
2. translations.rpt
3. translations.rpy

ファイルの内容をテキストエディタで見るとわかりますが、はすごく簡単な仕組みになっています。

< Help
> ヘルプ

日本語→日本語の変換もできるのか試してみましたが反映はされませんでした。英語→日本語の場合しかうまくいきません。
ルビ変換をこのtranslations.rpt でやれたら楽なのになぁとちょっと残念。
でも文章データ側で英語の人物名表記をしておいて翻訳ファイルで日本語の人物名にするなど、多言語化は比較的対応がしやすそうです。

ソースの難読化

WikiLogo
ver 6.14.1

ちょっと気になったのが、配布したときにソースが丸見えになってしまうこと。
テキストエディタとかで普通に分岐の条件とかフラグが見えてしまう;;
でもどうやらそれを読みにくくする機能がRen’Pyにはついてるらしい(・ω・)

でもランチャーにはそんな機能はなく・・・。
よくよく調べてみたら、options.rpyに書くところがあった。

    ## To archive files, classify them as 'archive'.
    build.classify('game/**.png', 'archive')
    build.classify('game/**.jpg', 'archive')

上の例だと、pngやjpgの画像がビルドしたときにはarchive.rpaって1つのファイルに格納されて、
個別のファイルで見れないようになりますよーってことみたい。
難読化っていうぐらいだから、暗号化みたいに絶対見れないってわけじゃなさそうです。
プログラマーとかなら解析できるけど、一般の人はすぐには見れないかもって感じでしょうか。

    build.classify('game/**.png', 'archive') #png形式のイメージファイル
    build.classify('game/**.jpg', 'archive') #jpg形式のイメージファイル
    build.classify('game/**.ogg', 'archive') #ogg形式のオーディオファイル
    build.classify('game/**.rpy', 'archive') #プログラムファイル
    build.classify('game/**.rpyc', 'archive') #プログラムの中間ファイル
    build.classify('game/**.ttf', 'archive') #フォントファイル

いまはとりあえずこんな設定にしてみます(・ω・)b

はじめてのRen’Py

WikiLogo

ひょんなことから同人ゲームを作ることになり、プログラムとか何それ美味しいの?状態な僕が
Ren’Pyを使ってプログラマーもどきをすることになった。

一体どうしてこうなった/(^o^)\

というわけで、英語やPythonとの死闘が始まりそうな予感・・・。
記事を書いている現在、Ren’Pyのバージョンは6.14.1で、
数少ない日本語解説サイトとは既にランチャーのインターフェイスが違うみたいだ。

まぁ・・・なんとかなる・・・のか?`,、(‘∀`) ‘`,、