ゲームシステム講座4回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
ゲームなどのアプリケーションを配布するとき
悩みの種となるのがファイルデータの取り扱いです
ディレクトリにそのままファイルを放り込んだままですと
ユーザーが全員良心的な人であればいいのですが、コピーされ...
ゲームのデータに借り物のデータなどがある場合は著作権上大...
これは配布する側がユーザーに簡単に生のファイルデータを取...
そこでディレクトリファイルをまとめてパッケージ化(あるい...
かと言ってzipなどの誰でも解凍できる既知のファイルフォーマ...
既知でないフォーマットで作成するのが一番だと思います
今回使うパッケージファイルのフォーマットは次のようになっ...
(オリジナルフォーマットと言い張るつもりはありません、誰...
○ヘッダー部
・ ファイルのフォーマットを表す文字
・ 格納されているファイルの個数
○データ部
・ 各ファイルのファイル名
・ 各ファイルのファイルサイズ
・ 各ファイルのデータ
・ 各ファイルのデータ末尾
&ref(package.jpg);
指定のディレクトリ内の全てのファイルをパッケージファイル...
そのファイルからバイナリデータを取得します
なお、階層情報を保ったままの相対パスをファイル名としてい...
今回の全ファイル
zip:&ref(package.zip);
具体的な実装に関しては
・package.h
・package.cpp
を見てもらいたいと思います
使い方は次のようになります
main.cpp
#include "package.h"
int main(){
Package package;
// 指定のディレクトリをパッケージ化する
package.CreatePackage(_T("media"),_T("media.pak"));
// パッケージ化したファイルを開く
package.OpenPackage(_T("media.pak"));
// パッケージファイルの中のファイルデータを取得する
FileData fd;
// 階層構造の情報もパッケージ化したときの状態なので辿る
package.GetFileData(_T("media/txt/test.txt"),&fd);
// 先頭データへのポインタ取得
byte* data = fd.Ptr;
printf("%s\n",data);
return 0;
}
実行するとmediaディレクトリのファイルをまとめたmedia.pak...
&ref(pak.jpg);
作成後、パッケージファイルの読み取りにはファイルマッピン...
ファイルマッピングはファイルをページングする(ファイルデ...
SIZE(20){ COLOR(#ffaa00){ファイルデータを(仮想的に)連続...
つまり、ファイルポインタを使わずに直接ポインタでファイル...
今回のように複数のファイルをまとめたパッケージファイルの...
指定のファイルデータの生データをポインタで取り出せるので...
ファイルマッピングの実装は
・memorymappedfile.h
・memorymappedfile.cpp
にあります
特にDirectXの関数では画像データ等のバイナリのデータの先頭...
テクスチャ等のリソースを確保できる関数が用意されているた...
実行結果は次のようになります
テキストファイルの生データを取得し、表示しているだけです
&ref(exe.jpg);
最近ではバイナリデータを分解するようなツールも出てきてる...
本来ならば、さらにパッケージファイルの圧縮や暗号化をする...
ただそのレベルまでやる必要があるのは商用レベルのゲームだ...
vote(理解できた(^ω^)[3],なんぞこれーΣ(゚д゚lll)[0],ちょっと...
終了行:
ゲームなどのアプリケーションを配布するとき
悩みの種となるのがファイルデータの取り扱いです
ディレクトリにそのままファイルを放り込んだままですと
ユーザーが全員良心的な人であればいいのですが、コピーされ...
ゲームのデータに借り物のデータなどがある場合は著作権上大...
これは配布する側がユーザーに簡単に生のファイルデータを取...
そこでディレクトリファイルをまとめてパッケージ化(あるい...
かと言ってzipなどの誰でも解凍できる既知のファイルフォーマ...
既知でないフォーマットで作成するのが一番だと思います
今回使うパッケージファイルのフォーマットは次のようになっ...
(オリジナルフォーマットと言い張るつもりはありません、誰...
○ヘッダー部
・ ファイルのフォーマットを表す文字
・ 格納されているファイルの個数
○データ部
・ 各ファイルのファイル名
・ 各ファイルのファイルサイズ
・ 各ファイルのデータ
・ 各ファイルのデータ末尾
&ref(package.jpg);
指定のディレクトリ内の全てのファイルをパッケージファイル...
そのファイルからバイナリデータを取得します
なお、階層情報を保ったままの相対パスをファイル名としてい...
今回の全ファイル
zip:&ref(package.zip);
具体的な実装に関しては
・package.h
・package.cpp
を見てもらいたいと思います
使い方は次のようになります
main.cpp
#include "package.h"
int main(){
Package package;
// 指定のディレクトリをパッケージ化する
package.CreatePackage(_T("media"),_T("media.pak"));
// パッケージ化したファイルを開く
package.OpenPackage(_T("media.pak"));
// パッケージファイルの中のファイルデータを取得する
FileData fd;
// 階層構造の情報もパッケージ化したときの状態なので辿る
package.GetFileData(_T("media/txt/test.txt"),&fd);
// 先頭データへのポインタ取得
byte* data = fd.Ptr;
printf("%s\n",data);
return 0;
}
実行するとmediaディレクトリのファイルをまとめたmedia.pak...
&ref(pak.jpg);
作成後、パッケージファイルの読み取りにはファイルマッピン...
ファイルマッピングはファイルをページングする(ファイルデ...
SIZE(20){ COLOR(#ffaa00){ファイルデータを(仮想的に)連続...
つまり、ファイルポインタを使わずに直接ポインタでファイル...
今回のように複数のファイルをまとめたパッケージファイルの...
指定のファイルデータの生データをポインタで取り出せるので...
ファイルマッピングの実装は
・memorymappedfile.h
・memorymappedfile.cpp
にあります
特にDirectXの関数では画像データ等のバイナリのデータの先頭...
テクスチャ等のリソースを確保できる関数が用意されているた...
実行結果は次のようになります
テキストファイルの生データを取得し、表示しているだけです
&ref(exe.jpg);
最近ではバイナリデータを分解するようなツールも出てきてる...
本来ならば、さらにパッケージファイルの圧縮や暗号化をする...
ただそのレベルまでやる必要があるのは商用レベルのゲームだ...
vote(理解できた(^ω^)[3],なんぞこれーΣ(゚д゚lll)[0],ちょっと...
ページ名: