Anti-Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Jonathan hat geschrieben: 29.11.2022, 13:29 Sumatra PDF, mein präferierter PDF Viewer kann jetzt auch svg Dateien öffnen. Und es ist super schnell dabei! :)
Nie kann man etwas schönes haben :(

Nachdem ich neulich so happy war muss ich jetzt ein paar Tage später feststellen, dass eine beträchtliche Anzahl an PDFs in Sumatra nicht gerendert werden können. Ich bin Fan von robusten Lösungen, ich will nicht, dass meine Software nur in 95% aller Fälle funktioniert.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Jonathan hat geschrieben: 02.12.2022, 20:08Nachdem ich neulich so happy war muss ich jetzt ein paar Tage später feststellen, dass eine beträchtliche Anzahl an PDFs in Sumatra nicht gerendert werden können.
Als jemand, der an PDF-Software werkelt, würde ich gern wissen, ob du ein Muster erkennst oder ein möglichst minimales Beispiel liefern kannst

(PDF ist ein Moloch und mir fallen sofort tausend Dinge ein, die schief gehen können. Die eigentlich interessante Frage ist, was davon wirklich in der Wildnis vorzufinden ist!)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

GPT Chat vereinfacht nicht nur einen großen Teil meines Tagesgeschäfts, es optimiert auch mein Hobby weg. Das hier wäre sonst ein schöner Batzen Arbeit gewesen:
Bild

Dem Spruch, dass es besser ist als die Hälfte der Google-Bewerber, stimme ich zu. Und wo es noch Probleme hat, ist es mindestens schneller. Hundert Mal oder so.

(improve variable names scheint zu implizieren, dass sich für ansehnlichere Namen das Verhalten des Codes ändert. Anders als ich oben sollte man also immer auch equivalent fordern!)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2106
Registriert: 25.02.2009, 13:37

Re: Anti-Jammer-Thread

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben: 04.01.2023, 23:30 GPT Chat vereinfacht nicht nur einen großen Teil meines Tagesgeschäfts,
Care to elaborate?
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Via PM
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Matthias Gubisch
Establishment
Beiträge: 470
Registriert: 01.03.2009, 19:09

Re: Anti-Jammer-Thread

Beitrag von Matthias Gubisch »

Ja schon erstaunlich was da heute möglich ist.
Meine Feststellung war das es einem schon viele trivialsachen abnehmen kann aber man zumindest für C++ schon noch selber wissen muss was man tut.
Auf x mal die gleiche Frage gibt es meist x verschiedene Versionen die von ziemlich optimal bis zu WTF in welcher Welt ist das guter/robuster/performanter Code alles beinhalten....

Allgemein glaube ich aber das vieles das aktuell durch Copy & paste aus Google erledigt wird in naher Zukunft mit sowas gemacht wird.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
antisteo
Establishment
Beiträge: 852
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Anti-Jammer-Thread

Beitrag von antisteo »

Darf ich hier mal ein selbsterstelltes Meme posten?
Bild
https://imgflip.com/i/76j3ue
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Matthias Gubisch hat geschrieben: 05.01.2023, 09:12Allgemein glaube ich aber das vieles das aktuell durch Copy & paste aus Google erledigt wird in naher Zukunft mit sowas gemacht wird.
Ich denke, dass das eine der größten Fehleinschätzungen ist:

Bild

Eine Hash-Funktion, die nirgends im Internet zu finden ist, auf AVX2 zu vektorisieren, ist ganz gewiss kein Copy-Paste aus Google. Ja, die Implementierung ist falsch. Aber sie ist nicht viel falscher als mein erster Versuch gewesen wäre, bloß in einer Sekunde statt in zehn Minuten. Und wenn man bedenkt, was die Dinger vor drei Jahren produziert haben und was jetzt rauskommt, wird mir für meine Zukunft tatsächlich mulmig.
Matthias Gubisch hat geschrieben: 05.01.2023, 09:12aber man zumindest für C++ schon noch selber wissen muss was man tut.
Auf x mal die gleiche Frage gibt es meist x verschiedene Versionen die von ziemlich optimal bis zu WTF in welcher Welt ist das guter/robuster/performanter Code alles beinhalten....
Das kann ich unterschreiben. Ich denke, dass wir in Zukunft nur noch Leute gebrauchen können, die sehr gut wissen, was sie tun, um Code Reviewer für sowas zu spielen.

Nach drei Tagen dran herumspielen denke ich, dass das die Programmierung langfristig verändern wird wie damals die Vernetzung durchs Internet – ohne jetzt die Diskussion lostreten zu wollen, ob gut oder schlecht. Wir sollten uns aber mächtig auf was einstellen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2106
Registriert: 25.02.2009, 13:37

Re: Anti-Jammer-Thread

Beitrag von Alexander Kornrumpf »

Mir fiel beim zweiten Lesen noch auf dass nach meiner begrenzten Erfahrung label wie "CalcChecksum" eben gerade nicht aus dem Kompilat rausfallen und vermutlich trägt das einen guten Teil der Last ChatGPT den Kontext zu geben, den es braucht. Wo kommt der Assembler-Code am Anfang her? Wie wurde er enriched?
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Alexander Kornrumpf hat geschrieben: 07.01.2023, 12:47Wo kommt der Assembler-Code am Anfang her? Wie wurde er enriched?
Die Label-Namen und Kommentare fallen beim Kompilieren raus, stimmt absolut. Das ist eine tatsächliche echte Quelldatei aus einer proprietären Codebase. Die möchte ich mangels Kompatibilität zu aktuellen Assemblern/Compilern auf C++ umstellen. Der Prompt ist vollständig; mehr Kommentare/Namen sind auch im Original-Quelltext nicht drin (darum möchte ich ihn schnell loswerden).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von joeydee »

Allen befürchteten Problemen und Diskussionen um aktuelle KIs (Copyright, Jobs, Qualität, Fakes, Medien-Overflow, ...) zum Trotz: Wir leben in einer interessanten Zeit.
Auch abseits von Code ist ChatGPT für Game-Entwicklung ein ziemlich brauchbares Tool. Von erster Idee und Story-Abstract bis zu Details wie Leveldesigns, Quests, Items, Endbosse etc. Dank Backref und Threadspeicher kann man auch sehr gut mit Änderungen arbeiten sowie die "Diskussion" an anderen Tagen fortführen, d.h. es erlaubt einen sehr bequemen Workflow.
Ganz ohne selbst eingebrachte Ideen wird es natürlich schnell ziemlich generisch, aber für bestimmte Detailausarbeitungen oder Rahmenstory als Indie-Einzelkämpfer doch recht brauchbar, finde ich. (Und ja, natürlich versteht er auch Deutsch)
Ein kleines Jump'n'Run-Spiel zum Thema Ostern. Bitte beschreibe einen möglichen Hauptcharakter, Levelaufbau, Spielverlauf und Spielziel.
 
Gerne! Hier ist eine mögliche Idee für ein Jump'n'Run-Spiel zum Thema Ostern:
 
Hauptcharakter:
Der Hauptcharakter könnte ein Osterhase sein, der durch die Levels hüpft und rennt, um die Ostereier zu sammeln und die Endgegner zu besiegen. Er könnte verschiedene Fähigkeiten haben, wie zum Beispiel das Verstecken in einem Osterkörbchen, um Gegnern auszuweichen, oder das Werfen von Ostereiern als Waffe.
 
Levelaufbau:
Die Levels könnten in verschiedenen Oster-Themen gestaltet sein, zum Beispiel in einem blühenden Garten, in einem Wald voller bunt bemalter Ostereier oder in einer Stadt mit Osterdekorationen. Es könnten auch versteckte Bonus-Eier geben, die der Spieler sammeln kann, um seine Punktzahl zu erhöhen.
 
Spielverlauf:
Der Spieler muss durch die Levels hüpfen und rennen, um die Ostereier zu sammeln und Gegnern auszuweichen oder sie zu besiegen. Es könnten auch Rätsel und Minispiele eingebaut werden, um das Spiel abwechslungsreicher zu gestalten.
 
Spielziel:
Das Ziel des Spiels könnte sein, alle Ostereier in jedem Level zu sammeln und alle Endgegner zu besiegen, um das Spiel erfolgreich zu beenden. Der Spieler könnte auch eine bestimmte Punktzahl erreichen müssen, indem er Bonus-Eier sammelt und Gegner besiegt.
Kompletter Chat mit weiterführenden Detailfragen und Änderungen in Richtung SciFi: https://pastebin.com/raw/E2AQcc9N
(Nein, ich bastle kein Oster-Spiel, das war nur just for fun - daher auch ziemlich schräge "Story" am Ende ;))

