BeboxOS
べぼっくすおーえす
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Ramdisk 活用編3 ジャンクションを活用
2008年05月18日 (日) 19:08 | 編集



一連のシリーズ
入門編
傾向と対策
導入編
注意事項とか
活用編1
活用編2
活用編3



前回のxcopyを使ったバッチでRAMDiskにデータをコピーすればアプリやゲームのローディングが短くなります

しかし8GB搭載したとしてRAMDiskは約5GB
最近のローディングの長いゲームはインストールに10GB消費するものも少なくなくゲームを丸ごとRAMDiskに入れるのは現実的ではありません

そこで今回はゲームデータの一部分だけRAMDiskにコピーしてゲームをする方法の紹介です



今回はジャンクションという方法を使います
これはショートカットの強化版みたいなものでフォルダに複数のフォルダパスを付ける機能です
ジャンクションのほかにもシンボリックリンクなど似たような機能が存在するのでそっちを使うのもいいでしょう

それじゃ説明が面倒なので実際に作ってみます

まずはジャンクションをするプログラムのダウンロード
http://technet.microsoft.com/ja-jp/sysinternals/bb896768(en-us).aspx
ジャンクションの設定はDOSコマンドで打つかバッチファイルにして一括で行うので
解凍したら「junction.exe」をC:\WINDOWS\内ににコピーします


実験対象としてエロゲ版ポスタルとか言われてるフリーダムゲー「らぶデス2」を使ってみます
どのくらいフリーダムなのかはニコニコ動画とかで検索すると分かるかと思います
このゲーム、どこに消費しているのかインストールに10GBも必要です
データの一部をジャンクションでRAMDiskから読み込むようにしてローディングスピードアップを目指します

まずはRAMDiskにデータをコピー
今回はやたらとフォルダサイズのでかかった奴から
RAMDisk容量限界に収まる「a」「b」「d」を対象にしました
たぶんキャラクターのデータが入ってるものと思われます

コピーしたらコピー元のフォルダ名を適当に変えておきます(フォルダ名にアンダーバー追加しておきました)
こうしないとジャンクションで作られるフォルダとバッティングしてしまうためです

ramdisk_inst26.jpg

コピーが終わったら
ジャンクションの設定をします

DOSコマンドでて入力してもいいですけど
複数のジャンクションを作るとなると面倒なのでバッチで実行します

バッチファイルを作った要領で
「junction.exe "D:\Program Files\TeaTime\らぶデス2\ODF\a" "Z:\Program Files\TeaTime\らぶデス2\ODF\a" 」
と記述します
「"D:\Program Files\・・・」というのがジャンクションフォルダの作成場所で
「"Z:\Program Files\・・・」というのがジャンクションの元となるフォルダの場所です

ちなみにジャンクションフォルダを削除する際は
「junction.exe -d "D:\Program Files\TeaTime\らぶデス2\ODF\a"」
というコマンドをバッチファイルに書いて実行すればOKです
ジャンクションで作成されたフォルダは見かけ上通常のフォルダとそっくりで見分けが付きません
あとでどれがジャンクションで作ったのか分からなくなるときっと困ることが起こると思うので
ジャンクションを作成した際に同時にジャンクションフォルダを削除するバッチをあらかじめ作成しておくと
あとから困った事態になりにくいと思います

ジャンクションで作成されたフォルダを普通のフォルダのように削除したところ
ジャンクション元のフォルダまで消えてしまったのでコマンドで削除するのが安全です

今回は三つジャンクションを作成するのでこんな感じ
ramdisk_inst27.jpg
作成したらバッチを実行


ジャンクションのフォルダが作成されます
ramdisk_inst28.jpg

ジャンクションで作成されたフォルダを開いてみると
Dドライブにデータが存在するように見えますがこれは幻術です
実際にはZドライブにデータが存在しています
ramdisk_inst29.jpg
ちなみにこの状態でDドライブ、Zドライブどちらかからファイルを削除したとすると
両方のドライブからファイルが消えます

Zドライブのジャンクション元フォルダを削除すると
Dドライブにはフォルダが残るもののフォルダにアクセスできなくなります

Dドライブのジャンクションフォルダを削除すると
Zドライブのデータも削除されます

いろいろ複雑なので扱いには注意しましょう


次にスタートアップに登録しておくバッチに元データのコピーをするコマンドを追加します
ジャンクションで作成したフォルダの中身はRAMDisk内ですので
コピー元フォルダは名前を変更したフォルダになるので注意
ramdisk_inst30.jpg

これで準備完了
ジャンクションを設定した「a」「b」「d」フォルダはRAMDiskから読み込まれることになります

どのくらい速度が上がったのか計測
ゲームのスタートボタンを押した直後から
ローディングが終わってBGMが鳴り始めるまでの時間を計ってみました
ramdisk_inst31.jpg

HDDから読み込み:59秒
ジャンクションしてRAMDiskから読み込み:42秒

ジャンクションするフォルダによってはもっと速くなるかもしれないけど
10GB中3.5GBをRAMDiskにすると大体このくらい速くなるよって目安にどうぞ




スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL :
コメント :
パスワード :
秘密 : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright&template: himeco
  • まとめ
  • 上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。