タイトル | : Re^3: BGMのカスタムについて |
投稿日 | : 2016/07/22(Fri) 17:47:58 |
投稿者 | : 管理人 |
参照先 | : |
すいません、まだちょっとよく理解出来ていないのですが、
まず配布したいスキンというのはWAVファイルが入っていない(または仮のWAV)もので、
そのスキンをDLしたユーザーが自分でWAVを入れて使うという感じなのでしょうか?
charatbeatHDXはそもそもBGMとするWAVは1つだけしか鳴らせないわけではなく、
複数同時に鳴らしたり、逆に何も鳴らさなかったりすることが出来ますが、
システムスキンでは現状、たまたまシーンごとに1つのWAVを鳴らす実装になっており、
もしLuaを変更せずにBGMだけを差し替えたい場合は、そのシーンで鳴らしているWAVファイルを
ユーザー側で追加か上書きしてもらえばよいかと思います。
なお、配布用のスキンはzip圧縮されているため、WAVを差し替えるためには
ユーザー側でいったん解凍して、WAVを上書き後に再度zipに圧縮し直すか、
zipソフトによっては直接zip内のWAVファイルを上書き出来るものもあるので、
そういったソフトを使って作業をしてもらう必要があります。
※上にも書きましたが、どのWAVをBGMとして再生するかどうかはLuaの制御であるため、
設定ファイルなどでBGMとして使うファイルはコレといったような指定は行えません
次にcharatbeatHDXのスキンというのは、基本的には全てのシーン(タイトルや選曲、ゲーム画面などの各画面)を
1つのスキンデータとして作り、システムスキンとごっそり入れ替えて使用するといったイメージであり、
このためご要望の曲選択画面とメイン画面を分けて配布し、
それぞれのスキンファイルを各シーンごとに設定するといったことは出来ません。
ちなみにシーンが実装されていない時に、代わりにシステムスキンのシーンを代用するという機能は、
以前も説明しましたがあくまでもゲームが動作しなくなることを防ぐための措置であり、
基本的には全シーンを1つのスキンデータとするのが本来のスキン仕様となります。
※例えば1920x1080で一部のシーンだけを作った場合、作っていないシーンではシステムスキンが使用されますが、
システムスキンは1280x720であり表示時には1920x1080に引き伸ばされるため、
結果的に作ったシーンと作っていないシーンで画質が変わってしまいます(ボケて見える)
これらのことから曲選択画面とメイン画面を別々に配布することは出来ないのですが、
例えば作ったシーンが「曲選択1」と「曲選択2」、「メイン画面1」と「メイン画面2」だった場合、
「曲選択1とメイン画面1」「曲選択1とメイン画面2」「曲選択2とメイン画面1」「曲選択2とメイン画面2」の
4つのスキンとすることで、これで全ての組み合わせが作れると思います。(かなり面倒ですが)
最後に動画を再生したいとのことですが、ひとまずシステムスキンを改造するとしたら
まず3D関連の部分をごっそり消し、あとは動画のロードと再生、そして表示を行うだけです。
※動画は画面に表示をしなくても裏で再生を続けています
ちなみに動画をループ再生する場合は動画の再生が終わったかで判断します。
以下は「タイトル」シーン部分のサンプルで、削除部分は"//"でコメント化しています。
※タブは全角スペースに置き換えています
function OnStartTitle()
:
// 3Dモデルロード
// hdxMatrixRotationX( 0,hdxToRadian(90) ); // 3dsMax座標補正
// hdxLoadModel( 0,"title.x",0 ); // 90度回転した状態を基本姿勢としてxファイルをロード
// アニメーションロード
:
// 動画
hdxLoadMovie( 0,"ミニアニメ「Re_プチから始める異世界生活」_03.mp4" ); // ID=0に動画をロード
hdxPlayMovie( 0,0 ); // ID=0の動画を先頭から再生開始
end
function OnRunTitle( upd_frm )
///////////////////////////////////
// 処理
///////////////////////////////////
if( g_dwTitleState==TITLEST_INIT ) then
:
end
// ID=0の動画の再生が終了していたら再び先頭から再生開始
if( hdxIsPlayMovie(0)==FALSE ) then
hdxPlayMovie( 0,0 );
end
///////////////////////////////////
// 描画
///////////////////////////////////
// 3Dモデル
// hdxSetZBuffer( TRUE );
// hdxMatrixRotationY( 0, hdxToRadian( ((hdxGetTime()%(360*60))/60) ) );
// hdxSetLookAt( 0,0,40, 0,0,0, 0,1,0 );
// hdxSetViewport( 0,0,RENDER_WIDTH,RENDER_HEIGHT );
// hdxDrawModel( 0,0 ); // 背景オブジェクト
// hdxSetZBuffer( FALSE );
// 動画
hdxDrawMovie( 0,0,0,1280,720,1.0 ); // ID=0の動画を画面いっぱいにアルファ1.0で表示
// アニメ
:
end
正しく再生出来ると以下のように動画の上にタイトル名が表示されます。
http://www.charatsoft.com/upload/20160722_chdx_skinmovie.jpg
ちなみに上記の例では動画は1個なのでID=0を指定していますが、
最大でMAX_MOVIE分(ID=0〜15)まで16個の動画が同時に再生出来ます。
(数が多くなれば処理が重くなります)
また動画の音声部分は再生されないため、必要ならば別途WAVをロードして再生してください
動画系の関数の説明は↓を確認してください。
http://www.charatsoft.com/software/charatbeatHDX/skin/page/api_movie.html
なおスキンの仕様として、動画などの素材はフォルダなどに入れず、
Luaと同じ場所に置いてください。
また、ファイル名を指定する場合もディレクトリ名などは付けずに、
直接そのファイル名を指定してください。
- WebForum -