Run init.ds from engineInit once every other system is ready

assets/init.ds is compiled and packed as init.dsb like any other script, and
engineInit() runs it as the very last init step - after scriptInit() and
sceneInit(), right before the initial scene is set - so it's free to use any
engine system (display, audio, save, rpg, ui, scenes, ...) without having to
special-case startup ordering. A syntax error or runtime failure in init.ds
is fatal, same as every other errorChain()'d init step.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
YourWishesandClaude Sonnet 5 committed 2026-10-14 22:33:50 -05:00
1 parent a0294aae98
commit 00b73050ad
2 files changed
+7

No files matched your search

+1
View File
@@ -0,0 +1 @@
// Entry point, run once by the engine after every other system is ready.
+6
View File
@@ -56,6 +56,12 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) {
errorChain(scriptInit()); errorChain(scriptInit());
errorChain(sceneInit()); errorChain(sceneInit());
// Runs once every other system is ready, so init.ds can use any of them.
scripterror_t scriptInitError;
if(scriptRuntimeRunFile(SCRIPT.runtime, "init.dsb", false, &scriptInitError) != SCRIPT_OK) {
errorThrow("init.ds failed: %s", scriptInitError.message);
}
consolePrint("Engine initialized"); consolePrint("Engine initialized");
#ifdef DUSK_ASSERTIONS_FAKED #ifdef DUSK_ASSERTIONS_FAKED