忍者ブログ
はじかきれんしゅうちょう いろいろ
Admin  +   Write
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ボ、ボイス関係(もう使わないかもだけど)まとめダヨ

■普通にゲーム内で再生(話者設定は省略、define kh = です)

    voice "audio/v45.ogg"
    kh "先輩。"

audioフォルダのv45.oggが「せんぱい」って読んでいるボイスデータです。(一応)
ボイスは次のボイスが重なるとかの次の動作が始まると停止します。
公式によると voice sustain を挟んで使えば
次の動作にもまたがってボイスの再生を続けるらしい(試さんかった)。

■初回起動時の音量(音量の初期設定)
ボイスつけるとバランスが気になるから・・・
「options.rpy」の## 環境設定のデフォルト とかに足します。

## 初回起動時の音量
define config.default_music_volume = 0.5
define config.default_sfx_volume = 0.9


■カスタム:メッセージボックスにボイスリピートボタン

「screens.rpy」の## Quick Menu(クイックメニュー)スクリーン に

            textbutton _("repeat") action VoiceReplay() text_size 17

をセーブロードとかと同列に足すだけ。


■カスタム:そのほか
実際には試してないのでご紹介にとどめます。
・バックログにボイスリピート機能を付けたり
・コンフィグにボイススキップを付けたり
 → https://h9o6.blog.fc2.com/blog-entry-6.html
できるみたい?です。現行のverでもやれるのだろうか(試していない)


■ボイスタグについて
1キャラしかいないしボイスが主みたいなもんだったのでつけなかったんですが
ボイスタグを設定するとキャラごとオンオフができるみたい。

define kh = Character('後輩', color="#66cdaa", voice_tag="kho")

「kho」のとこがボイスタグ。一応つけるだけつけておいた…
(実際はこれに立ち絵用のimageも定義してましたが割愛)


■コンフィグにボイステストを設置
設置というかすでにある機能のコメントアウトを無効にして動かすみたいなやつですね。

「options.rpy」のここをコメントアウトします。
この場合、audioファイルにv67.oggを入れて用意してあります。

## サウンドやボイスの設定画面で、ユーザーがテストサウンドを再生可能にする場合、
## 以下の行をアンコメントしてサンプルサウンドを指定します。
# define config.sample_sound = "sample-sound.ogg"
define config.sample_voice = "audio/v67.ogg"

「screens.rpy」の環境設定スクリーンのボイスのところの記述が働いて
勝手にサンプルボタンが出るようになります。
                    if config.has_voice:
                        label _("VOICE")
 
                        hbox:
                            bar value Preference("voice volume")
                            $ musi3 = _preferences.get_volume('voice')#※ここから
       # 現在のSE音量を取得する変数を追加
                            text _(" [musi3:.0%]")
       # フォーマット化タグで囲って100%表示に置き換える#※ここまで
 
                            if config.sample_voice:
                                textbutton _("♪") action Play("voice", config.sample_voice)

サンプルボタンの文字列を変えたいときは"♪"のところをいじる。
(同じく環境設定スクリーンのボイスのところにあります)

・音量バーに%表示を付ける方法は→「音量のパーセント表示」を参考に
 使用させていただいています。(コード中の※の部分)


■↑を応用して、ボイス再生部屋を作ったよ

*前提:使うボイスをdefineしときます。
「options.rpy」のどこかに
define omake_voice01 = "audio/v01.ogg"
define omake_voice02 = "audio/v02.ogg"
define omake_voice03 = "audio/v03.ogg"
define omake_voice04 = "audio/v04.ogg"

で、実際の画面をつくる。「screen.rpy」です。
ヘルプスクリーンを改造したのでヘルプのままになっているが
よい子は別の名前を付けたほうがいいでしょうね・・・
変にいじくってエラーでるのもアレなのでそのまま載せます!
差し替えだとヘルプのかわりにここに飛ぶので、メニュー名は変える。
(→「screen.rpy」のメニュースクリーン)

## メインメニュースクリーンとゲームメニュースクリーン
## Navigation(ナビゲーション)スクリーン ####################################################
        textbutton _("…voice") action ShowMenu("help")

押すとhelpスクリーンにとぶボタンです。ボタンのテキストは「...voice」です。(の意味)
任意のスクリーンにした場合はhelpのとこを変えるんじゃ。
エンド後に足したいとかはこの記事で。