Wie man sieht, macht der Bot auch zeitweilig logische Fehler, z.B.
"Was wäre mit einem außerirdischen Osterhasen, welcher [...] nach verteckter Technologie sucht, von welcher die Menschen nichts wissen"
-> "Er ist auf der Suche nach geheimer Technologie, die von den Menschen verborgen wurde"

In meinem Kopf implizierte mein Vorschlag direkt eine dritte Partei, welche die Erde als Zwischenlager missbraucht. Von dieser Partei war allerdings noch nicht die Rede im bisherigen Verlauf. I.d.R. kann man den Bot hierzu aber sehr leicht korrigieren.
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 574
Registriert: 05.07.2003, 11:17

Re: Anti-Jammer-Thread

Beitrag von Lord Delvin »

joeydee hat geschrieben: 07.01.2023, 18:43 Wie man sieht, macht der Bot auch zeitweilig logische Fehler, z.B.
"Was wäre mit einem außerirdischen Osterhasen, welcher [...] nach verteckter Technologie sucht, von welcher die Menschen nichts wissen"
-> "Er ist auf der Suche nach geheimer Technologie, die von den Menschen verborgen wurde"

In meinem Kopf implizierte mein Vorschlag direkt eine dritte Partei, welche die Erde als Zwischenlager missbraucht. Von dieser Partei war allerdings noch nicht die Rede im bisherigen Verlauf. I.d.R. kann man den Bot hierzu aber sehr leicht korrigieren.
Wirkt auf mich nicht so abwegig. Eher wie "das Geheime Wissen der Urvölker" oder "das Wissen der Natur".
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von joeydee »

