CapFrameX - Capture und Analyse Tool

Also arbeitet die Aufnahmezeit doch so simpel dass einfach nach n Sekunden nochmal der hotkey getriggert wird? Nur dass ich das ein bisschen näher verstehe^^^
Und die Delay Zeit verzögert den Befehl durch das Drücken des Hotkeys einfach um n Sekunden, würde also das aktuell vorhandene Delay noch mal um diese Zeit verlängern?
 
OK, das ganze funktioniert so. Ich habe den Key Event Hook komplett rausgeschmissen aus der Command Line und meinen eigenen implementiert. Es kann nun nicht mehr passieren, dass eine Anwendung/ein Spiel die Events verschluckt. Empfängt CX ein Hotkey Signal, wird der Service mit allen Infos gestartet. Ich habe leider keinen Einfluss darauf, wann der Service mit dem Capturing beginnt. Das ist das aktuelle Problem. Drückt der Anwender den/die Hotkey(-Kombination) erneut, schieße ich den Service knallhart ab. Das funktioniert deswegen, weil der Service Daten(zeilen) instantan in die Datei streamt.

Wenn Jefferson den Service nun so aufbohrt, dass der Outputstream direkt von mir umgeleitet werden kann, kann der Service permanent laufen. Erst wenn ich mich einklinke, habe ich Daten, die ich zwischenpuffern, filtern usw. kann. Die Key Events* starten und stoppen dann das Einklinken und Speichern/Filtern von Daten. Ein saubere Sache.

* eigentlich sind es die Handler der Events, aber wir wollen nicht päpstlicher sein als der Papst ^^
 
Also würde PresentMon dann dauerhaft aufzeichnen, sobald man einen Prozess ausgewählt hat, bzw. später mit Auto Capture schon sobald man nur auf der Capture Seite ist?
Und du holst dir über die Hotkeys dann nur den Part der zwischen den Hotkey Betätigungen liegt, als Datei raus?

Kann ich mir gar nicht vorstellen, dass das nicht eine dauerhafte Last erzeugt, aber andererseits wird ja aktuell während der Aufnahme auch nicht großartig Last erzeugt.

Aber allgemein hört es sich so an, als würde es dich nun dank der Hilfe doch keine 2 Wochen zurückwerfen.
 
Die Last ist wirklich minimal und lässt sich nicht vermeiden, was jedem klar sein sollte. Wenn jetzt allerdings ein Quadcore bis zum Anschlag ausgereizt wird, kann das einen Impact verursachen. Aber wer gurkt denn heuzutage noch mit Quadcores rum, wo AMD 8 Kerner für 200 Euro im Angebot hat... :D
Ergänzung ()

Es wird wohl 2 Wochen dauern, da ich zwischendurch mal ein paar Tage unterwegs bin.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Taxxor
ZeroStrat schrieb:
Es wird wohl 2 Wochen dauern, da ich zwischendurch mal ein paar Tage unterwegs bin.
Was fange ich in der Zeit nur mit meinem Leben an :D
 
Taxxor schrieb:
Was fange ich in der Zeit nur mit meinem Leben an :D

C# lernen? :pcangry:
Ergänzung ()

Timer läuft bzw. ist nun angebunden. Beispiel mit 10 Sekunden:
778081

Ergänzung ()

Neue Version mit folgenden Änderungen:
  • Service wird ein bisschen zügiger aufgerufen. Auf meinem System liegt der Delay bei unter einer Sekunde
  • Neue Aufzeichnungen werden oben in der Liste eingefügt, so dass man nicht mehr scrollen muss, wenn man eine gerade gemachte Aufzeichnung analysieren will
  • Info Text wird instantan aktualisiert, wenn man Aktionen durchführt auf der Capture Seite
  • Capture time ist nun einstellbar. Ist dann aktiv, wenn der Wert ungleich 0 ist
  • @Taxxor ist weiterhin ausgiebig beschäftigt mit Tests :D