## Help(ヘルプ)スクリーン ##############################################################
screen help():
    tag menu
    use game_menu(_("voice"), scroll="viewport"):
        style_prefix "help"
        vbox:
                text _("ボイスコレクションです。\n押すと再生されます。\n\n")
                textbutton _("「暇じゃないし」") action Play("voice", omake_voice01)
                textbutton _("「なんでもないよ」") action Play("voice", omake_voice02)
                textbutton _("「喜ばないでください」") action Play("voice", omake_voice03)
                textbutton _("「やめてくださいね」") action Play("voice", omake_voice04)

#ここからはスタイルの設定                
style help_button is gui_button
style help_button is gui_button
style help_button_text is gui_button_text
style help_label is gui_label
style help_label_text is gui_label_text
style help_text is gui_text
style help_button:
    properties gui.button_properties("help_button")
    xmargin 7
style help_button_text:
    properties gui.button_text_properties("help_button")
style help_label:
    xsize 209
    right_padding 17
style help_label_text:
    size gui.text_size
    xalign 1.0
    text_align 1.0

PR
■タイトル画面カスタムまとめ

●音楽を鳴らす
 「options.rpy」のサウンドと音楽のところのコメントアウトを解除
音楽ファイルを用意して" "内を差し替える。
(この場合だと、audioフォルダ内の00tmnn.ogg)
define config.main_menu_music = "audio/00tmnn.ogg"
なお、新しいverでは新たにプロジェクトを作ると
「audio」フォルダができるようになっています。
音楽ファイルをaudioフォルダ内に入れた時は場所を指定しましょう。
(古いのをコピペして不発になった私より)

●タイトル名とかバージョンが文字で出てるのを消したりカスタムしたり

「screen.rpy」の Main Menu(メインメニュー)スクリーン のこのあたり↓
    ## use ステートメントは、他のスクリーンを現在のスクリーンの内に表示するのに
    ## 使います。メインメニューの実際のコンテンツは navigation(ナビゲーション)
    ## スクリーンです。
    use navigation
    if gui.show_name:
        vbox:
            text "":#""の中を消せば出なくなります。
                style "main_menu_title"
            text "  ver[config.version]":
                style "main_menu_version"

文字が邪魔な場合、text ""の""の中を消せば出なくなります。                
[config.version]のところにverの数字(1.0とか)が入ります。
verの数字はoptions.rpyで記入するところがあります。


●起動直後にロゴとか出す
label before_main_menu:
って名前のラベルを作ってそこに中身をかけばいい。 
画像をshowして~
        with Pause(2.0)
を挟んでhideすることでスッ・・・と消えるヨ
メインメニューの曲が鳴ってしまう? 頭に↓とか・・・
    stop music fadeout 1.0

クリアしたらロゴ出ない仕様も、ifの中に突っ込むとかで実現できる。
(省略)


●背景絵を変える
・①普通に(差し替え)

「gui.rpy」の
## メインメニューとゲームメニュー #############################################################
define gui.main_menu_background = "gui/main_menu.png"#★背景画像
define gui.game_menu_background = "gui/game_menu.png"#こっちではない
ここにあるんだけど、main_manu.pngをお好きなタイトル画面の画像で
うわがきしちゃった方が早いと思う(お好み)
・★②エンド見た後別の絵になるようにする
 参考(無限にありがとうございます)→「フラグが立つとタイトル画面の背景が変わる

差し替え後の画像は適当に用意してください。
まずエンド判定のフラグを踏ませます。
script.rpyの任意のところに・・・
    $ persistent.finishedall = True

〇シンプル版:一本道のゲームとかでクリアフラグ1個ふんでればいいよというやつ。
「screen.rpy」の## Main Menu(メインメニュー)スクリーン
([config.version]とかの下あたりから)
【追記】screen main_menu():
    ## 次のコードは、同じタグを持つ他のメニュースクリーンが表示された時にスクリ
    ## ーンを置換します。
    tag menu
の真下あたりでないと画像がタイトルボタンより上にきてボタンを隠してしまいます!!

    style_prefix "main_menu"
    if persistent.finishedall == True:
        add "gui/main_menu3.png" 
#クリアしていると(finishedallを踏んでいると)menu3がでる
    else:
        add gui.main_menu_background 
#でなければmain_menu_backgroundがでる

〇エンド見た後、ランダムな絵が出る版:
こちらもまずエンド判定のフラグを踏ませます。(前述)
追加で、シナリオ中(script.rpy)任意の場所で
    $ persistent.x = renpy.random.randint(1,6)
を踏ませます。Xに1~6のランダム数字が入ります。

次に、
「screen.rpy」の## Main Menu(メインメニュー)スクリーン
([config.version]とかの下あたりから)
    style_prefix "main_menu"
    if persistent.finishedall == True:
