CapFrameX - Capture und Analyse Tool

Wir haben nun ein solides Konzept für die Comparison Page. Ich bin echt begeistert.

Ich würde sagen, dass ich einfach mal so anfange. Die Details ergeben sich dann mit der Zeit.

Ich werde übrigens ab jetzt mit unterschiedlichen Branches arbeiten, so dass ich auch mal was parallel entwickeln kann. Ich steige um auf SourceTree.

Edit: Ein Detail vielleicht doch noch erwähnt. Tabs in Tabs würde ich gerne vermeiden. Dafür kommt ja eine kleine Toolbar rechts oben.
 
Ich habe bis zum jetzigen Moment noch mal Kleinigkeiten in meinem Post erweitert, also ab jetzt kannst du die Infos so wie sie darin stehen daraus nehmen^^
Alles was mir ab jetzt noch einfällt, kommt dann als neuer Post.

ZeroStrat schrieb:
Wir haben nun ein solides Konzept für die Comparison Page. Ich bin echt begeistert.
Hat auch nicht mal lange gedauert, da mein erster Konzeptentwurf ja direkt Anklang gefunden hat^^


ZeroStrat schrieb:
Edit: Ein Detail vielleicht doch noch erwähnt. Tabs in Tabs würde ich gerne vermeiden. Dafür kommt ja eine kleine Toolbar rechts oben.
Das gehört unter anderem zu den erwähnten Ergänzungen in letzter Minute , wenn du meinen Post nochmal betrachtest^^
Alternativ könnte man hier auch den potenziell vierten Button über die rechte Liste packen zum umschalten, der dann nur sichtbar ist, wenn man sich im Line Charts Tab befindet.
Genau so könnte man die Parameter und Sortierungs Buttons nur einblenden, wenn man sich im Bar Charts Tab befindet.
Einzig der Kontextauswahl Button wäre in beiden Ansichten sichtbar, weil er auch als einziger in beiden Verwendung findet.
Dann sieht es da oben auch immer aufgeräumt aus^^
 
Falls das eine oder andere Detail zwischendurch untergehen sollte, erinnere mich bitte dran.
 
Ich muss ja selbst versuchen den Überblick zu behalten, was ich jetzt alles vorgeschlagen hab^^

Aus den Posts 455, 459 und 460 kannst du dir ja ne Liste erstellen. 457 kannst du ignorieren, das hab ich am Ende von 459 noch mal neu und kompakt geschrieben
 
@ZeroStrat Gibt es eigentlich eine Funktion z.B. in Excel(dann hoffentlich auch in LibreOffice), um aus zwei Listen eine dritte zu machen, die alle Daten der beiden Listen enthält ohne doppelte Einträge?
Oder auch einfach eine Funktion, die mir alles doppelte entfernt, wenn ich den Inhalt beider Listen zusammen einfüge?

Dann würde ich am Laptop auch mal alles mögliche aufmachen, was ich da so habe, um die Ignore Liste fürs Capturing zu ergänzen, wenn du das gleiche Prozedere dann mit deiner eigenen aktuellen Ignore Liste und meiner zusammengefügten Liste machst, wird deine Default Liste schon mal möglichst viel abdecken.
 
Du machst erst ein Union und dann ein Distinct/Unique.
 