778086
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: cm87
ZeroStrat schrieb:
Neue Aufzeichnungen werden oben in der Liste eingefügt, so dass man nicht mehr scrollen muss, wenn man eine gerade gemachte Aufzeichnung analysieren will
Oh ja das hat mich vor Allem beim Testen ob überhaupt Dateien erstellt werden genervt, habe ich glatt vergessen als Verbesserung zu erwähnen, aber gut dass du es auch so gemacht hast^^

Teste jetzt mal den Delay an PC und Laptop
Ergänzung ()

Am PC

Kingdom Come(hohe Last)

10s Benches
7.98
9.14
8.34
durchschnittliches Delay: 1.51s

5s Benches
3.58
3.75
3.57
durchschnittliches Delay: 1.37s

Witcher 3(mittlere Last)

10s Benches
8.84
8.64
8.44
durchschnittliches Delay: 1.36s

5s Benches
3.55
3.81
3.78
durchschnittliches Delay: 1.28s


Am Laptop

Two Point Hospital(hohe Last)

10s Benches
7.91
7.8
7.75
durchschnittliches Delay: 2.18s

5s Benches
2.6
3.73
2.54
durchschnittliches Delay: 2.04s


Plague Inc(mittlere Last)

10s Benches
8.31
8.31
8.31
durchschnittliches Delay: 1.69s

5s Benches
3.09
3.09
2.54
durchschnittliches Delay: 2.09s
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ZeroStrat
Nein, ist bei beiden Systemen aktiv
 
Hm, sieht nicht so gut aus. Der Umbau des Services muss als nächstes angegangen werden.
 
Ich dachte das wäre sowieso der nächste Schritt, auch wenn es bei mir jetzt überall nur eine Sekunde gewesen wäre.
 
Eigentlich könnte ich mit was anderem weitermachen, oder ich mache einfach mal ne Pause...
 
  • Gefällt mir
Reaktionen: Beschi
Stimmt, du musst ja jetzt eh erst mal auf das Aufbohren des Service warten.
Ich wäre ja für die Horizontalbalken ála PCGH, damit die Comparison Seite mal fertig wird^^

Aber eine Pause hättest du dir auch verdient.
 
  • Gefällt mir
Reaktionen: Beschi
Jefferson braucht noch bis Ende der Woche. Ich glaube, ich setze mich dann morgen doch nochmal an die Comparison Seite, wenigstens konzeptionell.
 
@ZeroStrat

Schon mal grob meine ersten Gedanken:

Als erstes würde ich den Hex Code und den farbigen Kreis aus der rechten Liste rausnehmen, damit machst du die Liste direkt mal 50% schmaler.
Die Liste würde ich dann bis fast ganz nach unten ziehen, die Data/Chart Settings darunter, so breit wie die Liste. Beim Aufklappen wird dann auch nur die Liste überdeckt bzw. verkleinert.

Dann würde ich die L Shapes ins gleiche Tab packen, da ja die vertikalen Balken wegfallen, dann hat man beides zusammen.

Für die Balkendiagramme dann einen neuen Tab, während die Liste rechts sowie die Data/Chart Settings bestehen bleiben.

Die Settings fallen dann etwas umfangreicher aus, unterteilt in Settings für die Graphen und Settings für die Balken.

Bei den Settings für die Balken kann man dann z.B. einstellen, welche Parameter man sehen möchte(genau wie bei der Single Record Page, vielleicht hier auf maximal 3 gleichzeitig begrenzt) und nach was die Balken sortiert sein sollen, da würde dann nur das zur Auswahl stehen, was man auch bei den Parametern ausgewählt hat.

Die Beschriftung der Balken läuft über das Menü in der rechten Liste, wie jetzt auch. Dort würde ich aber den jeweiligen Kontext auch gerne sehen, damit man einen Record auch gezielter identifizieren und rauslöschen kann.
Die Balkendicke sollte immer gleich sein und auch die Abstände zwischen den Records sollten konstant bleiben und die Dicke der Balken auch nicht mit dem Fenster skalieren, wie auf der Single Record Page, wo die Balken auseinander gehen und sehr dick werden wenn man das Fenster vergrößert und nur wenige Balken hat.
Wenn man nur zwei Records drin hat mit 2 Parametern, dann ist eben im Fenstermodus 60% und im Vollbild dann 80% der Seite leer, dafür sind aber die Balken nah beieinander damit man den optischen Vergleich bestmöglich sieht.

