Linuxゲームでのアセットファイルの検索


11

開発中およびリリース中に3Dモデル、テクスチャ、サウンド、スクリプト(Luaファイルなど)を保存する通常の方法は何ですか?私は主にC ++で友達とゲームを開発しています。プロトタイピングフェーズでは、GIMPでCヘッダーとして保存された単一のテクスチャーしかありませんでしたが、もちろん、このアプローチは適切にスケーリングされず、コンパイル時間が大幅に増加します。

Windowsでは、通常%PROGRAMFILES%、ゲームの実行可能ファイルが存在するサブディレクトリにそれらをダンプし、おそらく適切なツリー構造に配置します。ただし、Linuxでは、状況ははるかに複雑に見えます。実行可能ファイルは通常に常駐しますが/usr/bin、アプリケーションは他のファイルをに格納します。/usr/share非実行可能ファイルをに配置するのは非常に悪い習慣だと思います/usr/bin。ただし、開発中のディレクトリ構造はまったく異なります。

私は2つの異なる可能な解決策を思いつくことができました:

  • 実行可能ファイルにそれ自体に関連するアセットファイルを見つけさせ、ゲームをにインストールし/optます。次に、へのシンボリックリンクを配置し/usr/binます。開発中、アセットのバイナリへの相対パスは、デプロイメント時と同じです。
  • プリプロセッサシンボルとして定義されている絶対パスでファイルにアクセスします。ビルドプロセス(この場合はraw Makefile)が適切に定義できるようにします。

どちらの方法も、ある面では私にはやや無関心に思えます。これについてゲーム開発業界で一般的な慣習はありますか?

私は見つけることができる唯一の関連質問がされたディスクのゲームアセットにインストール/の位置を決定し、資源や資産のディレクトリ・パスが、それらは、「ソースツリーから」実行中の問題に対応していませんでした。

回答:


6

../lib/programnameまたは../share/programname/、に対してdirname(3)argv[0]資産は、アーキテクチャに依存されているかどうかに応じて、。

これは、他のすべてのLinux(およびほとんどの非Mac Unix)プログラムと同じ標準です。

「ソースツリー」から実行したい場合は、

  1. 実際のビルドシステムを取得してビルドを行う必要があります。「ソースツリーから実行」することはなく、ビルドシステムがどこかに吐き出すビルドされた実行可能ファイルを実行し、アセットを同じ場所に簡単にコピーまたはリンクできます。
  2. ビルドシステムが不安定すぎる場合は、.orやもチェックして./assets、その後の開発で新しいビルドシステムを調べます。

happy_emiによるとは異なり、環境変数でこれをオーバーライドする方法を必ず提供する必要があります。それはまさに彼らが意図されているものです。


また、Linux上で標準装備され、これらの環境変数は、デスクトップ検討:standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
bogglez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.