Sie sind nicht angemeldet.

rvogt64

SeeBär

  • »rvogt64« ist der Autor dieses Themas

Beiträge: 200

Registrierungsdatum: 20. Oktober 2021

  • Nachricht senden

1

Donnerstag, 12. Mai 2022, 04:50

Modding Dokus

Hallo und guten Morgen,
ich beschäftige mich jetzt seit kurzem mehr mit dem Modding und speziell mit den Fehlermeldungen im Error-Logger.
Da gibt´s ja Info; Warning und Error Meldungen. Ich kann viele der Meldungen...speziell die "Warnungen" einfach nicht aufschlüsseln.
Ich weiß von Jakobi22, dass man Warnungen wohl meistens ignorieren kann (so hab ich´s jedenfalls verstanden), aber ich möchte trotzdem gerne wissen, warum und welche Auswirkungen das auf´s Spiel hat.

Hier ist z.B. so eine Meldung, die ich schon syntaktisch nicht verstehe


[2022-05-11 05:55:19.939] [warning] No matching node for Path //Asset[Values/Standard/GUID='500447']
/Values/ConstructionCategory/BuildingList[not(Item[Building='137602'])]/Item[last()]
in [Buildings] [XAN] City Hall (data\config\export\main\asset\assets.xml:409)

Speziell den in Gelb gekennzeichneten Part. Jetzt wollte ich euch mal fragen, ob´s Dokus (nicht Schwubbe oder die Infos zum Mod-Loader auf Github) gibt, die einem das Thema ein wenig näher bringen.
Schöne Grüße
  Bei meiner Tastatur ist das "J" kaputt..... :keineahnung: Also nicht wundern wenn das hin und wieder in meinen Antworten fehlt :unschuldig:

Jacobi22

Boardsmutje

Beiträge: 937

Registrierungsdatum: 16. Dezember 2019

  • Nachricht senden

2

Donnerstag, 12. Mai 2022, 11:16

Jakobi22
immer mit c, so viel Zeit muß sein


Ich weiß von Jakobi22, dass man Warnungen wohl meistens ignorieren kann

Wenn du nach einer Ursache dafür suchst, warum dein Spiel nicht laufen will, dann kannst du einen No-Matching-Node-Meldung ignorieren. Sie informiert dich darüber, das der angewählte Knoten, der Node, nicht existiert. Findet man den Knoten nicht, funktioniert dieser ModOp-Abschnitt nicht. Je nach Aufbau der Mod (im Code) kann es dann passieren, das die gesamte Mod nicht funktioniert, z.b. wenn sie nur einen ModOp-Bereich benutzt- die Probleme mit der Maug-Mog wären da ein gutes Beispiel

Zur Einleitung: gezeigte Meldung gehört zur Mod "City Hall", die das Rathaus "ersetzen" soll, das hier im Hochhaus-Stil gebaut wurde, sich somit den SkyScrapers anpasst, die im DLC Dächer der Stadt baubar sind. Diese CityHall kann ab 1000 Investoren gebaut werden.
[2022-05-11 05:55:19.939] [warning] No matching node for Path //Asset[Values/Standard/GUID='500447']

/Values/ConstructionCategory/BuildingList[not(Item[Building='137602'])]/Item[last()]

in [Buildings] [XAN] City Hall (data\config\export\main\asset\assets.xml:409)
das ist schon "Hohe Schule" des Moddings, alle Achtung - not(Item[Building='XXXXXX']) findest du in keiner der Originaldateien, da hat schon jemand Ahnung, was geht oder nicht geht ;-)

unten im Bild der Original-Code-Abschnitt zu diesem Node, allerdings aus der data18, sonst passt er hier nicht drauf.
Angezeigt wird das Baumenü der Investoren, es fehlt aber alles aus dem DLC Dächer der Stadt, aber dazu später...

der Pfad bzw engl Path

[Values/Standard/GUID='500447'] - bezieht sich auf den Block mit der GUID, die im Bild schwarz markiert ist. Jede Einrückung wäre ein Knoten bzw ein Node. Kann man also nachverfolgen: Values - Standard - GUID - 500447

Verwendet wird nun die Kurzform der ModOp. Sie erlaubt die Zusammenfassung mehrerer Blöcke (hier der Block "Standard" und der Block "ConstructionCategory") in einem Path. In der Langform, die zu Beginn des Moddings verwendet wurde, müßte man den kompletten Block verwenden von <Values> bis </Values>. Ein gutes Beispiel wäre die Maug-Mod. Diese könnte man heute auf geschätze 150 Zeilen reduzieren, wenn man überall die kürzeste Form des Codes verwendet.

