Hallo,
mehrere Spieler und Modder hier haben sich gefragt, was TPF2 seit dem Update da an stdout.txt Meldungen so rauswirft, das war doch früher nicht so viel?
Wie immer, wenn irgendwas nicht so richtig läuft warte ich auf keine UG Erklärung, sondern hol da mal meinen Werkzeugkasten raus.
Ich kann ausschließen, das CommonAPI2 der Grund für das ganze ist, aber es bietet mir halt die Möglichkeit Teile des Code umzuändern.
Es gibt da eigentlich zwei interessante Funktionen:
lua::FunctionLoader::Reload
lua::FunctionLoader::Use
Über die inneren Aufbau braucht man sich eigentlich nicht viel Gedanken machen, hmm.
1. Bekomme ich die UG Console auch ohne Debug Modus Einstellung aktiviert
Ja, aber warum sehe ich trotzdem CommonAPI2s Modifer in der stdout.txt
2. Akt:
Also lua::FunctionLoader::Reload angeschaut, wird nur einmal im Code verzweigt zu:
if (ThreadRichtig && (GetGlobalSettings() + IdFuerDebugMode) && StatischeFunktion(KonstanteZahl)) {
lua::FunctionLoader::Reload(vieleParameter)
}
lua::FunctionLoader::Use(mehrParameter)
Hmm, schauen wir mal was wir da so neu laden:
Wenn ich dann ne Konstruktion bauen will passiert das hier:
lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
[snip gekürzt, zu viel game res climate temperate.clima.lua]
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res construction station/rail/modular_station/modular_station.con_template lua_FunctionLoader_Reload_Hook:
game res construction station/rail/modular_station/modular_station.con TPFLUA_RenameLuaState: luaRef* 0x7ffef615ad80 Construction Thread
[snip]
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua commonapi2.init 20230316
commonapi2.ui: Loading commonapi2.ui interface
LUA_SetEventCallback 0x7f6e001a3550
eis_os_linedestinationpatcher: Adding modifier
commonapi2.init 20230316
commonapi2.ui: Loading commonapi2.ui interface
LUA_SetEventCallback 0x7f6e1c0bca50
eis_os_linedestinationpatcher: Adding modifier
commonapi2.init 20230316
commonapi2.ui: Loading commonapi2.ui interface
LUA_SetEventCallback 0x7f6e342184d0
eis_os_linedestinationpatcher: Adding modifier
lua_FunctionLoader_Reload_Hook:
game res climate temperate.clima.lua commonapi2.init 20230316
commonapi2.ui: Loading commonapi2.ui interface
LUA_SetEventCallback 0x7f6e14205490
eis_os_linedestinationpatcher: Adding modifier
commonapi2.init 20230316
commonapi2.ui: Loading commonapi2.ui interface
LUA_SetEventCallback 0x7f6e1825ecd0
Alles anzeigen
Also TPF2 mag wirklich sehr gerne das temperate.clima.lua neu laden. Also weg mit der Funktion und weiter testen:
Ich hab ja immer noch "eis_os_linedestinationpatcher: Adding modifier".
Das war doch früher ganz bestimmt nicht so, also weiter schauen wie und wenn lua::FunctionLoader::Use aufgerufen wird:
In lua::FunctionLoader::Use sehen wir dann das hier:
Assert(
"info.modifier == m_infos[fileName2indices[0]].modifier",
"../../train_fever/src/Lib/lua/FunctionLoader.cpp",
0x5Du,
"lua::State* lua::FunctionLoader::Use(lua::Loader&, std::set<std::__cxx11::basic_string<char> >&, const std::vector<std::__cxx11::basic_string<char> >&, bool) const");
Zum Teufel, was will UG jetzt mit dem Modifier und außerdem das ist kein GetGlobalSettings drumherum um zu schauen ob der Debug Modus aktiv ist?
Sprich das macht es bei jedem lua::FunctionLoader::Use Aufruf.
Und später macht es dann ein lua::Loader::Load, hmm das sah früher sehr viel kürzer aus.
Zum Abschluss, Zusammenfassung:
Es ist egal ob der Debug Modus an oder aus ist. Ich sehe kein Aufruf zu GetGlobalSettings, d.h. der Modifier Kram wird wohl bei jeder neuen Nutzung durchgeführt...
Ich habe mal angemerkt, das das Debug Modus modifier vergisst, beim neu laden, jetzt scheint es die aber immer wieder durchzuarbeiten.
Viele Mods, viel Holz zum durchgehen...
Performance technisch nicht so dolle. Ich werde zumindest lua::FunctionLoader::Reload auch im Debug Modus mit CommonAPI2 abschaltbar machen...
Das Modifier Problem bleibt aber weiterhin bestehen...