Wenn die Qualitätssicherung schläft, tanzen die Bugs: Ein Tippfehler in einer Ressourcendatei von Civilization 6 (im Test mit Wertung 7.0) trägt offenbar zu der eklatanten Schwäche der KI in Bezug auf die Produktionsprioritäten bei. Während im Code des Spiels das Wort "yield", zu deutsch "Ausbeute", korrekt geschrieben ist, wird es in der referenzierten XML-Datei (Leaders.xml) "yeild" geschrieben, womit die hinterlegten Werte der Anführer für das Spiel nicht auswertbar sind:
<Row Item="YEILD_PRODUCTION" ListType="DefaultYieldBias" Value="25"/>
<Row Item="YEILD_SCIENCE" ListType="DefaultYieldBias" Value="10"/>
<Row Item="YEILD_CULTURE" ListType="DefaultYieldBias" Value="10"/>
<Row Item="YEILD_GOLD" ListType="DefaultYieldBias" Value="20"/>
<Row Item="YEILD_FAITH" ListType="DefaultYieldBias" Value="-25"/>
Entdeckt wurde dieser Fehler von einem Nutzer des Forums Something Awful namens Straight White Shark. Seine Tests in automatisierten 151-Züge-Partien ergaben, dass sich die Prioritäten der KI-Anführer weg von Glauben und hin zu Gebäuden und Wissenschaft verschoben. Firaxis hat mittlerweile reagiert und den Fehler bestätigt, wobei ihm jedoch nur geringe Auswirkungen zugeschrieben werden. Die Fehlerbehebung wurde für das nächste Update angekündigt, findige Spieler können die entsprechende XML-Datei aber auch jetzt schon von Hand anpassen.
Wie bitte? Und das merken die erst jetzt und dann nicht mal selber? :-)
Finde ich auch sehr bemerkenswert. - Aber ich denke, da haben sich andere Game-Studios schon schlimmere Dinge geleistet. ;-)
Auf jeden Fall ein großes Kompliment an den findigen User "Straight White Shark", welcher den Fehler gefunden hat.
Aktuelle Spiele haben Millionen Zeilen Code und Skripte. Ihr glaubt doch nicht, dass Entwickler oder Tester Zeit haben da (auch noch nach Release) Zeile für Zeile durchzusehen. Fanatische Fans, die gerade Studieren oder sonst wie viel Freizeit haben, haben eine wesentlich höhere Chance so etwas zu finden.
Ja, in einer idealen Welt würde ein Entwickler (also eine Firma, nicht ein Einzelner) mit viel Zeit all solche Sachen verhindern oder suchen. In der realen Welt ist das unmöglich und die Konsequenzen wären ansonsten höherer Preis, viel späterer Release (und damit schlechtere Verkäufe, weil schlechterer Stand im Vergleich zu anderen Spielen) oder Kombinationen aus beidem.
Naja, das gute alte magische Dreieck halt. Man legt die Testabdeckung halt nach Risiko fest. Je größer das Projekt, desto größer die Wahrscheinlichkeit, dass bei einer hohen Abdeckung die Kosten der Testerstellung sich rechnen.
Völlig richtig, in dem Fall ist aber das Problem, dass es nicht reicht die Tests für Einzelfunktionen zu machen, relevant ist das kaum vorhersagbare Gesamtverhalten der AI. Wenn's so einfach wäre würde es ja jeder richtig machen. :)
Wer sagt denn was von einfach :) Ich weiß, wie schwierig es ist, zusammen mit dem Team solche Festlegungen zu treffen und deren Einhaltung zu überwachen, schließlich hat kein Entwickler Bock, Tests zu schreiben. Aus leidvoller Erfahrung kann ich sagen: Meistens ändert sich erst was, wenn man sich mal richtig hart abgelegt hat und ein paar hunderttausend Zeilen Code wegschmeißen musste.
XML, das Krebsgeschwür der IT.
Lustig, ich wollte hier gerade den Code zur Billion laughs attack posten, aber GG strippt ihn. Gut gemacht, GG. :) Daher hier der Link und volle Zustimmung, Toxe: https://en.wikipedia.org/wiki/Billion_laughs_attack
XML ist eigentlich extrem cooles Zeug, zumindest wenn man es für markup nutzt. Wir haben in einem Projekt relativ lange intensiv mit XML als Markupsprache gearbeitet und
- es ist extrem gut für die Annotation von Text geeignet
- die Toolunterstützung ist gut (xpath!)
- man kann es validieren (relaxNG compact)
Alles Dinge, die man zum Beispiel mit json nicht machen kann. Da immer wieder Leute komisch bei XML gucken, habe ich einen Blogpost dazu geschrieben: http://arne.chark.eu/2017/xml-vs-json/
Konfigurationsdateien muss man nicht unbedingt in XML schreiben, aber mit einer RelaxNG-Grammatik hätte man auch den Fehler finden können.
Okay, dann müssen ja nur noch hunderte andere Schreibfehler gefunden und korrigiert werden ....
Ist aber mal ein irgendwie lustiger Fehler ;-)
Das machts denk ich auch nicht mehr fett...
Traurig, dass die auf sowas nicht alleine kommen...
Wie sollten sie?
Das Spiel wurde von Menschen programmiert. Menschen machen Fehler. Tippe mal selbst ein Buch mit 1000 Seiten Text ohne einen Fehler zu machen.
Und da man für Variablen beliebige Namen vergeben kann findet das die automatische Korrektur auch nicht.
Es sind schon Weltraumraketen abgestürzt, weil jemand ein "," statt einem "." geschrieben hat.
Jein. Selbstverständlich passieren Fehler, und gerade bei Übergängen zwischen Code und XML-Konfiguration hapert es häufig an der Unterstützung durch die Entwicklungsumgebung bei der Fehlersuche. Deswegen schreibt man für genau so etwas auch Tests, die das korrekte Verhalten abprüfen. Passiert so ein Fehler, ist das ein Indiz für eine unzureichende Testabdeckung.
Schreib mal Unit-Tests für AI-Verhalten. Alleine damit erwartetes und beobachtetes Verhalten zu definieren wirst du schon massive Probleme haben.
Ich meine ja auch keine Unit-Tests für das Verhalten (das ist in der Tat haarig und eher etwas für menschliche Tester), sondern für den Zugriff auf externe Ressourcen - und das ist ja nun wirklich etwas, wo eine Menge schiefgehen kann. Das eigentliche Problem ist hier ja gar nicht der Schreibfehler, sondern dass die Software den fehlgeschlagenen Zugriff ignoriert (und offenbar auch nicht loggt, sonst wäre das ja mal aufgefallen). Hat was von "catch exception e {}".
Ja, das stimmt, die Basics hätten sie bei ihrem Interpreter mal machen können. ;) Aber das wird meiner Erfahrung nach sehr selten wirklich gemacht.
Ixh bin dafür dass ihr beide dafür ausgepeitscht werden weil ihr das Wort Unit-Test hier in den Comments benutzt. Wer will den sowas in seiner Freizeit hören :(
Erstaunlich, wie sehr doch einige Spieler sich intensiv mit dem Code und Co auseinandersetzen. Amüsant hätte ich es gefunden, wenn damit sämtliche KI-Probleme ein Ding der Vergangenheit gewesen wären, dem scheint aber ja nicht zu sein.
Ich hoffe der User wurde in irgendeiner Form belohnt und/oder geehrt dafür.
Ich hatte das spaßenshalber mal geändert und ein paar Partien durchprobiert. Spürbares Ergebnis: quasi null. Mit anderen Worten, Firaxis hat wohl recht mit der Behauptung, es hätte kaum spürbare Auswirkungen auf das Gegnerverhalten. Die Jungs werden also (erwartungsgemäß) weitersuchen müssen.
Beim Lesen der Überschrift hab ich gedacht: Ist das wirklich GG oder doch der Postillon? :)
Das habe ich mich für einen kurzen Moment tatsächlich auch gefragt (^_^)
So etwas sollte nicht passieren, aber leider rettet die Behebung der Fehler noch nicht die eigentliche KI.
Wenn ich mich recht entsinne hab ich auch schon ein Statement der Entwickler dazu gesehen.
In dem hies es sinngemäss, ja der Fehler wurde so gefunden und bestätigt und er hat KLEINE auswirkungen auf die KI.
Es ist jetzt auch nicht so als wenn sich da gravierend was ändert. Man sollte also durchaus auch mal die Kirche im Dorf lassen und nicht so übertreiben das sowas nicht vorkommen darf etc.
Warum sollte es denen anders gehen als mir https://imgur.com/gallery/HTisMpC
Bei der Überschrift dachte ich auch noch, es ist die allgemeine Schwäche der KI gemeint. Ich meine, das wäre schon ein Fehler gewesen, der sicherlich spätestens in der Entwicklung vom AddOn hätte auffallen müssen, dass die KI nicht so stark ist, wie sie sein sollte.
Aber nach Lesen des Artikels ist die Überschrift leider nur wieder einer diese Click-Bait Geschichten.
Tippschwäche, so kann man schlechte Programmierung auch nennen. :)
Wäre ja spannend zu wissen, welche Auswirkungen das nun wirklich auf die KI hat und ob die Partie dadurch anspruchsvoller wird. Am Kampfverhalten der KI ändert sich damit wohl nichts.
Kommentar hinzufügen