Ja, umdenken und ausbauen kann man solche unlogischen Vorlagen meist ganz gut (und dem Bot dann auch sagen, dass man mit diesem ausgebauten Gedanken weiter spielen möchte), aber an "eine untergegangene Zivilisation hat das versteckt" o.ä. hat der Bot dabei sicher nicht "gedacht" :) also ich bin ziemlich sicher dass es ein logischer Fehler war.
Diese Art Logikfehler sind aktuell eher typisch. Ich habe natürlich auch schon versucht, kleine Rätselstränge generieren oder vorhandene ausbauen zu lassen. Beispiele:
Einmal hat der Held im Wald ein lautes Gebäude gehört, was sich als Schloss entpuppte.
Ja, vielleicht fand dort gerade ein Ritterturnier statt.
Ein andermal soll ein Stück Käse auf eine leere Wasserflasche gesteckt werden, um damit eine Überwachungskamera abzulenken.
Ja, vielleicht kann man tatsächlich die Linse mit fettigem Käse einschmieren, und an die Kamera kommt man nur mittels Wasserflache ran.

Der Chatbot erzeugt jedenfalls schnell ein Maß an Co-Brainstorming, das sehr fruchtbar sein kann und einen selbst auf neue Ideen bringt, wenn man die richtigen Fragen/Aufgaben stellt. (Stellt man Fragen zu allgemein, können auch Antworten ähnlich allgemein ausfallen wie z.B. "Es gibt eine Vielzahl Möglichkeiten ... Z.B. könte der Held einen Gegenstand finden, den er mit einem anderen kombinieren muss um weiterzukommen")