#        add "gui/main_menu3.png"
        #何かしらクリアしているとここ(ランダムいらないならこの下の塊を消す)
        
        if persistent.x == 1:
            add "gui/main_menu1.png"
        elif persistent.x == 2:
            add "gui/main_menu2.png"
        elif persistent.x == 3:
            add "gui/main_menu3.png"
        elif persistent.x == 4:
            add "gui/main_menu4.png"
        elif persistent.x == 5:
            add "gui/main_menu5.png"
        else:
            add "gui/main_menu6.png" 
    else:
        add gui.main_menu_background

これでクリア後に6種類がランダムででます。(guiフォルダのmain_manu1~6)
たまにはゲームツール本体以外のことも書いてみる。

■合成音声で遊んだ⇒成果物
↓経緯など↓
⇒そういや最近無料のすごい合成音声ツールが出たって話題になってたよね
⇒(サンプル聴く)へ~使ってみようかな
CoeFontSTUDIO
⇒男の声は月額(*1)の方(→CoeFontCLOUD)でないと出力できないみたい
⇒とりあえずSTUDIOをさわる。クールなお姉さんがいる! 
⇒低め設定にすれば少年声いけるのでは・・・??
⇒そもそもの話、私は女性声優の少年声が好き。(中性的少年が好き)
⇒ヒヒヒ! これでシチュエーションゲーム作ったろ!

で、お盆休みも特にないのに突貫工事作業です。ハハハ。
楽しかったですね・・・・

最近の合成音声は高さ調整しても声質があんま損なわれないね。
10年前ぐらいの話だけど、ボカロのジェンダーファクターのパラメータのことが
あんまり信用できなかったので・・・こっちも今は違うのかもですが。

■所感とか
前置きが長くなりましたが、触ってみた感じの感想なんかを残しとこうと思います。
全て現在時点の情報です。あと素人個人の感想です。

・CoeFontSTUDIO
 ⇒フリー。現在これ単体だと女子2人の「声フォント」。
  ブラウザで操作出来て、簡単なアクセントの高低や速度・声の高さを調整可。
  CoeFontで作りましたよって書けばいろんなとこで使えるらしい。

・CoeFontCLOUD
 ⇒月額制(*1)。使える声の種類が多い・・・というかユーザー自身が
  声を録音して「声フォント」になれるし配布もできる。UTAUみたいな。
  あとスクショ見る限り無料版よりこっちのほうが調整項目が多いのかも?
 (わかんないけど)
  もしかすると使ってる人がyoutubeとかにいてあんまり見る機会が
  ないだけかもだけど、声を提供する側が使う側より多いような?
  声フォント作ったよ~使ってね~って側の人がいっぱいいるけど
  まだあんまりフィクションコンテンツ自身(*2)を見かけられない感じ?
 
もっと使用例の方が見たい。ほしい。
そう、少年声のフィクションコンテンツがほしい・・・!!
現状どこにあるかというと、冒頭にある自分で生み出したやつとか…(ばくわら)
他の人が作ったやつがほしい! もっとください!!!
という感じです。

■CoeFontSTUDIOを操作してみて
・勝手につまづいたこと
 使い方の動画まであるんですけど、わたくしアンポンタンなのでつまずき申した。
 アクセントの調整をクリックしながら上下に動かすんだと思い込んでいて、
 動かないな~って思ってた。カチカチするとたまにマグレで動くな~って思ってた。
 正しくはダブルクリックで高い・低いを行き来する仕組みでした。

・現状「?」のニュアンスがでない
 これなんで、ノベルゲーらしい会話を成立させるには内容をこねくりまわして
 疑問文を含まないシナリオにしないと難しいです。

・たまに短いフレーズだけ入れると声にならない・謎の音が出るときがある
 禁止用語があるっぽいのでそれにひっかかってるか、口の開き方に起因する?
 何の語を入れた時だったか忘れちゃったので検証できないですけど・・・
 このへんはそんなに困んないというかそのうち修正されそうな予感がする。

・感情について
 淡々とした喋りが向いている。そりゃそうだ合成音声なんだから。
 少なくとも美少年のつんけんしたセリフには向いていたと思う。ありがとう。
 スピードの調整ができるので、内心焦ってるみたいな感情は
 案外のせられるんじゃないかと思った。
 バトルボイスぐらいまで行くと難しいかもしれない。
 ただキャラの性格にもよりそう。

・加工の手間の有無
 ぜんぜんいらない。ちょっと音量小さめなのを底上げしたくらいで、
 書き出したものままのデータで使えます。ありがたや。
 語尾のピッチをいじって疑問文っぽくしゃべらせてる人を見かけたけど、
 手間がかかりそうだし技能がないと難しそう。