Zuletzt bearbeitet von einem Moderator:
Zusammenfassung UI Konzept Comparison Page (Grafiken siehe hier):
  • 3 Column Grid Layout mit Tab Control, Toolbar zum Steuern der Graphen, Liste mit Comparisons und darunter Settings Expander in der 3. Spalte
  • Tab Control wird gegliedert in zwei Header:
    • Frametime/FPS Comparisons + L-shapes
    • Balkendiagramme mit vertikaler Anordnung
  • Die Balkendiagramme werden links mit dem Kontext beschriftet und rechts mit den Werten der ausgewählten Parameter. Das Alignment der Balken ist top.
  • Mouseover Events bezogen auf die Balken ändern den Modus zu einer relativen/prozentuellen Darstellung der Werte. Das ursprüngliche Setting dafür entfällt somit.
  • Balkenhöhe ist fix und ändert sich nicht durch Skalieren des Fensters
  • Toolbar in der zweiten Spalte bekommt Steuerelemente für Sortierung der Balkendiagramme, umschalten zwischen Frametimes und FPS
  • Settings Spalte enthält „Show context legend“, „Cutting Mode“, Statistikparameter („Use“ kann raus).
  • Die Listeneinträge sollten so schlank wie möglich sein (u.a. kann der Letter-Button raus).
  • Game Name als globale Info über das Tab Control setzen und dafür bei allen anderen Stellen entfernen.
  • Custom Infos (CPU, GPU usw.) unter der Record-Liste um ein Feld für den Game Namen ergänzen, damit man den Prozessnamen ersetzen kann. Der Prozessname ist mitunter etwas kryptisch.
  • Vorerst müssen dann Records, die von einem anderen Spiel sind, geblockt werden, damit das aktuelle Set konsistent bleibt. Das kann geschickter verwaltet werden, wird aber zunächst wegen des Aufwandes zurückgestellt.
  • Dickere Linien in der Legende
  • L-Shapes auch mit Highlighting
  • Highlighting mit etwas Transparenz der nicht aktiven Charts
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Taxxor
ZeroStrat schrieb:
  • Game Name als globale Info über das Tab Control setzen und dafür bei allen anderen Stellen entfernen.
Über das Tab Control?
Ich hätte ihn jetzt hier hin gesetzt.
778889


Einen Screenshot Mode wird die Comparison doch bestimmt auch irgendwann bekommen, oder? Dann muss man die Tabs nicht mit einfangen, nur weil die Überschrift darüber liegt. Oder funktioniert das so nicht, weil es innerhalb des Diagramms ist?


ZeroStrat schrieb:
  • Custom Infos (CPU, GPU usw.) unter der Record-Liste um ein Feld für den Game Namen ergänzen, damit man den Prozessnamen ersetzen kann. Der Prozessname ist mitunter etwas kryptisch.
Könnte CX auch automatisch die Namen ändern?
Dann bräuchte man gar kein zusätzliches Feld unter der Liste sondern könnte mit dem Kontextmenü arbeiten und in den allgemeinen Optionen oben Rechts eine globale Liste anlegen, ähnlich der dort schon vorhandenen Ignore Liste.

Wenn man dann z.B. auf den Eintrag "r5apex" rechtsklickt, kann man "edit name" wählen und bekommt ein Eingabefenster. Wenn man dort "Apex Legends" eingibt, erscheint in den Optionen "r5apex=Apex Legends;" und dadurch werden alle Einträge mit r5apex als Apex Legends angezeigt

Wenn man das gleiche dann bei "SC2_x64" macht und "Starcraft II" eingibt, steht in der Liste
"r5Apex=Apex Legends; SC2_x64=Starcraft II" und die beiden Einträge werden automatisch umbenannt.

Mein Vorschlag die automatische Überschrift editierbar zu machen, ist dadurch ja nicht mehr notwendig.
 
Zuletzt bearbeitet:
ZeroStrat schrieb:
  • Vorerst müssen dann Records, die von einem anderen Spiel sind, geblockt werden, damit das aktuelle Set konsistent bleibt. Das kann geschickter verwaltet werden, wird aber zunächst wegen des Aufwandes zurückgestellt.
Okay, du nimmst also vorerst meinen ersten Ansatz mit dem Beschränken auf ein einziges Game.

Aber ich hätte gedacht, diese Beschränkung einzubauen wäre nicht weniger aufwendig als den globalen Namen auszublenden und die Namen an den Balken einzublenden, wenn mehrere Spiele drin sind.

Denn das Erkennen, ob verschiedene Spiele in der Liste sind, muss ja so oder so erfolgen und das Schreiben des globalen Namens aufgrund der Dateien in der Liste ebenso.
Wenn du erkennen kannst, das man einen zweiten Record reinzieht, der einen anderen Prozessnamen hat, hast du ja schon einen Trigger, den du für beide Varianten nutzen kannst.

Statt durch diesen Trigger das Einfügen zu blockieren, kannst du doch stattdessen einfach den globalen Namen löschen und die Namen zusätzlich zum Kontext an den Baken einblenden.
Du bräuchtest nur zusätzlich noch einen Trigger, sobald wieder nur gleiche Prozesse in der Liste sind, damit die Benennung wieder auf die globale Überschrift umgeschaltet wird.