Das wirklich Brauchbare ist vor allem natürlich die Backref-Sache, also dass man sich jederzeit auf die bisher (um-)gestaltete Geschichte beziehen und diese auch neu zusammenfassen lassen kann. Oder Listen erstellen lassen, welche Charaktere aktuell in der Geschichte welche Rolle spielen. Welche Items und Hotspots für diesen Rätselstrang benötigt werden. Charakter- und Location-Beschreibungen. Welche Musik in eine bestimmte Szene passen könnte. Usw.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

So einen Commit-Hash hatte ich auch noch nicht:

Bild
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 574
Registriert: 05.07.2003, 11:17

Re: Anti-Jammer-Thread

Beitrag von Lord Delvin »

Hab' gerade von meinem Compiler auf's Maul bekommen, weil ich es gewagt habe

Code: Alles auswählen

Interface[any]
statt

Code: Alles auswählen

Interface[Object]
zu schreiben :)

So Fehler freuen mich tatsächlich auch erstmal

Code: Alles auswählen

could not realize access with expected shape { Class[this.class] : Class[Class[this.class]], this.class : Class[Object] ⊢ { Class[this.class] } }
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Huh, grad entdeckt, dass es Splatter ja auch auf gog gibt. Sogar im Sale, gerade :D

https://www.gog.com/en/game/splatter_zombiecalypse_now
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von xq »

Ich hab nen neuen Job. 70% mehr Gehalt als vorher, große Firma, coole Kollegen und interessanter Aufgabenbereich. Ich stehe grade sogar freiwillig 1.5h früher auf!
Mal schauen, wie sich das entwickelt, aber sieht bisher echt gut aus
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Matthias Gubisch
Establishment
Beiträge: 470
Registriert: 01.03.2009, 19:09

Re: Anti-Jammer-Thread

Beitrag von Matthias Gubisch »

Gratuliere :)
Viel Erfolg bei den neuen Aufgaben :)
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Wollte nochmal ein Spiel aus meiner Kindheit Spielen, Motocross Madness 2. Gibts nicht auf Gog, aber ich fand einen Download auf einer Abandonwareseite. Ich musste ein paar Schritte durchgehen um es ans Laufen zu bringen, aber letztendlich konnte ich es nach 15 Minuten rumfummeln starten und alles lief wunderbar. Into wird abgespielt, Menü ist komplett sichtbar, 3D Grafik hat keine Artefakte. Wunderbar. Ich habe früher schon teilweise stundenlang rumfummeln müssen bis irgendwas ging, ich weiß z.B. immer noch nicht, wie ich Technomage wieder spielen kann, aber dieses mal hatte ich Glück.

Gut, MM2 ist jetzt schon arg in die Jahre gekommen, habs 10 Minuten lang gespielt um es mal wieder zu sehen, vielleicht spiele ich später nochmal ein paar Rennen. Aber für die Erinnerung ist es alleine schon nett, sich mal wieder durch die ganzen Menüs zu klicken :)
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4831
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Schrompf »

Heute letzter Arbeitstag bei Check24. Ab März dann Wandelbots. Bin aktuell eher traurig als glücklich, hier wegzugehen. Aber ich hab Frühstück mitgebracht, und meine Frau hat eine Torte gebacken. Thema: Pauschalreise :-)
IMG20230126084059.jpg
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Wahnsinn! Ich könnt’ in den Bildschirm beißen. Alles Gute!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Woah, krasser Kuchen! Ist das Wackelpudding?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Arbeitstechnisch weniger Stress jetzt, wichtiges Projekt ist abeschlossen. Da bin ich sehr zuversichtlich endlich nochmal privat programmieren zu können, vlt. krieg ich ja das Halloween Special meines Zombieshooters mit leichter Verspätung noch fertig :D
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Netter Fehler in Magic Constants.