・使用のコツみたいなこと
 がちがちに台本を用意して言いたいことを言わせる用途は難しいかも。
 なぜならメカニズムは不明だけどもたまに出力された読み上げが
 どうしてもしっくりこないときがあるから。

 微妙な語尾とかもうまくいくときといかないときがあります。
 アクセントの調整はできるけどわりとパターンが限られていて、
 調整しても手を尽くしきれない場合がある感じ。
(うまい人がやればできるのかもだけど)

 なので、思いついたことを言わせてみて読み上げがうまくいったボイスを
 採用するほうがいい気がする。何パターンか言い方を変えてみるとか。
 このへんはボカロの調整でもある「うまく歌えないなら歌詞の方を変える!」
 っていうテクと一緒(ほんとか?)

■その他
あんまりハデに広報とかしてないけど同時期ぐらいに

VOICEVOX
というのもリリースされていまして、(こっちは個人の作かな?)
謙虚なことが書いてあるんですけど、こっちのほうがいじれるパラメータは多そう。
ずんだもんちゃんの声がすっごくかわいい。かわいい~~~
まだ試してないけどパソコンのパワー的に許されれば触ってみたい。


(*1)最初の数カ月無料でもあとから月額制になるものについては
   この場では月額制と呼ばせていただきます。(営業妨害とかにならないといいけど)
   料金プランが3つあって、あの個別対応っていう1つはなんだろう? 
   お互いに利があればお友達料金ですよみたいなの用の逃げ道? 投げ銭?

(*2)Vの人の実況やキャラとして行う活動を、本人コンテンツであり
   フィクションコンテンツだと思っていない節がある。
  (この辺は過去のbot発言ショック事件に起因しており恨みっぽくなるので詳細を割愛する)
   「Vの人が声優として演技したボイスドラマ」ならフィクションコンテンツだと思います。
   これは個人の思い込みなんで読み飛ばしてください。もう記事も最後ですけど・・・
差分を定義してshow/hideで出し入れするので
立ち絵もCGも一緒だよねっていう……
CGに差分があるときも一枚一枚用意しなくてもいいよ~っていうやつです。
別記事にする意味があるのかわからんが自分用に!
 →立ち絵はこの記事  →そもそもの参考元


0⃣準備するもの(imageフォルダ内に直で置く場合です)
・ベース画像(画面サイズの大きさの一枚絵)→「cgbase.png」がファイル名
・差分1(画面サイズの大きさ、共通のところは透明)→「1_S_S1.png」
・差分2(画面サイズの大きさ、共通のところは透明)→「1_S_S2.png」
・差分3(画面サイズの大きさ、共通のところは透明)→「1_S_S3.png」
・透明画像(画面サイズの大きさ、透明)→「1_S_S4.png」

1⃣顔の指定
自分のやり方だと、差分用にface.rpyというファイルを作ってそこに書いています。

layeredimage 1:#layeredimage ●
        always "cgbase"
        group s:#group◆
            attribute s1#顔1
#                "1_S_S1" 「●_◆_◆1(任意の番号)」となります
            attribute s2#顔2
#                "1_S_S2"        
            attribute s3#顔3
            attribute s4 default#透明

2⃣本文中で(「nk」は話者指定したものにさしかえてね)
    show 1 s4 with dissolve
#s4は透明なので、ベース画像の一枚絵が出る
    nk "セリフ"
    show 1 s1 with dissolve
    nk "セリフ2"
    show 1 s2 with dissolve
    nk "セリフ3。"
    show 1 s3 with dissolve
    nk "…………。"
    hide 1
    with dissolve
#消えます
★21/7/23追記 生きているから追記もできる!
一カ月経ってるとかウソかトトロでしょ トトロはいますが……

また助けていただいてスクリーン内の文字カスタムができるようになりました。多謝
枠を消せたし文字の大きさと色が自由になったよ。(左下)

●最終的にこうなったよスクリプト(screen.rpyの好きな場所に)

####手作りスクリーン
screen nowplay_indicator():#スクリーンの名前は「nowplay」だよ~と宣言
    style_prefix "nowplay"#ここで「nowplay」のスタイルはこうですよ~ってやつを入れる
    zorder 130#画像選択より上に出すようにする
    vbox:#見えないボックスに入れるよ
#        zorder 130#←ここには入れられないらしいよ!
        xpos 100 ypos 500#縦横の位置
        spacing 4#余白(今気づいたがボックスないならいらない気がする
        text _(" {u}Now playing: [kkm]{/u}  ")    #表示させるテキスト(uは下線)
            
