Bevor ein Unreal-Projekt an Benutzer ausgegeben werden kann, muss es ordnungsgemäß paketiert werden. Paketierung sorgt dafür, dass sämtlicher Code und alle Inhalte stets aktuell sind und das richtige Format haben, um auf der gewünschten Zielplattform ausgeführt zu werden.
Während des Paketierungsvorgangs werden mehrere Schritte durchgeführt. Der projektspezifische Quellcode wird zuerst kompiliert. Sobald der Code kompiliert ist, werden die erforderlichen Inhalte in ein Format konvertiert, das von der Zielplattform verwendet werden kann. Anschließend werden der kompilierte Code und der gecookte Inhalt zu einem vertriebsfähigen Dateiensatz gebündelt, z. B. zu einem Installationsprogramm.
Unter dem Hauptmenü Datei gibt es eine Option namens Paketprojekt mit einem Untermenü. Dieses Untermenü hält eine Liste aller unterstützten Plattformen bereit, für die Ihr Projekt paketiert werden kann.
Für die Paketierung auf Android stehen mehrere Auswahlen bereit. Sehen Sie sich die Seite Android Reference für weitere Informationen an.
Es gibt auch einige Fortschrittliche Optionen, die Sie vor dem Verpacken festlegen können.
Voreinstellung einer Standard-Karte für ein Spiel
Bevor Sie Ihr Spiel verpacken, müssen Sie zunächst eine Standardkarte des Spiels, das geladen wird, wenn Ihr gepacktes Spiel startet. Wenn Sie keine Karte einrichten und ein leeres Projekt verwenden, sehen Sie nur einen schwarzen Bildschirm, wenn das paketierte Spiel startet. Sollten Sie eine der Kartenvorlagen verwendet haben, wie z. B. die First-Person- oder Third-Person-Vorlage, wird die Startkarte geladen.
Um die Standardkarte des Spiels festzulegen, klicken Sie auf Bearbeiten > Projekteinstellungen > Karten und Modi im Hauptmenü des Editors:
Pakete erstellen
Um ein Projekt für eine bestimmte Plattform zu verpacken, klicken Sie auf Datei > Projekt verpacken > [Plattformname] im Hauptmenü des Editors:
Es erscheint ein Dialog, in dem Sie das Zielverzeichnis auswählen können. Bei erfolgreicher Paketierung enthält dieses Verzeichnis dann das paketierte Projekt.
Das Bestätigen des Zielverzeichnisses leitet dann den eigentlichen Prozess ein, der das Projekt für die ausgewählte Plattform paketiert. Da die Paketierung äußerst zeitaufwändig sein kann, erfolgt dieser Vorgang im Hintergrund, sodass Sie den Editor weiter verwenden können. Eine Statusanzeige wird in der rechten unteren Ecke des Editors eingeblendet, um den Fortschritt anzuzeigen:
Teil der Statusanzeige ist auch eine Schaltfläche zum Abbrechen des Paketierungsvorgangs. Darüber hinaus kann die Verknüpfung "Show Log" verwendet werden, um erweiterte Ausgabe-Protokollinformationen anzuzeigen. Diese sind nützlich, um herauszufinden, was bei einem gescheiterten Paketierungsprozess fehlgeschlagen ist, oder um Warnungen zu erfassen, die auf potenzielle Bugs im Produkt hinweisen könnten:
Die wichtigsten Protokollmeldungen, etwa Fehler und Warnungen, werden im regulären Meldeprotokollfenster aufgezeichnet:
Wenn diese Fenster nicht sichtbar sind, können sie über die Option Fenster > Entwicklertools > Outputprotokoll / Nachrichtenprotokoll zugegriffen werden.
Vertrieb
Um ein iOS- oder Android-Spiel im App Store oder Google Play Store zu veröffentlichen, müssen Sie Ihr Paket im Vertriebsmodus erstellen. Gehen Sie dazu auf die Option Verpackungseinstellungen im Menü Verpackung und klicken Sie das Kästchen Verteilung.
Auf iOS müssen Sie ein Vertriebszertifikat sowie eine MobileProvision auf Apples Entwickler-Website erstellen. Installieren Sie das Distributionszertifikat auf die gleiche Weise wie Ihr Entwicklungszertifikat und benennen Sie Ihre Distributionsbereitstellung mit einem "Distro_"-Präfix neben Ihrer anderen (so hätten Sie beide Distro_MyProject.mobileprovision und MyProject.mobileprovision).
Unter Android müssen Sie einen Schlüssel erstellen, um die .apk zu unterzeichnen Datei und geben Sie unseren Build-Tools einige Informationen mit einer Datei namens SigningConfig.xml. Diese Datei befindet sich im installierten Engine-Verzeichnis (Engine/Build/Android/Java/). Sobald Sie diese Datei bearbeiten, wird dies auf alle Ihre Projekte angewendet. Sie können diese Datei jedoch in das Verzeichnis Build/Android/ des Projekts kopieren (ohne Unterverzeichnis Java/) und wird nur für dieses Projekt verwendet. Instruktionen zur Erstellung des Schlüssels und zum Ausfüllen der Datei finden Sie in derselben.
Erweiterte Einstellungen
Durch Klicken von Datei > Projekt verpacken > Verpackungseinstellungen … oder Bearbeiten > Projekteinstellungen > Verpackung im Hauptmenü werden Ihnen einige erweiterte Konfigurationsoptionen für die Verpackungsfunktion angezeigt.
Gegenwärtig umfassen diese:
| Option | Beschreibung |
|---|---|
Build-Konfiguration | Die Build-Konfiguration, mit der Ihr codebasiertes Projekt kompiliert werden soll. Um ein Code-Projekt zu debuggen, wählen Sie DebugGame. Für die meisten anderen Entwicklungen mit minimalem Debugging-Support, aber besserer Performance, wählen Sie Development. Für den endgültige Auslieferungs-Build, der weder Debugging-Informationen noch debugging-orientierte Funktionen (wie das Zeichnen von Debug-Formen oder die Ausgabe von Debug-Meldungen auf dem Bildschirm) enthält, wählen Sie Shipping. Beachten Sie, dass bei reinen Blueprint-Projekten die Option, einen DebugGame-Build zu erstellen, nicht zur Verfügung steht. |
Staging-Verzeichnis | Das Verzeichnis, das Ihren paketierten Build enthält. Dieses wird automatisch aktualisiert, sobald Sie ein anderes Verzeichnis bei der Auswahl des Zielverzeichnisses wählen. |
Vollständiger Neuaufbau | Ob Ihr gesamter Code kompiliert werden soll. Bei Deaktivierung wird nur der geänderte Code kompiliert. Dies kann den Paketierungsprozess beschleunigen. Bei Builds für den Vertrieb sollten Sie immer einen vollständigen Rebuild durchführen, um sicherzustellen, dass nichts fehlt oder veraltet ist. Diese Option ist standardmäßig aktiviert. |
Pak-Datei verwenden | Ob Ihre Projekt-Assets als einzelne Dateien oder als Paket verpackt werden sollen. Bei Aktivierung werden sämtliche Assets in einer einzigen .pak-Datei zusammengefasst, anstatt alle einzelnen Dateien herauszukopieren. Sollte Ihr Projekt viele Asset-Dateien beinhalten, kann die Nutzung einer Pak-Datei den Vertrieb erleichtern, da sie die Anzahl der zu übertragenden Dateien reduziert. Diese Option ist standardmäßig deaktiviert. |
Chunks generieren | Ob .pak-Datei-Chunks erzeugt werden sollen, welche für Streaming-Installationen eingesetzt werden können. |
Erstellen Sie HTTP-Chunk-Installationsdaten | Ob Daten für HTTP-Chunk-Installationsprogramme erzeugt werden sollen. Dies gestattet das Hosten dieser Daten auf einem Webserver, um zur Laufzeit installiert zu werden. |
HTTP-Chunk-Installationsdatenverzeichnis | In diesem Verzeichnis werden die Daten installiert, sobald sie erstellt sind. |
HTTP-Chunk-Installationsdatenversion | Dies ist der Versionsname für HTTP-Chunk-Installationsdaten. |
Installationsprogramm für erforderliche Komponenten einschließen | Gibt an, ob Installationsprogramme für die Voraussetzungen von Spielepaketen, wie z. B. weiterverteilbare Betriebssystem-Komponenten, enthalten sein sollen. |
Verzeichnisse zum ständigen Kochen | Die Liste der Verzeichnisse mit Dateien, die immer cooked werden sollen. Standardmäßig erkennt die Paketierungsfunktion automatisch sämtliche Inhalte, auf die Ihr Spiel verweist, und cooked diese. Auf einige erforderliche Inhalte kann nicht verwiesen werden, wie etwa Texturen für eine benutzerdefinierte Slate-UI. Verzeichnisse, in denen sich solche Inhalte finden, sollten hier gelistet werden, um sie ebenfalls in das Paket aufzunehmen. |
Signierung und Verschlüsselung
Mit der Veröffentlichung von Unreal Engine 4.22 haben wir den Industriestandard OpenSSL-Bibliothek für Desktop-Plattformen (Windows, Mac und Linux) integriert.
Bei Verteilung in einem versandten Produkt, können .Pak-Dateien signiert oder verschlüsselt werden, normalerweise um das Extrahieren oder Manipulieren von Daten zu verhindern. Um die kryptografischen Einstellungen Ihres Projekts zu aktivieren, zu deaktivieren oder anzupassen, gehen Sie zum Menü Projekteinstellungen und finden Sie den Abschnitt Crypto.
Die folgenden Einstellungen stehen in diesem Menü zur Verfügung:
| Option | Beschreibung |
|---|---|
Pak INI-Dateien verschlüsseln | Verschlüsselt alle |
Pak-Index verschlüsseln | Verschlüsselt die |
UAsset-Dateien verschlüsseln | Verschlüsselt die |
Assets verschlüsseln | Verschlüsselt alle Assets innerhalb der Beachten Sie, dass diese Einstellung eine messbare Auswirkung auf die Datei-E/A-Performance zur Laufzeit hat und die Menge an Entropie in den endgültigen Datenpaketen erhöht, wodurch das Patching-System für den Vertrieb weniger effizient wird. |
Pak-Signierung aktivieren | Aktiviert oder deaktiviert die Signierung von .pak-Dateien. |
Zusätzlich können Schlüssel zum Signieren oder Verschlüsseln eingerichtet oder gelöscht werden.
Content-Cooking
Als Entwickler möchte man bei der Iteration neuer oder modifizierter Spielinhalte nicht immer den langwierigen Prozess durchlaufen, alles in das Staging-Verzeichnis zu paketieren und dann von dort aus zu starten. Es ist daher möglich, den Inhalt nur für eine bestimmte Zielplattform vorzubereiten, ohne ihn zu verpacken, indem Sie auf Datei > Cook-Inhalt > [Plattformname] klicken.
Beachten Sie, dass diese Funktion den Inhalt im lokalen Entwickler-Arbeitsbereich Ihres Projekts aktualisiert und keine Assets in das Staging-Verzeichnis kopiert. Sie können Ihr Spiel direkt aus Ihrem lokalen Entwickler-Arbeitsbereich heraus ausführen, um rasch zu iterieren.
Optimierung von Ladezeiten
Kurze Ladezeiten sind für Open-World-Spiele unverzichtbar, aber in jeder Art Spiel ein Plus. Die Unreal Engine bietet diverse Methoden, um die Ladezeit Ihres Projekts während des Paketierungsprozesses zu optimieren. Hier sind einige empfohlene Praktiken, um die Ladezeit in Ihren Spielen zu verkürzen. Informationen zum Verpacken Ihres Projekts finden Sie im Abschnitt Packaging and Cooking Games.
Verwendung des Event Driven Loader (EDL) und des Asynchronous Loading Thread (ALT)
Asynchroner Ladethread (ALT) ist standardmäßig deaktiviert, kann aber im Menü „Projekteinstellungen“ im Abschnitt „Engine > Streaming“ aktiviert werden. Bei modifizierten Engines können Anpassungen erforderlich sein, aber im Allgemeinen sollte ALT die Ladegeschwindigkeit verdoppeln, auch bei Spielen mit "up-front"-Ladezeiten und Spielen, die konstant Daten streamen. Das ALT funktioniert, indem Serialisierungs- und Nachladecode gleichzeitig auf zwei separaten Threads ausgeführt werden. Daher wird die Anforderung hinzugefügt, dass
UObjectKlassenkonstruktoren,PostInitPropertiesFunktionen undSerialisierenFunktionen in Ihrem Spielcode müssen threadsicher sein. Bei Aktivierung verdoppelt ALT die Ladegeschwindigkeit. Weitere Informationen zur Verwendung asynchroner Lademethoden (in C++) finden Sie auf der Seite Asynchronous Asset Loading.Eventgesteuerter Loader ist standardmäßig aktiviert, kann aber im Menü „Projekteinstellungen“ im Abschnitt „Engine > Streaming“ deaktiviert werden. Bei den meisten Projekten verkürzt der EDL die Ladezeiten um die Hälfte. Der EDL ist stabil und kann auf frühere Versionen der Unreal Engine rückportiert oder für modifizierte oder angepasste Engine-Versionen angepasst werden.
Komprimieren Ihrer .pak-Datei
Anwendung von
.pakUm die Dateikomprimierung in Ihrem Projekt zu aktivieren, öffnen Sie die Projekteinstellungen und suchen Sie den Abschnitt „Verpackung“. Öffnen Sie in diesem Abschnitt den erweiterten Teil von "Packaging" und aktivieren Sie das erscheinende Kästchen "Create compressed cooked packages".Die meisten Plattformen bieten keine automatische Komprimierung, und die Komprimierung Ihrer
.pakDateien verkürzen die Ladezeiten, es sind jedoch einige Sonderfälle zu berücksichtigen:
| Plattform | Empfehlung |
|---|---|
Dampf | Steam komprimiert Dateien, während diese von den Nutzern heruntergeladen werden. Anfängliche Ladezeiten werden also nicht dadurch beeinträchtigt, dass die .pak-Datei Ihres Spiels komprimiert ist. Allerdings funktioniert das differenzielle Patch-System von Steam besser mit unkomprimierten Dateien. Komprimierte .pak-Dateien benötigen weniger Speicherplatz auf dem System des Kunden, dafür dauert das Herunterladen beim Patchen länger. |
Oculus | Aktivieren Sie keine Komprimierung des |
Anordnung Ihrer pak-Datei
Ein wohlgeordnetes .pak Datei ist entscheidend für die Reduzierung der Ladezeiten. Um Ihnen bei der Bestellung von .pak zu helfen Um die Datei optimal zu verwalten, bietet UE4 eine Reihe von Tools, mit denen Sie die Reihenfolge ermitteln können, in der Ihre Datenbestände benötigt werden, und Pakete erstellen können, die schneller geladen werden. Dieses Verfahren ähnelt vom Konzept her der profilgesteuerten Optimierung. Folgen Sie dieser Methode, um unsere .pak zu ordnen Datei:
Erstellen und starten Sie das gepackte Spiel mit der Befehlszeilenoptoin
-fileopenlog, welche die Engine veranlasst, die Reihenfolge zu protokollieren, in der sie Dateien öffnet.Gehen Sie sämtliche wichtigen Aspekte des Spiels durch. Laden Sie jedes Level, jeden spielbaren Charakter, jede Waffe, jedes Fahrzeug und so weiter. Sobald alles geladen wurde, beenden Sie das Spiel.
In Ihrem bereitgestellten Spiel gibt es eine Datei mit dem Namen
GameOpenOrder.logdas die Informationen enthält, die zur Optimierung Ihres.pak erforderlich sind Dateireihenfolge. Beispielsweise befindet sich die Datei bei Windows-Builds inWindows/(YourGame)/Build/Windows/FileOpenOrder/. Kopieren Sie diese Datei in Ihr Entwicklungsverzeichnis unter dem Pfad/Build/Windows/FileOpenOrder/. Auf Mac-Versionen befindet sich die Datei inMacNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/. Kopieren Sie diese Datei in Ihr Entwicklungsverzeichnis unter dem PfadBuild/Mac/FileOpenOrder/.Wenn die Protokolldatei vorhanden ist, erstellen Sie die
.pakDatei. Dies und alle zukünftigen.pakDie erstellten Dateien verwenden die in der Protokolldatei angegebene Dateireihenfolge.
In einer Produktionsumgebung sollte die Protokolldatei in die Quellcodeverwaltung eingecheckt und regelmäßig mit den Ergebnissen neuer -fileopenlog-Durchläufe, einschließlich eines letzten Durchlaufs, wenn das Spiel versandbereit ist.