Bedenkt: Magische Konstanten immer durch benannte Konstanten ersetzen!

In meinem Konkreten Fall ist ein Level zu befüllen. Dafür sind 30 Slots fest reserviert, und die müssen befüllt werden.

    #define Monster 0
    #define Soldier 1
    #define Zombie 2

    struct Level { int enemySlots[30]; };


Mein Vorgänger befüllt das dummerweise via:

    Level level = { -1, Zombie, Zombie, Monster, Zombie, Monster, Monster, Soldier, -1, -1,
                -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
                -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };


Nun möchte ich die -1 weghaben weil Magic Numbers stinken. Also Search & Replace:

    constexpr int None = -1;

    Level level = { None, Zombie, Zombie, Monster, Zombie, Monster, Monster, Soldier, None, None,
                None, None, None, None, None, None, None, None, None, None
                None, None, None, None, None, None, None, None, None, None };


Fehler 123: “None” unexpected!

Huh?!

Habt ihr den Fehler gefunden? Auch im Original-Code?

Da fehlen Kommas am Ende der Zeilen.

-1 -1 schluckt der Compiler still als -2. Aber None None löst einen Fehler aus.

Das Array hatte also die ganze Zeit den Inhalt:

-1    2    2    0    2    0    0    1   -1   -1

-1   -1   -1   -1   -1   -1   -1   -1   -1   -2
                                             ^^
-1   -1   -1   -1   -1   -1   -1   -1   -1    0
                                        ^^^^^^^^


Ich gucke in den Code, der das verarbeitet, und natürlich wurde da ein if(slot < -1) reingeklatscht mit dem Kommentar „passiert manchmal“.

Ich stelle gerade eine große C-Codebase auf C++ um – einfach um zu schauen, welche Fehler der Compiler dann findet. Es sind viel mehr als in C. Wer meint, Typsysteme hätten nicht so große Vorteile, soll sowas mal machen.

Selbstverständlich hat der Code noch andere Probleme, aber hier haben Magic Numbers wirklich geholfen. Mein Beispiel hatte eigentlich enum verwendet, deshalb hat der C++-Compiler mich hart gezwungen, einen neuen enum-Wert hinzuschreiben. In C ist die Umwandung von -1 zu enum problemlos möglich. Ich habe das enum aus dem Beispiel entfernt, um die Grundsatzdiskussion „warum nicht 0 statt -1 als ungültiger Wert“ zu vermeiden.

Habe noch ein paar andere Beispiele, in denen C++ uralte Fehler in C-Code aufdeckt, falls sie euch interessieren.

Edit: Fehler beseitigt weil ichdas Beispiel zusammengekürzt hatte
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4831
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Schrompf »

Das ist wirklich mal ein Augenöffner
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
NytroX
Establishment
Beiträge: 358
Registriert: 03.10.2003, 12:47

Re: Anti-Jammer-Thread

Beitrag von NytroX »

Lol, netter Fang. Der Kommentar ist Weltklasse :-)
Mein Compiler meckert nicht mal. Auch nicht mit der -1.
Aber mit constexpr compiliert es nicht, das ist schonmal gut.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

NytroX hat geschrieben: 01.02.2023, 20:02 Lol, netter Fang. Der Kommentar ist Weltklasse :-)
Mein Compiler meckert nicht mal. Auch nicht mit der -1.
Weil ich Idiot das enum zu #define geändert habe. Sorry, ich wollt’s vereinfachen. Das ruiniert natürlich die Lektion.