Denke ich da zu simpel?


ZeroStrat schrieb:
  • 3 Column Grid Layout mit Tab Control, Toolbar zum Steuern der Graphen, Liste mit Comparisons und darunter Settings Expander in der 3. Spalte
Zum Verständnis, alle aufgelisteten Punkte kommen in eine Spalte? Was sind denn dann die anderen beiden?
Es bleiben doch nur noch die Diagramme übrig als zweite Spalte, wobei ich das Tab Control da sehe, wo es aktuell auch ist, also in der gleichen Spalte.
Oder zählst du die Record Liste dazu? Die ändert sich mit den verschiedenen Views ja sowieso nicht
 
Zuletzt bearbeitet:
Taxxor schrieb:
Über das Tab Control?
Ich hätte ihn jetzt hier hin gesetzt.
Anhang anzeigen 778889

Einen Screenshot Mode wird die Comparison doch bestimmt auch irgendwann bekommen, oder? Dann muss man die Tabs nicht mit einfangen, nur weil die Überschrift darüber liegt. Oder funktioniert das so nicht, weil es innerhalb des Diagramms ist?

Könnte man so machen. Dann muss es bei beiden Tabs gesetzt werden als Überschrift. Dadurch hält man sich aber tatsächlich den Platz für andere Buttons usw. wie z.B. für Screenshots frei.

Taxxor schrieb:
Könnte CX auch automatisch die Namen ändern?
Dann bräuchte man gar kein zusätzliches Feld unter der Liste sondern könnte mit dem Kontextmenü arbeiten und in den allgemeinen Optionen oben Rechts eine globale Liste anlegen, ähnlich der dort schon vorhandenen Ignore Liste.

Wenn man dann z.B. auf den Eintrag "r5apex" rechtsklickt, kann man "edit name" wählen und bekommt ein Eingabefenster. Wenn man dort "Apex Legends" eingibt, erscheint in den Optionen "r5apex=Apex Legends;" und dadurch werden alle Einträge mit r5apex als Apex Legends angezeigt

Wenn man das gleiche dann bei "SC2_x64" macht und "Starcraft II" eingibt, steht in der Liste
"r5Apex=Apex Legends; SC2_x64=Starcraft II" und die beiden Einträge werden automatisch umbenannt.

Mein Vorschlag die automatische Überschrift editierbar zu machen, ist dadurch ja nicht mehr notwendig.

Automatisch geht das sicherlich nicht. Ich bin tatsächlich für eine zentrale Stelle, dann kann man es überall bequem verwendet werden. Initial steht dann in dem Feld der Prozessname, der beliebig ersetzt werden kann. Man könnte sogar noch eine Version dazuschreiben. Außerdem wird es dann auch sauber in der Datei abgespeichert.
 
@ZeroStrat Das heißt, wenn ich 5 Aufnahmen von Apex mache, muss ich anschließend bei allen 5 Dateien nacheinander Apex Legends eintragen?

Ersetzt du dann den Prozessnamen in der Datei oder kommt einfach ne weitere Spalte hinzu mit dem Custom Namen, der bei CX dann angezeigt wird?
Ersteres würde es erschweren, verschiedene Prozesse in der Comparison Liste zu erkennen, wenn man nich alle genau gleich umbenannt hat. Aber auch bei zweiterem frage ich mich, wie man dann den Game Namen drüber schreibt, wenn es 4mal mit Custom Name Apex Legends und einmal ohne Custom Name drin ist.
 
Taxxor schrieb:
Okay, du nimmst also vorerst meinen ersten Ansatz mit dem Beschränken auf ein einziges Game.

Aber ich hätte gedacht, diese Beschränkung einzubauen wäre nicht weniger aufwendig als den globalen Namen auszublenden und die Namen an den Balken einzublenden, wenn mehrere Spiele drin sind.

Denn das Erkennen, ob verschiedene Spiele in der Liste sind, muss ja so oder so erfolgen und das Schreiben des globalen Namens aufgrund der Dateien in der Liste ebenso.
Wenn du erkennen kannst, das man einen zweiten Record reinzieht, der einen anderen Prozessnamen hat, hast du ja schon einen Trigger, den du für beide Varianten nutzen kannst.

