Wie AOT verwendet wird
Suika3 unterstützt die Ahead-of-Time-(AOT)-Kompilierung von Skripten. Das heißt, eine App kann vollständig nativen Code ausführen, statt als Bytecode-Interpreter zu laufen.
Der Befehl suika3-aotcomp konvertiert .ray-Skripte in ANSI-C-Quellcode.
Die erzeugte Datei library.c wird mit der gesamten Engine kompiliert.
1. main.ray anpassen
Da die Skripte in nativen Code kompiliert werden, ist das Laden der Runtime-Bibliothek nicht mehr erforderlich.
Öffne main.ray und kommentiere die loadLibrary()-Aufrufe aus.
Beispiel:
// Suika.loadPlugin("system")
Bitte beachte, dass du Suika.loadPlugin() nicht außerhalb der Datei
main.ray aufrufen solltest.
2. C-Quellcode erzeugen
Um Skripte in C-Quellcode zu kompilieren, führe aus:
suika3-aotcomp main.ray script1.ray script2.ray ...
Dieser Befehl erzeugt die folgende Datei:
library.c
Die erzeugte Datei enthält die kompilierte Skriptbibliothek.
[!TIPS] Gib in der Befehlszeile alle Skriptdateien an, einschließlich
main.ray.
Beispiel:
suika3-aotcomp main.ray system.ray scenario1.ray scenario2.ray
--
3. Die Engine-Bibliothek ersetzen
Kopiere die erzeugte Datei library.c in den Quellbaum der Engine:
external/PlayfieldEngine/src/library.c
Überschreibe die vorhandene Datei.
4. Die Engine bauen
Baue das Suika3-Projekt wie gewohnt mit CMake.
Die kompilierten Skripte werden nun in das Engine-Binary eingebunden.
iOS
Um statische Binärdateien zu erstellen, gib ein:
cmake --preset ios-device
cmake --preset ios-simulator
cmake --build --preset ios-device
cmake --build --preset ios-simulator
Danach kopiere die statischen Bibliotheken in dein iOS-Projekt:
- Kopiere
build-ios-device/libsuika3.anachSuika3.xcframework/ios-arm64/libsuika3.a - Kopiere
build-ios-simulator/libsuika3.anachSuika3.xcframework/ios-arm64_x86_64-simulator/libsuika3.a
Überschreibe die vorhandene Datei.
Android
Um geteilte Binärdateien zu erstellen, gib ein:
cmake --preset android-arm64
cmake --preset android-arvm7
cmake --preset android-x86
cmake --preset android-x86_64
cmake --build --preset android-arm64
cmake --build --preset android-arvm7
cmake --build --preset android-x86
cmake --build --preset android-x86_64
Danach kopiere die geteilten Bibliotheken in dein Android-Projekt:
- Kopiere
build-android-arm64/libsuika3.sonachapp/src/main/jniLibs/arm64-v8a/libplayfield.so - Kopiere
build-android-armv7/libsuika3.sonachapp/src/main/jniLibs/armeabi-v7a/libplayfield.so - Kopiere
build-android-x86/libsuika3.sonachapp/src/main/jniLibs/x86/libplayfield.so - Kopiere
build-android-x86_64/libsuika3.sonachapp/src/main/jniLibs/x86_64/libplayfield.so
Überschreibe die vorhandene Datei.
HarmonyOS NEXT
Um geteilte Binärdateien zu erstellen, gib ein:
cmake --preset openharmony-arm64
cmake --preset openharmony-x86_64
cmake --build --preset openharmony-x86
cmake --build --preset openharmony-x86_64
Danach kopiere die geteilten Bibliotheken in dein HarmonyOS-NEXT-Projekt:
- Kopiere
build-openharmony-arm64/libsuika3.anachentry/libs/arm64-v8a/libsuika3.a - Kopiere
build-openharmony-x86_64/libsuika3.anachentry/libs/x86_64/libsuika3.a
Überschreibe die vorhandene Datei.
Unity Plugin
Um geteilte Binärdateien zu erstellen, gib ein:
cmake --preset unity-win64
cmake --build --preset unity-win64
Danach kopiere die Bibliotheken in dein Unity-Projekt:
- Kopiere
build-unity-win64/libsuika3.dllnachAssets/Plugins/x86_64/libplayfield.dll
Überschreibe die vorhandene Datei.
Ergebnisse
Die Skripte werden direkt in die ausführbare Datei eingebettet, wodurch Folgendes erreicht wird:
- Kein JIT (für Store-Reviews)
- Kein Laden von Skripten zur Laufzeit
- Schnellere Startzeit