Das Setting für absoluter und relativer Vergleich in der Liste entfällt komplett, da ja durch Mouseover über einen Balken der Relativmodus von jeweiligen Balken ausgehend getriggert werden soll.
Allerdings nur so, dass die Beschriftung von absoluten fps in relative % wechselt und nicht, dass sich die Balkenlängen selbst verändern, wie aktuell.


Ein paar Paint Bilder, wie das in etwa aussehen könnte:
778407

778408

778413
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Beschi und ZeroStrat
Cool, dann haben wir schon mal eine Diskussionsgrundlage. 👍
 
  • Gefällt mir
Reaktionen: Beschi und Taxxor
Ergänzung zur Beschriftung der Balken:
Eigentlich vergleicht man doch sowieso nur Records des gleichen Spiels, meist sogar der gleichen Szene.
Mir wäre zumindest kein Fall geläufig, in dem man verschiedene Spiele hier miteinander vergleichen würde.
Daraus ließen sich auch keine relevanten Informationen ziehen.
Was würde es mir z.B. bringen, wenn ich eine Szene aus Kindom Come mit einer Szene aus Metro Exodus vergleiche?

Die realistischen Anwendungsfälle, die ich sehe, wären:
  • Gleiches Spiel, andere Szenen, gleiche Settings, gleiche Hardware
  • Gleiches Spiel, gleiche Szenen, andere Settings, gleiche Hardware
  • Gleiches Spiel, gleiche Szenen, gleiche Settings, andere Hardware
Dann könnte man auch nur auf den Kontext als Beschriftung setzen und den Namen des Spiels einmal als Überschrift über das gesamte Feld schreiben, entweder automatisch aufgrund der Records in der Liste, oder man macht ein Feld hin, wo man selbst was reinschreiben kann, z.B. "Kingdome Come RAM Latenz Vergleich"
Am besten beides zusammen: Der Name des Prozess wird automatisch reingeschrieben, damit man nicht jedes mal manuell was reinschreiben muss, wenn man aber zusätzliche Infos in die Überschrift packen will, kann man sie bearbeiten.

Dazu müsste natürlich eingestellt werden, dass man nur gleiche Spiele in die Liste ziehen darf.

Diese Beschränkung würde dafür im Gegenzug das Bild deutlich aufräumen, auch im Hinblick auf einen späteren png Export, weil nicht vor jedem einzelnen Balken "Kindgom Come" stehen müsste.
Auch die Beschriftung der Legende bei den Graphen würde dadurch schlanker werden.
Ergänzung ()

Ein Fall fällt mir doch ein:
Wenn man z.B. vor einem Hardwarewechsel 4 Spiele bencht und nach dem Hardwarewechsel die gleichen Spiele und Szenen noch mal, und das gebündelt darstellen will, hat man in der Comparison 8 Balken mit 4 Spielen jeweils vorher und nachher.
Genau so wenn man RAM Skalierung in mehreren spielen testet und dort auch alles in einer Tabelle haben möchte, also immer je 2 Datensätze pro Spiel in verschiedenen settings.


Das wäre mit der oben genannten Vorgehensweise nicht möglich, andererseits sind dann die Comparisons, in denen man immer das gleiche Spiel hat, wieder unnötig viel beschriftet.



Einfachste Lösung wäre eine "Hide Process Name" Option, am besten als gut sichtbarer Button dort wo auch der Button für die Kontextauswahl ist oder direkt in diesem Menü.
Dann könnte man für den Fall, dass man nur gleiche Spiele drin hat die Namen ausblenden und wenn man verschiedene drin hat einblenden.

Die Überschrift würde dann weiterhin so funktionieren, wie oben beschrieben, der Name des ersten Prozesses, der in die Liste gezogen wird, wird automatisch reingeschrieben, wenn man verschiedene Spiele reinzieht, kann man die Überschrift ja bearbeiten.