weiter im Path:
die eckige Klammer (ein sog. Sqare Bracket) im ersten Teil [Values/Standard/GUID='500447'] mit dem nachfolgendem Rest gibt an, das es sich um verschiedene Blöcke auf gleicher Ebene handelt, also der Block "Standard" und der Block "ConstructionCategory", sieht man an den Einrückungen gut.
Es folgt der Path zum zweiten Block: Values - ConstructionCategory - BuildingList, gefolgt von den Items in dieser Liste, die mit Item/Building aufgelistet werden. 1010489 wäre das Icon zum Bau der Weltausstellung, 269667 der Palast usw

Nun der gekennzeichnete Code [not(Item[Building='137602'])]/Item[last()]:


Wie gesagt, diese Art der Schreibweise wird sonst nirgends im Vanilla-Code verwendet. Ohne das "not" würde er das angegebene Item 137602 (der Fahrstuhl) an das Ende der Liste zu setzen. last() wäre Letzter, last()-1 = Vorletzter usw. Mit diesem "not" gehe ich davon aus, das dieser ModOp genau das verhindern soll, das der Fahrstuhl das letzte Menü-Element dort ist
NACHTRAG: bin kein Python-Kenner, aber schau ich mir diverse ähnliche Funktionen an, könnte obiges "einfach übersetzt" auch heißen: Wenn Building 137602 nicht letzter Menüpunkt ist, mach es zum letzten Menüpunkt. Müßte man sich einfach mal anschauen...
ich könnt auch den Autor fragen, aber Männer fragen ja nicht nach dem Weg :-D



Ich kann jetzt über die Ursache der Log-Meldung nur vermuten, aber ggf werden Fahrstühle erst später freigeschaltet oder man verfügt nicht über das DLC

siehe Antwort im nächsten PostLt. Autor handelt es sich um Fallbacks, so etwas wie eine "Notfallumleitung", gedacht für den Fall, das über eine andere Mod das Rathaus entfernt wurde oder in ein anderes Menü verschoben wurde








Und zu deiner Frage am Schluß: Was das Coding selbst betrifft, ist wohl Schwubbes Seite die erste und wohl auch einzige Wahl. Das sind in der Summe mehrere Monate Arbeit. Ich hab wohl eine private Dokuseite, die ich aber nur lokal halte. Das ist nicht mehr wie ein digitaler Notizzettel. Das für die Öffentlichkeit optisch aufzubereiten, würde sicher Wochen dauern.
Bei Maug findet man noch ein paar Infos, die aber mehr in Richtung Modellbau gehen, weniger um den Code. Auf Reddit und Discord kann man gezielt fragen und bekommt i.d.R auch eine Antwort, die setzt aber immer voraus, das du es später selbst erledigst. Dank Programmen wie dem ModBuilder gibt es ja nun viele neue "Autoren", aber fragen, was dieser oder jener Code bewirkt, darfst du da auch nicht.
Im Prinzip ist also alles Eigenstudium. Und wenn du einen guten "Freund" findest, erklärt der dir noch ein paar Dinge

Jacobi22

Boardsmutje

Beiträge: 937

Registrierungsdatum: 16. Dezember 2019

  • Nachricht senden

3

Donnerstag, 12. Mai 2022, 12:40

ich könnt auch den Autor fragen
dann fragen wir doch..... (thx to Jakob)

Vergeß die Vermutungen von mir oben....

/Values/ConstructionCategory/BuildingList[not(Item[Building='137602'])]/Item[last()] = in einfachen Worten: Verwende alle BuildingList's zur genannten GUID, die das Item 137602 NICHT enthalten und füge der letzten das in der ModOp genannte Item hinzu

Da bei dir keine BuildingList ohne Item 137602 vorhanden ist, erscheint in der Log-Datei die Warnung. Wie gesagt, ein Fallback ...

rvogt64

SeeBär

  • »rvogt64« ist der Autor dieses Themas

Beiträge: 200

Registrierungsdatum: 20. Oktober 2021

  • Nachricht senden

4

Donnerstag, 12. Mai 2022, 16:43

immer mit c, so viel Zeit muß sein
@Jacobi22:
Ouuuuu..... mein gott..... ausgerechnet mir passiert das :kopfnuss: :kopfnuss: :kopfnuss: Ich hasse es, wenn man meinen Namen (Rainer) mit "e" schreibt!!! Also...... ich bitte vielmals um Entschuldigung!!!!
Also....1. Schön, dass Du wieder da bist!! Deine ausführlichen und guten Erklärungen haben mir gefehlt!!!

