DXライブラリのパスワード付きアーカイブ機能を楽に使いたかったので適当なソフト作った
前置き
はい、完全にタイトルのとおりです。
※追記:バッチ処理でやる方が楽かもしれないのでそれについてはこちらを参照のこと
そんなに大したこともしてないし、そもそも需要があるのかわからないので自己満足なんですが、一応軽く説明しておきます。
ツール自体は「ツール(EasyDxArchive)について」のところにリンクがあるので、注意書きを読んでお使いください。
DXライブラリ(DxLib)とは?
これをそもそも知らない人は別にこの記事を読んでも何も嬉しいことがないと思います。
という事で、ここでは説明を割愛します。
アーカイブ機能について
アーカイブ機能とは?
DXライブラリは、ゲームを作るのに役立つ機能を提供してくれていますが、実はライブラリそれ自体以外にもツールを提供してくれていたりします。
それらのツールは、DxLib_VC
というDXライブラリについての様々なファイルが入っているフォルダ直下のTool
というフォルダ内にまとめられています。(C:\DxLib_VC\Tool
だったり)
その中の1つがここで言うアーカイブツールです。アーカイブについてはこちらのDXライブラリ置き場でも参考にしてください。
まあ簡単に言うと、ゲームの素材(画像やら音やら)をそのままゲームのexeファイルと一緒に配布してしまうと中身が丸見えになってしまって、ネタバレが起きたり素材を流用されてしまったりとか有り得るよね、みたいな色々な要請から、簡単には中身が見えないようにするのがアーカイブ化と呼ばれるもので、これをするのがアーカイブ機能です。
そして勿論、DXライブラリはアーカイブ化した素材(つまりアーカイブファイル)も読み込むことが出来るようになっています(対応しているものなら)
パスワード付きアーカイブ機能とは?
さて、本来DXライブラリについてくるアーカイブ化ツールは、フォルダをDxaEncode.exe
にドラッグ・アンド・ドロップすればアーカイブファイルを作ってくれるという楽に使えるものです。しかし、それだと問題がある部分があります。作ったアーカイブファイルをDxaDecode.exe
にドラッグアンドドロップすると簡単に元ファイルに戻せる(デコード出来る)のです。これではアーカイブ化しようとしている要請を満たせていないですね。
そこで、DXライブラリのアーカイブ機能は、パスワードによって、DXライブラリからの素材の読み込みやデコードを制限することが出来るようになっています。
例えばパスワードにosage
を指定してアーカイブ化すると、デコード時にそのパスワードを入力しないとデコード出来ないし、DXライブラリから読む時も、ある関数でパスワードがosage
であると指定してやらないといけなくなるわけです。
パスワード付きアーカイブ機能の面倒な所
パスワード付きアーカイブ機能は便利なのですが、1つ面倒なことがあります。それは、さっき言った「フォルダをDxaEncode.exe
にドラッグ・アンド・ドロップ」するという方法が使えないということです。
パスワード付きアーカイブ機能の場合は、コマンドプロンプトからオプションをつけてコマンドとして実行する必要があります。少し面倒ですね。ファイル階層が複雑なところにあったりすると、素材がリリース間近で更新される度にこれをやるのはとても面倒です(経験談)。
今回、これを楽にできないかということで手が空いていたので、よくわからないC#を適当に叩きながら2時間位でこのツールを作ってみました(雑)
拡張子について
アーカイブ機能で製作したアーカイブファイルの拡張子はデフォルトでは.dxa
なのですが、これではDXライブラリのアーカイブファイルだと一瞬で分かる人にはわかってしまいます(結局readme等に権利関係を記載する必要がありわかってしまうじゃん、という話はあるのですが)。
そこでDXライブラリにはアーカイブファイルの拡張子を変えても読み込める機能が備わっています。プログラム内で関数から拡張子を指定してやることで.dxa
ではなくともアーカイブファイルを読み込めるようになります。
しかし、結局アーカイブツールから生成されるアーカイブファイルは*.dxa
なので、これを手作業で例えば*.osg
等と変えてやる必要があるのです。
…面倒ですよね。これもツールの側で指定して一気に変更できるようにしておきました。
ツール(EasyDxArchive)について
注意書き
C#がよくわかっていない初心者が適当に作ったツールです。
したがって、このツールを使った事による損害等についてはこちらでは責任は取りかねるということをご了承の上お使いください。どうでもいいファイルで一度試してみることを推奨します。
バグの報告などは受け付けておりますのであったら報告がいただけると嬉しいです。
また、使用に関しては自由にして頂いても構いませんが、ソフトそのものの二次配布等についてはご遠慮ください。
置き場所
こちらからダウンロードしてください。
exeファイル1つというとてもシンプルなものですので好きな所に置いて使ってください。
ツールの使い方
起動するとこんな感じのウィンドウが開きます。 それぞれのテキストボックスは、
- Program Adress :
DxaEncode.exe
のアドレスを指定 - Data Adress : アーカイブ化したいファイル(フォルダ)の置いてあるフォルダを指定
- Target File Name : アーカイブ化したいファイル(フォルダ)を指定
- Password : パスワードを指定
- Extension : 拡張子を指定(
.
は要らない)
という構成になっているので、自分がしたい設定をし、「Make Archive!」ボタンを押します。すると下に実行結果が出力されます。
アーカイブ化したファイルはData Adress
、つまりはアーカイブ化したいファイル(フォルダ)のあるフォルダに生成されます。
アーカイブ化したいファイルの有るフォルダと、アーカイブ化したいファイルとをわざわざ分けているのは、例えば同じ階層にimage
フォルダとsound
フォルダがあった場合にTarget File Name
を書き換えるだけで楽にアーカイブ化出来るようにと言う配慮なので、特に大きな意味はありません。
おしまい
というわけで締まりもクソもないですがこれで終了です。これで少しでも皆様の制作が楽になれば幸いです。