Für mehrere Spiele müsste man dann übrigens auch eine weitere Option für die Sortierung bieten, dass man nach Namen oder Kontext sortieren kann.
Und eine freie Sortierung, wo es einfach so angeordnet ist, wie es in der rechten Liste steht. Dann muss man die Einträge dort per Drag and Drop verschieben können.
 
Zuletzt bearbeitet:
Ich fange mal an, meine Gedanken dazu aufzuschreiben. Ich ergänze Stück für Stück hier in diesem Post.

Dein Konzept überzeugt mich. Ich würde das vom grundsätzlichen Konzept her tatsächlich so übernehmen. Begründung:
  • Die L-Shapes kommen wieder mehr in den Vordergrund. Das finde ich gut, weil ich möchte, dass sich der Begriff und insbesondere das Konzept dahinter etabliert in der Szene.
  • Die Settings waren vorher viel zu stark im Vordergrund und platzraubend. So wäre es genau angemessen und dennoch schnell auswählbar
  • Einen weiteren Tab für die Balkendiagramme hatten wir eh vorgesehen. Passt also.
Ergänzungen:
  • Ein Sortierung-Button sollte direkt neben dem Balkendiagramm positioniert werden und nicht in den Settings "versteckt" sein.
  • Die Listeneinträge können noch schlanker werden.
  • Die Settings können noch ein wenig platzsparender sein. 50% der Höhe sollten reichen.
  • Ich möchte unbedingt die FPS visualisieren. Aber wo sollte der Schalter hin, um das umschalten zu können? Eine Integration in die Settings fänd ich suboptimal.
  • Das "Use" in der Parameterliste kann raus.
Zum Thema Spielename in der Balkenbeschreibung: ja, das kann dort raus und irgendwie in die "globale" Legende.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Taxxor
ZeroStrat schrieb:
  • Die L-Shapes kommen wieder mehr in den Vordergrund. Das finde ich gut, weil ich möchte, dass sich der Begriff und insbesondere das Konzept dahinter etabliert in der Szene.
Das war auch das Ziel. Als Computerbase mit den Frametime Messungen angefangen hat, hatte man auch immer den L-Shape Graph direkt unter den Frametime Graph gepackt.

Auf die Gefahr hin, dass es unübersichtlich wird, wenn du den Post erweiterst, hier mal meine Ergänzungen zu deinen Ergänzungen^^

ZeroStrat schrieb:
  • Ein Sortierung-Button sollte direkt neben dem Balkendiagramm positioniert werden und nicht in den Settings "versteckt" sein.
Fände ich auch besser, jedoch wollte ich dem Frame für die Diagramme möglichst wenig Platz weg nehmen, man könnte so einen Button aber genauso gut rechts oben platzieren, wo die Kontextauswahl ist, dann ist er direkt daneben und nimmt gleichzeitig keinen Platz weg.


ZeroStrat schrieb:
  • Die Listeneinträge können noch schlanker werden.

Ich hatte keine Ahnung, wie wichtig dir die Informationen sind, die momentan dort drin stehen, deshalb hab ich sie erst mal so gelassen. Aber ich denke wenn man den einstellbaren Kontext dort reinpackt, kann man den Großteil der anderen Infos auch weglassen.

Bei der Breite wollte ich nur so viel wegnehmen, dass die Settings, die dann die gleiche Breite haben, noch genug Platz haben, aber wenn man aus "Statistic parameter settings" nur "Parameter settings" macht, kann man schon wieder schmaler gehen.

ZeroStrat schrieb:
  • Die Settings können noch ein wenig platzsparender sein. 50% der Höhe sollten reichen.
Auch da habe ich es erst mal extra soweit hochgezogen, falls du noch mehr Dinge dort reinpacken willst, die Höhe war eher ein Platzhalter. Es scheint ja so, als werden es eher weniger Dinge^^

Übrigens, wenn du die Sortierung schon nicht in den Settings sondern direkt beim Balkendiagramm haben möchtest, braucht es eigentlich auch die Parameter Auswahl nicht in diesen Settings, die könnten dann ebenfalls als Button neben den Sortierungs Button.
Denn an der Stelle ist durch den Wegfall des Absolut/Relativ Buttons sowieso nur noch der Kontext Button, Platz wäre noch für mindestens drei weitere Buttons, zwei davon können dann die Sortierung und die Parameter Auswahl sein.
Dann ist das Settings Menü nur fast leer^^


