Linux oyunlarında varlık dosyalarını bulma


11

Geliştirme sırasında ve bir sürümde 3B modelleri, dokuları, sesleri ve komut dosyalarını (örn. Lua dosyaları) depolamanın olağan yöntemi nedir? Özellikle C ++ 'da arkadaşlarımla bir oyun geliştiriyorum; prototip oluşturma aşamasında sadece GIMP ile C başlığı olarak kaydedilen tek bir dokuya sahiptik, ancak elbette bu yaklaşım iyi ölçeklenmiyor ve derleme sürelerini büyük ölçüde artırıyor.

Windows altında, alışılmış uygulama onları %PROGRAMFILES%oyunun yürütülebilir olduğu alt dizine dökmek , belki de uygun bir ağaç yapısında düzenlemek. Ancak, Linux'ta resim çok daha karmaşık görünüyor. Yürütülebilir dosyalar genellikle /usr/binbulunurken, uygulamalar diğer dosyalarını da saklar ve /usr/shareçalıştırılamayanları koymak son derece kötü bir uygulama olacağını düşünüyorum /usr/bin. Ancak, geliştirme sırasında dizin yapısı tamamen farklıdır.

İki farklı olası çözüm bulabilirim:

  • Yürütülebilir dosyanın varlık dosyalarını kendisine göre bulmasına ve oyunu yüklemesine izin verin /opt. Sonra sembolik bağları yerleştirin /usr/bin. Geliştirme sırasında, varlıkların ikili dosyalara göreli yolu, dağıtım sırasındakiyle aynıdır.
  • Dosyalara önişlemci sembolü olarak tanımlanan mutlak bir yolla erişin. Yapım sürecinin (bizim durumumuzda, ham Makefile) uygun olduğu şekilde tanımlamasına izin verin.

Her iki yaklaşım da bana şu ya da bu açıdan biraz yetersiz görünüyor. Oyun geliştirme endüstrisinde bununla ilgili ortak bir uygulama var mı?

Bulabildiğim tek alakalı sorular , kurulu / disk oyun varlıklarının konumunu ve kaynaklar ve varlıklar için Dizin yollarını belirlemekti , ancak bunlar "kaynak ağaçtan" ​​çalıştırma sorununu çözmedi.

Yanıtlar:


6

../lib/programnameveya ../share/programname/, göreli dirname(3)bir argv[0]varlık mimarisi bağımlı olup olmadıklarını bağlı.

Bu, diğer tüm Linux (ve Mac Unix olmayan) programlarla aynı standarttır.

"Kaynak ağaçtan" ​​kaçmak istiyorsanız,

  1. Gerçek bir derleme sistemi almalı ve derleme yapmalısınız, çünkü asla "kaynak ağaçtan kaçmazsınız", derleme sisteminizin bir yere tükürdüğü derlenmiş bir yürütülebilir dosya çalıştırırsınız ve varlıkları kolayca kopyalayabilir veya birbirine bağlayabilir.
  2. Yapı sisteminiz çok berbatsa, .ya da ./assetsvb.'yi de kontrol edin ve daha sonra geliştirme aşamasında yeni bir yapı sistemine bakın.

Happy_emi'nin aksine, bunu kesinlikle ortam değişkenleriyle geçersiz kılmanın bir yolunu sağlamalısınız. Tam olarak amaçlandıkları şey budur.


Ayrıca Linux masaüstlerinde standart olan bu ortam değişkenlerini de göz önünde bulundurun: standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
bogglez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.