##以下、スタイルのおまとめ指定(2行目のprefixとセット )
style nowplay_text is gui_text#「nowplay」はguiのtextだよ(style ●●_text 
style nowplay_text:#これが「nowplay」のtextスタイルだ
    color "#efd4ff"#文字色
    size 19#文字サイズ
#    background "#ffe8f4"#←これは効果なし(テキストの指定だからだと思う・・・)


●枠について
黒背景に指定カラーの色の枠が付いちゃって(追記前画像参照)
どうにもgui.rpyでの設定に勝てないとか思ってたんですが
    frame:
の中に自分で入れてたからでした!!!(消した)
逆に枠がほしいときはframeに入れたらいいんだな。
そんで多分ですがframeはframeでスタイル設定ができるんじゃないかしら。

指定のやりかたをへんなとこにかくと
frame:には入らないよ~とかvbox:には入らないよ~とか言われるので
適宜シャカシャカ移動させあらゆるインデントのパターンを力技で試しつつ……
でした!!(やっぱり力技)

(線の下は追記前記事です。残しときます。)

■画像選択画面の上に文字を載せる
 画像選択を使ってサウンドモードを作っているのですが、
 今何が流れているのか曲名を表示したい!と思いまして……
 結果からいうとこういうやつ!


曲名に限らず応用すればなんでもメッセージ置けるよねという。
案外画像選択の上になんか出したいときあるよね。
場所をうろうろするゲームとかだと日数表示がほしかったりするし。


■やってみようとした
・showでピクチャを表示→うまくいかなかった
・showでテキストを表示→うまくいかなかった

ぐぬぬ
が、ここでスクリーン使えばよくね?と思い立つ。

何か前の方のレイヤーに出てきてくれるイメージがあったため、
「スキップ中」の文字を表示している## Skip indicator(スキップ表示)スクリーン 
を原型にして取り組んでみました。


①screen.rpyの適当なところになうぷれインジケーターのスクリーンを作る
screen nowplay_indicator():#スクリーンの名前
    zorder 130#こうすると手前に出る?気のせい?
    frame:
        xpos 100 ypos 490#縦横の位置です
        vbox:
            spacing 4#わかんない
            text _(" Now playing: [kkm]  ")#ここにテキストを入れる。[kkm]は変数

②script.rpyの最初の方で変数を作っとく。 
$ kkm = "メヌエットOp.2"
#おまけページのデフォルト曲名が「メヌエットOp.2」のためです。

③omake.rpy(足したおまけページ)でスクリーンを表示させる。
label rpsel:#音楽モード(すみませんrpになってて)
##rpmode
        $ quick_menu = False#メッセージボックスを消す
#        $ kkm = "" ←コメントアウトしてあるのはここだと通るたびに初期化されちゃうから
        show screen nowplay_indicator#スクリーンを表示する
screen example_imagemap():#イメージマップは別記事参照~
    imagemap:
        ground "sound_off.png"
        hover "sound_on.png"
        
#(左端の位置, 上端の位置, ホットスポットの幅, ホットスポットの高さ)
        hotspot (175, 121, 55, 386) clicked Return("s1")
# ・・・(ホットスポットは省略)

#(中略)で、とんだ先に
label example:
    
    call screen example_imagemap
    
    $ result = _return
    
    if result == "s1":#選ぶとここに飛ぶ
        $ kkm = "月に惑いて"#変数に曲名を入れる
        stop music fadeout 1.2#今流れてる曲をフェードアウト
        play music "audio/etyn.ogg"#流す曲を再生
        jump rpsel#選択画面に戻す

④任意の場所でhideしていらなくなったスクリーンを消す
 今回の場合だと他のおまけページにジャンプするときとかに消しています。
    hide screen nowplay_indicator

⑤スクリーンのデザインを調整
現状ですとプロジェクト作るときに選んだテーマカラーで表示されます。
多分なんかすればデザインを変えられるはず。
これね、この先はね……わかんなかったわけだよ。ハッハハ……
まあ、いいんだよ動けば。ここまで!!!!
↑これについては追記を見てね!!!!
≪ 前のページ   *HOME*   次のページ ≫
ブログ内検索
このブログについて
ゲーム作りたい人のメモ。
講座というほどのものでもないおぼえがきです。
何か参考になるところがあればご自由にどうぞ。
ほぼ自分用なので、日本語いきあたりばったりでごめんなまし。

※ここに書いたことは全体的に
「本当はなんとかする方法があるかもしれないけど、私にはわからない」が多く…
あんまり仕組みを理解していないし誤解もあるかもしれません。
というわけで責任は負いません。ごめんなさい!

リンク:ゲーム作ってる本館
material by bee  /  web*citron
忍者ブログ [PR]