Ich habe immer gedacht, dass ein guter Vermögensverwalter mehrere Betriebsmodi haben sollte. Diese Modi wären höchstwahrscheinlich separate Quellmodule, die einer gemeinsamen Schnittstelle angehören. Die zwei grundlegenden Betriebsarten wären:
- Produktionsmodus - Alle Assets sind lokal und werden von allen Metadaten befreit
- Entwicklungsmodus - Tests werden in einer Datenbank (z. B. MySQL usw.) mit zusätzlichen Metadaten gespeichert. Die Datenbank wäre ein zweistufiges System mit einer lokalen Datenbank, die eine gemeinsam genutzte Datenbank zwischenspeichert. Ersteller von Inhalten können die gemeinsam genutzte Datenbank bearbeiten und aktualisieren. Aktualisierungen werden automatisch an Entwickler- / QS-Systeme weitergeleitet. Es sollte auch möglich sein, Platzhalterinhalte zu erstellen. Da sich alles in einer Datenbank befindet, können Abfragen in der Datenbank durchgeführt und Berichte erstellt werden, um den Status der Produktion zu analysieren.
Sie benötigen ein Tool, mit dem Sie alle Assests aus der freigegebenen Datenbank abrufen und den Produktionsdatensatz erstellen können.
In meinen Jahren als Entwickler habe ich so etwas noch nie gesehen, obwohl ich nur für eine Handvoll Unternehmen gearbeitet habe, so dass meine Ansicht nicht wirklich repräsentativ ist.
Aktualisieren
OK, einige negative Stimmen. Ich werde diesen Entwurf erweitern.
Erstens brauchen Sie keine Factory-Klassen, denn wenn Sie haben:
TextureHandle tex = pRm->getResource<Texture>( "test.otx" );
Sie kennen den Typ, machen Sie also einfach:
TextureHandle tex = new TextureHandle ("test.otx");
Aber was ich oben versucht habe zu sagen, ist, dass Sie sowieso keine expliziten Dateinamen verwenden würden. Die zu ladende Textur wird durch das Modell bestimmt, auf dem die Textur verwendet wird. Es könnte sich um einen 32-Bit-Integer-Wert handeln, der für die CPU viel einfacher zu handhaben ist. Im Konstruktor für TextureHandle hätten Sie also:
if (texture already loaded)
update texture reference count
else
asset_stream = new AssetStream (resource_id)
asset_stream->ReadBytes
create texture
set texture ref count to 1
AssetStream verwendet den Parameter resource_id, um den Speicherort der Daten zu ermitteln. Die Vorgehensweise hängt von der Umgebung ab, in der Sie ausgeführt werden:
In der Entwicklung: Der Stream sucht in einer Datenbank nach der ID (z. B. mit SQL), um einen Dateinamen zu erhalten, und öffnet die Datei. Die Datei kann lokal zwischengespeichert oder von einem Server abgerufen werden, wenn die lokale Datei nicht vorhanden ist oder vorhanden ist veraltet.
In Release: Der Stream sucht die ID in einer Schlüssel- / Wertetabelle, um einen Versatz / eine Größe in einer großen, gepackten Datei (wie der WAD-Datei von Doom) zu erhalten.