6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

使われていないサウンドファイルをスクリプトで一括削除

Last updated at Posted at 2015-12-16

MVではRTPが廃止されたため、プロジェクト作成時に全ての素材ファイル(396MB、その内175MBが音楽データ)がプロジェクトにコピーされます。いずれ整理することを考えると気が遠くなるかも知れませんが、MVはデータ形式がjsonになったおかげで、なんらかのスクリプト言語が扱える人なら簡単に不要データを削除することができます。

その内ツクラー向けにGUIに対応したソフトが出てくるとは思いますが、おそらく自分で追加したjsやプラグイン中で使われる素材には対応できないはずです。スクリプトならこの手の調整は簡単なので、自分用に作ったRubyスクリプトを公開しておきます。使い方はRubyがインストールされていれば、このファイルを index.html と同じ場所に置いて実行するだけです。

unused_sound_remover_mv.rbw
# encoding: utf-8

def has_sound?(filename)
  if !filename.index('MapInfos')
    ['Animation', 'CommonEvents', 'Map', 'System', 'Troops'].any? {|s| filename.index(s) }
  end
end

def need_sound
  a = []
  files = Dir.glob("./data/*.json")
  files.each do |filename|
    next unless has_sound?(filename)
    json = File.open(filename, "r:utf-8") {|io| io.read }
    a.push(json.scan(/"name":"(\w+)","pan"/))
    a.push(json.scan(/"name":"(\w+)","volume"/))
  end
  a.flatten.uniq.sort
end
@need_sound = need_sound

def unused_sound
  a = []
  files = Dir.glob("./audio/*/*.*").to_s.scan(/\.\/audio\/\w+\/(\w+)\.\w+/).flatten.uniq.sort
  files.each do |filename|
    next if @need_sound.any? {|s| filename == s }
    a.push(filename)
  end
  a
end

def delete_unused_sound
  files = Dir.glob("./audio/*/*.*")
  files.each do |filename|
    if /\.\/audio\/\w+\/(\w+)\.\w+/ =~ filename
      next if @need_sound.any? {|s| $1 == s }
    end
    File.delete(filename)
  end
end

# Web/Android/iOSに対応しない場合 AAC(*.m4a) は不要
def delete_m4a
  files = Dir.glob("./audio/*/*.*")
  files.each {|filename| File.delete(filename) if filename.index('.m4a') }
end

# puts @need_sound  # 必要なサウンドファイルの一覧を出力
# puts unused_sound # 使われていないサウンドファイルの一覧を出力
delete_unused_sound # 使われていないサウンドファイルを一括削除
# delete_m4a        # *.m4aを削除

ちなみに画像素材は後から削除するより、使うファイルをプロジェクトに入れていく方が個人的には作りやすいので対応していません。画像素材はジャンルや規格がはっきり分かれていることが多く、製作中のゲームに縁のないものは選択時に邪魔になるからです。逆に効果音はシステム/アニメーションに組み込まれてしまっているため、開発中は全てのデータを入れておいた方が無難です。

あとはデフォルトのBGMはなぜか凄まじい高ビットレートになっているので、特にWEB公開などをする場合は再圧縮した方が良いでしょう。その際、ループタグを自分で付け直すのは面倒なので、こちらの記事を参考にすると楽ができると思います。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?