Mal gucken, dass ich’s überarbeite. Edit: constexpr statt #define. Das sollte definitiv den Fehler auslösen. Noch ein Grund, dass C++ > C (Achtung, Undefined Behavior!).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Jonathan hat geschrieben: 28.01.2023, 09:20 Hab mein Spiel nach, uhm, Monaten nochmal neu kompilliert. Hatte zwischendrin was am Framework gemacht und jetzt geht natürlich erstmal wieder gar nichts. Nach dem Start ist der Spieler irgendwo im Nirgendwo, die Physik-Engine teleportiert den auf irgendwelche 8-stellige Zahlen und alles Bones stecken ineinander. Hab dann erstmal eine alter Version vom Framework ausgecheckt, die wollte aber auch nicht. Shader machen auch Probleme. Möglicherweise hab ich nicht immer alles richtig eingecheckt? Jedenfalls darf ich mich jetzt erst wieder einen halben Tag hinsetzen und rausfinden, was kaputt ist (letztes mal war es GLM die das StandardßInitialisierungsverhalten geändert hatten, und ich hatte zwischenzeitlich die neue Version installiert...), was irgendwie die Motivation wieder neu anzufangen natürlich dämpft. Ugh...
Fehler gefunden. Er war natürlich, wie sollte es auch anders sein, sehr subtil.

GLM hat vor einiger Zeit das Standard-Initialisierungsverhalten geändert. Alles ist jetzt Standardmäßig uninitialisiert. Was natürlich tödlich ist, wenn man in seinem Code Stellen wie vec3 offset; oder vec3 offset(); anstatt vec3 offset(0.f); hat.
Natürlich gibts dafür keine Compilerfehler, es ist ja "legaler" Code. Ich hatte versucht in Visual Studio nach uninitialisierten Membern zu suchen und habe damit auch ein paar Stellen gefunden. Insgesamt war das aber nicht sehr robust. Dann hab ich irgendwann mal nach allen vec3() & co Vorkommen gesucht und diese entsprechend angepasst. Das tauchte so in der Größenordnung von 50 mal in meinem Code auf.

Heute kam ich dann endlich mal auf die naheliegende Idee, einen Breakpoint in den Default-Constructor zu setzen. Das ging natürlich nicht, weil der also =default deklariert war und dementsprechend keinen Code hatte. Dann wurde mir das irgendwann zu doof und ich habe einfach einen neuen glm-Branch erstellt, in dem ich alles default-Konstruktoren explizit lösche.
Jetzt hat natürlich nichts mehr kompiliert, ein vector<vec3> ging dann z.B. nicht mehr. Es gab auch eine Reihe an Stellen, in denen Variablen uninitialisiert angelegt wurden und gleich darauf vernünftige Werte bekamen, das explizit alles in den Konstruktoraufruf zu schreiben hätte den Code aber nicht schöner gemacht.
Ich hab mich also davon verabschiedet diesen Branch jemals für irgendetwas anderes als zum Debugging zu verwenden. Aber er hat seinen Zwei erfüllt. Letztendlich habe ich damit zwei kritische Stellen gefunden. Eine war die Standardtransformation von Levelelementen die dann meistens eine 0-Matrix hatte, die andere war die Laufgeschwindigkeit des Spielers (die dann abhängig von gedrückten Tasten in X oder Y Richtung verändert werden sollte), die jetzt eben zufällige Werte beinhaltete und dann als Impulskraft an die Physikengine weitergegeben wurde. Kein Wunder, dass daraufhin alles explodiert ist...

Das gemeine ist natürlich, dass ich die neue GLM Version eigentlich schon eine zeitlang einsetze. Aber die Initialisierung war halt undefiniert, das hat Monatelang ohne Probleme funktioniert (und war vermutlich sogar komplett deterministisch, aber halt eher aus versehen richtig), bis dann irgendeine andere Stelle im Code geändert wurde, die dann dafür sorgte, dass der Speicher anders initialisiert war und alles explodiert. Damit war dann eigentlich auch alles rumgesuche im Git-Log recht nutzlos...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

OMG OMG OMG
Broken Reality 2000 is coming Summer 2023
OMG OMG OMG
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von xq »

Krishty hat geschrieben: 04.02.2023, 15:48 OMG OMG OMG
Broken Reality 2000 is coming Summer 2023
OMG OMG OMG

OMG OMG OMG
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Antworten