2. Genau mit diesem Passus [not(Item[Building='137602'])]/Item[last()] bin ich nicht klar gekommen, weil ich ihn so in dieser Form in keinem Template oder anderen Mods gefunden hab :keineahnung:
Jetz leuchtet mir das schon ein! Danke dafür. Und ja.... nachdem ich die Maug auseinandergenommen hab und mir die ellenlangen Assets angesehen hab, bin ich auch zu dem Schluss gekommen, dass man das gewaltig optimieren kann.
Für die Teilbereiche, die mir wichtig waren, hab ich das auch gemacht...und siehe da... It works :jaaaaa:
Tja..... durch die Mod-Tools ist ja nun so einiges möglich und für mich auch okay, wenn die Werke nicht veröffentlicht werden, bzw. dediziert angegeben wird, dass diese mit dem jeweiligen Tool erstellt wurden. Sonst ist der GUID Crash vorprogrammiert und dann geht das große Klagen los!
Ich selber finde es ganz gut, als Anno-Modding Rookie, mal was zu basteln und sich dann das script dazu anzusehen. So leren ich die Zusammenhänge besser verstehen. Da ich früher selber viel gecoded hab, will ich immer ganz genau wissen wie und warum was funktioniert und vor Allem, möchte ich mir auch selber helfen können, wenn mal was nicht funzt.
Aber wie Du schon gesagt hast..... Ohne die Unterstützung von einem Erfahrenen, tut man sich halt schwerer.
Also nochmal vielen Dank für die wie immer perfekte Erklärung für meine Fragen
schöne Grüße


Rainer mit a :engel:
  Bei meiner Tastatur ist das "J" kaputt..... :keineahnung: Also nicht wundern wenn das hin und wieder in meinen Antworten fehlt :unschuldig:

rvogt64

SeeBär

  • »rvogt64« ist der Autor dieses Themas

Beiträge: 200

Registrierungsdatum: 20. Oktober 2021

  • Nachricht senden

5

Freitag, 13. Mai 2022, 08:26

Und zu deiner Frage am Schluß: Was das Coding selbst betrifft, ist wohl Schwubbes Seite die erste und wohl auch einzige Wahl. Das sind in der Summe mehrere Monate Arbeit.
@Jacobi22: Ich hoffe, Du hast meine Frage nicht falsch verstanden!!! Die Schwubbe-Seite ist absolut super :up: Ohne diese Seite, hätte ich gar nicht angefangen mich näher mit dem Modding zu befassen.
Vielleicht hab ich auch noch nicht alles beachtet und es versteckt sich noch irgendwo ein wenig "Deep-Dive"
Auf jeden Fall wollte ich das nochmal betonen und ich kann diese Seite nur jedem empfehlen der mehr über´s modding erfahren will.
schöne Grüße und ein schönes Wochenende
  Bei meiner Tastatur ist das "J" kaputt..... :keineahnung: Also nicht wundern wenn das hin und wieder in meinen Antworten fehlt :unschuldig:

Jacobi22

Boardsmutje

Beiträge: 937

Registrierungsdatum: 16. Dezember 2019

  • Nachricht senden

6

Freitag, 13. Mai 2022, 10:10

Ich hoffe, Du hast meine Frage nicht falsch verstanden
da gibt es nichts falsch zu verstehen :lol:
Es liegt in der Natur der Sache, das immer mehr Leute Mods basteln. Für das Spiel und die DLC, die ich habe, wurden mir 130 Euro abgezogen, für meinen Sohn noch einmal das Gleiche. Wenn ich heut zu Tage nach dem passendem Angebot schaue, kann ich da eine ganze Menge Geld sparen und so wird die Zahl der potentiellen Spieler auch immer größer und damit erhöht sich auch die Zahl derer, die sich mit dem Modding beschäftigen. Dennoch bleibt das alles ein zeitlich begrenztes Vergnügen, denn der Spielemarkt entwickelt sich ja auch ständig weiter. Und spätestens mit den Anno-Nachfolger nimmt dann die Zahl der Modder auch ganz schnell wieder ab.
Ich bin mir recht sicher, ohne Corona hätten wir wohl keinen Seasonpack 3 und 4, das sind schon mal zwei Jahre. Vom Release des Spiels bis zu den ersten public Mods dauerte es rund 6 Monate, also noch ein halbes Jahr. Unterm Strich bleiben also max 4 Jahre bis das Interesse nachläßt, die Hälfte davon ist schon um.
Und dann ist die Frage recht einfach: lohnt es sich, dafür eine Webseite zu erstellen, für die es schon enormes Fachwissen braucht? Für die du jede Menge Fremdinput benötigst und auch jede Menge Zeit. Nein, eigentlich lohnt sich das nicht. Und wenn ich sehe, das der Trend auch bei UBI in Richtung LUA geht, dann noch weniger. Für die Webseite über meine Forstmaschine bezahl ich heute noch ~120 Euro/Jahr und mit der hab ich vorher wenigstens Geld verdient.
Das alles aber nur als Begründung, warum man so wenig Infos darüber auf Webseiten findet