ZeroStrat schrieb:
  • Ich möchte unbedingt die FPS visualisieren. Aber wo sollte der Schalter hin, um das umschalten zu können? Eine Integration in die Settings fänd ich suboptimal.

Wäre ein Tab im Tab möglich? Dann sind die L-Shapes unten immer da und oben kann man zwischen Frametimes und FPS wechseln.
778654


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^^

ZeroStrat schrieb:
  • Das "Use" in der Parameterliste kann raus.
Ja, das gilt auch für die Single Record Page. Für die Comparison Page würde ich aber auf keinen Fall standardmäßig alle auswählen^^ Default sollten die ausgewählt sein, die jetzt auch drin sind: Average, P1 und P0.1.


ZeroStrat schrieb:
Zum Thema Spielename in der Balkenbeschreibung: ja, das kann dort raus und irgendwie in die "globale" Legende.

Hier sehe ich bisher am meisten Variation bezüglich der Umsetzung.
Wichtig wäre eben, dass man, wenn alle Balken das gleiche Spiel behandeln, irgendwo stehen hat um was es sich handelt, ohne dass man es überall dran schreiben muss.
Hat man aber mehrere Spiele zusammen, müsste es wiederum an den Balken stehen, eine Legende wäre da ja nur möglich, wenn man die Balken je nach Spiel anders einfärbt und ich finde den aktuellen Ansatz mit festen Farben für die Parameter statt für die einzelnen Records eigentlich besser, sonst müsste man anfangen, jeden einzelnen Balken innerhalb der Records mit dem Parameter zu beschriften weil man keine Legende für die Parameter mehr hätte.


Meinen Ansatz mit der Überschrift finde ich da eigentlich ganz gelungen, ich würde ihn hier noch mal verfeinern, sofern er sich technisch so umsetzen lässt:

  • Einen Button zum Umschalten der Namensanzeige gibt es nicht, standardmäßig werden keine Namen an den Balken angezeigt.
  • Solange in der Liste nur gleiche Prozesse sind, wird der Prozessname mit dem ersten eingefügten Prozess oben in eine Zeile über das Diagramm geschrieben, mit der Option das manuell zu bearbeiten, z.B. wenn der Prozessname nicht so gelungen ist . "wwzRetailEgs" fällt mir bei deinen Screenshots da besonders auf.
  • Zieht man einen Prozess rein, der nicht gleich den anderen in der Liste ist, also ist zu irgend einem Zeitpunkt mehr als ein Prozessname in der Liste, werden automatisch die Namen wieder eingeblendet und der Name in der Zeile über dem Diagramm gelöscht. Die leere Zeile kann aber weiterhin bearbeitet werden.
  • Wird der zweite Prozess entfernt, also sind wieder nur gleiche Prozesse in der Liste, werden die Namen automatisch wieder ausgeblendet.
 
Zuletzt bearbeitet:
Und noch drei allgemeine Anmerkungen, die die aktuelle Version betreffen, aber auch in der zukünftigen Version relevant sind:

- Bei der Legende der Graphen, sofern sie denn drin bleibt, muss der Strich definitiv dicker sein, ruhig 3-4x so dick. Meine Augen sind nicht die schlechtesten, aber ich kann die einzelnen Farben bei der Legende sehr schwer auseinander halten.
778678


- Die L-Shapes werden nicht dicker, wenn man mit der Maus auf einem Eintrag in der Liste ist. Vor Allem wenn sie später zusammen mit den Frametimes in einem View sind, sollte das rein.

- Wenn möglich, sollte dabei auch nicht nur die jeweilige Linie dicker, sondern die anderen Linien leicht transparent werden, gerade wenn die Linien nah beieinander sind, hilft das. Betrifft sowohl L-Shapes als auch Frametime/FPS Graphen.
 
Zuletzt bearbeitet:
Zurück
Oben