Statt durch diesen Trigger das Einfügen zu blockieren, kannst du doch stattdessen einfach den globalen Namen löschen und die Namen zusätzlich zum Kontext an den Baken einblenden.
Du bräuchtest nur zusätzlich noch einen Trigger, sobald wieder nur gleiche Prozesse in der Liste sind, damit die Benennung wieder auf die globale Überschrift umgeschaltet wird.

Eigentlich sollte das gar nicht so aufwendig sein. Mal schauen...

Taxxor schrieb:
Zum Verständnis, alle aufgelisteten Punkte kommen in eine Spalte? Was sind denn dann die anderen beiden?
Es bleiben doch nur noch die Diagramme übrig als zweite Spalte, wobei ich das Tab Control da sehe, wo es aktuell auch ist, also in der gleichen Spalte.
Oder zählst du die Record Liste dazu? Die ändert sich mit den verschiedenen Views ja sowieso nicht

Da habe ich mich unklar ausgedrückt. Es wird insgesamt 3 Spalten geben. Alles wird ordentlich verteilt.

Taxxor schrieb:
@ZeroStrat Das heißt, wenn ich 5 Aufnahmen von Apex mache, muss ich anschließend bei allen 5 Dateien nacheinander Apex Legends eintragen?

Ersetzt du dann den Prozessnamen in der Datei oder kommt einfach ne weitere Spalte hinzu mit dem Custom Namen, der bei CX dann angezeigt wird?
Ersteres würde es erschweren, verschiedene Prozesse in der Comparison Liste zu erkennen, wenn man nich alle genau gleich umbenannt hat. Aber auch bei zweiterem frage ich mich, wie man dann den Game Namen drüber schreibt, wenn es 4mal mit Custom Name Apex Legends und einmal ohne Custom Name drin ist.

Du willst gleich den maximalen Komfort. :D Man könnte tatsächlich eine kleine Datenbank pflegen, die Vorschläge machen kann. Ich würde übrigens immer beides vorhalten, Game Name und Prozessname und die Listeneinträge immer über den Prozessnamen eindeutig identifizieren.
 
@ZeroStrat Und das lässt sich wirklich nicht automatisieren?

Du liest doch schon den Dateinamen aus und machst z.B. aus "OCAT-r5apex.exe-2019-04-04T180955" in der Record Liste den Game Namen r5apex.
Also CX nimmt ja schon einen Teil des Dateinamens und macht daraus einen Namen. Kann man nun nicht sagen, dass man eine Liste von möglichen Dateinamen bzw diesem Part der Dateinamen nimmt und wenn der Dateiname "-r5apex.exe-" enthält, ein Custom Comment mit Apex Legends in die Datei geschrieben wird?

Oder läuft das primitiver ab als ich denke und der Text wird gar nicht aktiv erkannt und das .exe rausgefiltert, sondern einfach nur was auch immer zwischen dem ersten Bindestrich und dem (exe) Punkt des Dateinamens steht übernommen?



ZeroStrat schrieb:
Ich würde übrigens immer beides vorhalten, Game Name und Prozessname und die Listeneinträge immer über den Prozessnamen eindeutig identifizieren.

Erschwert aber weiterhin die Generierung eines globalen Game Namens, wenn der Comment nicht überall gleich ist.
In dem Fall würde, wenn du es so umsetzen kannst, die Namen wieder an die Balken geschrieben. Und hier kommt dann gleich die nächste Frage: Was schreibt man dann hin? den Prozessnamen oder den Custom Namen? Wenn einer der Datensätze keinen Custom Namen eingetragen hat?
 
Zuletzt bearbeitet:
Wenn beides eindeutig ist, dann ist es ja egal, worüber man identifiziert. Ne kleine Liste muss man so der so pflegen, um den Prozessnamen automatisch ersetzen zu können. Man muss es mind. einmal richtig eintippen und anschließend speichern. Aktualisiert man den Eintrag (man muss ja korrigieren können) wird der letzte Stand überschrieben. Ich hatte dich übrigens zunächst wegen des Automatismus falsch verstanden
..
 
ZeroStrat schrieb:
Ich hatte dich übrigens zunächst wegen des Automatismus falsch verstanden
Ah also würde das so funktionieren wie ich es eben geschrieben habe?
Dann erübrigt sich ja auch die Frage was passiert wenn nicht alle den gleichen custom Namen hätten, denn das kann dann ja gar nicht vorkommen und alles ist gut.

Jetzt würde mich aber schon interessieren, was du dachtest was ich meine^^


Und noch was: Ich habe gerade in der Ereignisanzeige gesehen, dass jedes mal wenn ich eine Messung mit CX gemacht habe, eine Warnung aufgetreten ist:
Die Wiederherstellungsdatei für die Echtzeitsitzung "PresentMon" hat die maximal zulässige Größe erreicht. Daher werden neue Ereignisse für diese Sitzung erst dann wieder protokolliert, wenn Speicherplatz verfügbar wird. Dieser Fehler wird häufig durch den Start einer Ablaufverfolgungssitzung im Echtzeitmodus verursacht, für die keine Echtzeitconsumer vorhanden sind.
Hat das irgendwas zu sagen?
 
Zuletzt bearbeitet:
Taxxor schrieb:
Ah also würde das so funktionieren wie ich es eben geschrieben habe?
Dann erübrigt sich ja auch die Frage was passiert wenn nicht alle den gleichen custom Namen hätten, denn das kann dann ja gar nicht vorkommen und alles ist gut.

Jetzt würde mich aber schon interessieren, was du dachtest was ich meine^^

Ich hatte es so verstanden, dass du den Game Namen irgendwo automatisch auslesen willst, aus irgendeiner Config oder der Registry. Das wäre natürlich so im Allgemeinen schwierig.

Taxxor schrieb:
Und noch was: Ich habe gerade in der Ereignisanzeige gesehen, dass jedes mal wenn ich eine Messung mit CX gemacht habe, eine Warnung aufgetreten ist:

Hat das irgendwas zu sagen?

Das muss ich mir anschauen. Aber keinen Speicherplatz verfügbar klingt erstmal nicht so gut.
 
Zuletzt bearbeitet von einem Moderator:
ZeroStrat schrieb:
Das muss ich mir anschauen. Aber keinen Speicherplatz verfügbar klingt erstmal nicht so gut.
Habs auch gerade mal mit OCAT gegengetestet, da kommt die Warnung nicht.
Die Warnung ist auch vom Zeitstempel her ein paar Sekunden nach Abschluss der Messung.

Diesmal kam sogar noch ein Fehler dazu

Messung gestartet 11:14:25
Messung beendet 11:14:30

11:14:25 Fehler: Beim Starten der Sitzung "PresentMon" ist der folgende Fehler aufgetreten: 0xC0000035.
11:14:38 Warnung: Die Wiederherstellungsdatei für die Echtzeitsitzung "PresentMon" hat die maximal zulässige Größe erreicht.......

Die Aufnahme ist aber ganz normal gemacht und erstellt worden.(Wenn man vom Delay absieht)

Könnte das vielleicht sogar mit dem Delay zusammenhängen? Denn die Aufnahme startet ja nicht bei 11:14:25, wo der Fehler angezeigt wird, sondern 1-2 Sekunden später. Allerdings wenn ich zurückgehe, ist bei den anderen Zeiten wo ich eine Aufnahme gemacht habe so ein Fehler nicht da, nur die Warnung.
 
Zuletzt bearbeitet:
Kleines Update. Leider noch keine neue Version von Jefferson. Ich hoffe nicht, dass ich den Code von PresentMon selbst anpassen muss. Das könnte hart werden...

Meine neue Branch-Struktur steht, SourceTree ist eingerichtet. Ich kann also gleichzeitig an der Capture-Funktion und der neuen Comparison-Seite arbeiten, ohne Chaos zu verursachen.
 
  • Gefällt mir
Reaktionen: Taxxor und Beschi
@ZeroStrat Solange von Jefferson nichts kommt, würde ich mich mit der Comparison Seite beschäftigen^^
Nicht, dass du jetzt anfängst, im PresentMon Code rumzufuchteln und 2 Tage später bekommst du die angepasste Version^^
 
Zurück
Oben