• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Programmier-Idee/Teamwork: "split-that-game"

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
  • Thread Starter Thread Starter
  • #21
Habe alles mit Symlinks verschoben und WINE meckert nicht, dafür SELinux.

Wie meinst du dass Wine meckert nicht, dafür (meckert) SELinux?

Na ja, wenn alle Dateien genutzt werden – die DAT-Datei ist sehr groß – ergibt das Verschieben gar keinen Sinn. Einzelne Chunks kann man ja leider nicht auslagern.

Dass ist die Frage, wie viel MB aus der Datei immer geladen werden müssen, große Chunks ergibt einen SSD Kandidaten, nur sporadisch ein paar MB könnte auch eine HDD stemmen. Je nachdem wie die Datei verarbeitet wird. Allerdings sehe ich aktuell keine Möglichkeit das irgendwie in Bezug auf Performance her zu messen, leider. Da hilft theoretisch nur testen.
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.728
Ort
in der Zukunft
Die Symbolischen Links arbeiten auf Dateisystem-Ebene. Für Anwendungen die ihre Daten vom Betriebssystem anfordern ist es nicht ersichtlich woher die Daten kommen.
Daher funktioniert so oder so alles wie zuvor.

Für "Sicherheits-Programme" egel welcher Art - sieht eine Umleitung natürlich verdächtig aus. Diese Programme prüfen im Zweifel explizit darauf ob die Anfrage an "Datei X" umgeleitet wird und die Daten "irgendwoher" anders abgerufen werden.
Daher meckert SELinux und im Zweifel auch mal eine andere Sicherheitslösung.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
  • Thread Starter Thread Starter
  • #23
Wir haben nun ein Repository auf Github, Danke drfuture! :)

Dieses findet sich hier:
https://github.com/NGB-to/split-that-game

PS: wäre genial wenn man da ne einfach zu verstehende gui draufklatschen könnte und alles als exe verkleiden kann. (für windows normal user)

Und im aktuellen Release gibt es neben den Python3 Skripts auch Windows Executables:
https://github.com/NGB-to/split-that-game/releases/tag/0.0.1

Bitte beachtet, der [kw]PayLoadTimer.py/exe[/kw] sucht nach einer [kw]src.txt[/kw] in seinem Verzeichnis um den Ort zum protokollieren zu wählen.
 
Zuletzt bearbeitet:

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Das Projekt klingt ganz cool. Vermutlich nicht für Rollenspiele oder sowas, wohl aber für Strategiespiele zum Beispiel. Da muss ja beispielsweise regelmäßig das Objekt eines Fußsoldaten erstellt werden, die allgemeine "Map" aber eher nur einmal zum Spielstart.

Auch stelle ich mir den Boost in verschiedensten anderen Programmen gut vor.

Dass am Ende natürlich alles bestenfalls in einer "einfachen" GUI Platz findet und man als Nutzer nur noch zwei Ordner auswählt und sagt "Mach mal" und irgendwann noch einen Klick macht "Bin fertig, schieb mal Kram rum", ist denke ich klar.
Dann würde ich das zumindest mal bei mir ausprobieren.
Wichtig wäre mir aber auch eine Funktion wie "mach es rückgängig" - also wo alle Dateien wieder an den korrekten Ort verschoben werden und Symlinks aufgelöst werden. Das bedeutet, dass neben dem Profil für die einzelnen Anwendungen auch noch eine Art von "Ich habe folgendes verschoben und verlinkt"-Liste abgespeichert wird. Das ist natürlich im Zweifel einige KB, vielleicht sogar wenige MB Overhead aber für mich auf alle Fälle wünschenswert.

Ich habe mir das PayLoadTimer-Skript noch nicht wirklich angeschaut. Speichert das nur einmal am Ende, welche Dateien wie häufig angefragt wurden und ähnliches? Ich könnte mir nämlich auch vorstellen, dass man daraus eine regelrechte Versuchsreihe machen könnte. Folgende Szenarien habe ich da so im Kopf

1) Das Skript speichert die Anzahl der Zugriffe auf eine Datei, ggf. speichert es auch noch dazu, wie groß diese Datei ist. Dann kann man über einen definierten Threshold entscheiden, wie viel % der Dateien auf die SSD kommen oder auch nicht.

2) Man zeichnet über mehrere Programm-Nutzungszeiträume Profile auf und hat die Möglichkeit diese mit einem irgendwie gearteten Algorithmus zu analysieren. Beispielsweise kann es ja vorkommen, dass einzelne Dateien nur bei wenigen Nutzungen viele Aufrufe haben, andere dafür aber immer sehr häufig angefragt werden.

3) Es sollte sich erkundigt werden, ob man auch eine Schnittstelle zu dem OS oder einer anderen naheliegenden Treiberebene hat, in der man auch auslesen kann, welche Teile der Datei gerade geladen wurden. Das würde die Profile zum Analsysieren erstmal ernorm vergrößern. Hierdurch kann man aber sehen, ob einzelne Dateibereiche regelmäßig angefragt werden (ggf HDD), oder aber eine ganze Datei auf einmal geladen werden muss (SSD).

4) Zudem könnte man als "Analyse" auch überlegen, ob es Sinn macht ein Vortrainiertes Neuronales Netz am Ende an den Nutzer auszuliefern, dass die Auswertung der Profile übernimmt und dabei die "beste Performance" ausgibt. Die Frage ist natürlich in wie weit jemand da eine Testreihe durchführen möchte und dort ein entsprechendes Netz (a) entwerfen und (b) trainieren möchte.

5) Es wäre vermutlich auch interessant zu wissen, in welchen zeitlichen Abständen die Zugriffe auf die Datei durchgeführt wurden. Viele Zugriffe zeitlich nah beieinander sprechen eher für eine SSD, viele Zugriffe, dafür aber mit größeren Pausen, sprechen für HDD. Entsprechendes sollte auch in den Profildaten enthalten sein.

---
Jetzt sind die Szenarien mit irgendwelchen Ideen, die mir im Kopf rumgeschwirt sind vermischt. Viel Spaß beim Querlesen und Kopfschütteln. Vielleicht habe ich ja schon einen sinnvollen Beitrag geleistet.:unknown:

---
Bezüglich Programmierer die dabei mitmachen. Ich werde zumindest mal in das Repo schauen und jenachdem, wie das hier weiter voran geht auch mal was beitragen - vielleicht aber auch nur Hinweise auf mögliche Probleme oder dergleichen geben. Ich bin (noch) nicht so sehr vertraut mit dieser Art der Projektumsetzung und halte mich da lieber etwas zurück.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
  • Thread Starter Thread Starter
  • #25
Das Projekt klingt ganz cool. Vermutlich nicht für Rollenspiele oder sowas, wohl aber für Strategiespiele zum Beispiel. Da muss ja beispielsweise regelmäßig das Objekt eines Fußsoldaten erstellt werden, die allgemeine "Map" aber eher nur einmal zum Spielstart.

Ich glaube man muß das sehr individuell sehen ob ein Titel mehr Daten dann vorlädt und evnetuell nachlädt bzw. ständig darauf zugreift.

Auch stelle ich mir den Boost in verschiedensten anderen Programmen gut vor.

Das wäre das Ideal.


Wichtig wäre mir aber auch eine Funktion wie "mach es rückgängig" - also wo alle Dateien wieder an den korrekten Ort verschoben werden und Symlinks aufgelöst werden. Das bedeutet, dass neben dem Profil für die einzelnen Anwendungen auch noch eine Art von "Ich habe folgendes verschoben und verlinkt"-Liste abgespeichert wird. Das ist natürlich im Zweifel einige KB, vielleicht sogar wenige MB Overhead aber für mich auf alle Fälle wünschenswert.

Indirekt ist das schon geplant, ich dachte an eine SQLite Schnittstelle für diese Informationen, wobei aber Profile bzw. Presets als Dateien vorliegen sollen, andere Settings zur Nutzung aber in der Datenbank, so in etwa. Das ist vor allem wichtig, da Windows ein Limit hat wie viele auf einmal verlinkt werden darf, 63 "Punkte" sind das Limit pro Verzeichnis und eventuell gilt das auch für Unterordner in dem gleichen Pfad.Das ist aber verlinkt. Daher wäre es wichtig die Symlink an und abschalten zu können um innerhalb dieses Limits zu bleiben. (Habe ich verlinkt.)

Ich habe mir das PayLoadTimer-Skript noch nicht wirklich angeschaut. Speichert das nur einmal am Ende, welche Dateien wie häufig angefragt wurden und ähnliches? Ich könnte mir nämlich auch vorstellen, dass man daraus eine regelrechte Versuchsreihe machen könnte. Folgende Szenarien [...]

Ja, es speichert die Anzahl der Zugriffe, per Standard jetzt alle 30 Sekunden - werden die Daten auf Zugriffe überprüft und die Zeiten der Zugriffe. Außerdem wird der Pfad und die Größe gespeichert. Eventuell könnte man auch die Größe während des Zugriffs in Byte messen lassen.

[...] habe ich da so im Kopf.

1) Das Skript speichert die Anzahl der Zugriffe auf eine Datei, ggf. speichert es auch noch dazu, wie groß diese Datei ist. Dann kann man über einen definierten Threshold entscheiden, wie viel % der Dateien auf die SSD kommen oder auch nicht.

Um das zu vereinfachen habe ich an ein "Scoring" System gedacht von 0 bis 10 gedacht. So kann man bewerten wie "dringend" eine Datei benötigt wird und dann einen Threshold nutzen. Also 10 wird viel/oft geladen, 0 wird nur einmal geladen. Die Punkte soll man aber selbst vergeben können. Zum Beispiel kann es sein das bei einem Rollenspiel ein Spielgebiet öfter geladen wird bei einem User, bei einem anderen gar nicht wirklich in der Messung auftaucht. Daher wäre hier ein einfaches System wünscheswert. Wenn du da ne Idee hast?

Auch bezogen auf deinen Punkt 2 hier:
2) Man zeichnet über mehrere Programm-Nutzungszeiträume Profile auf und hat die Möglichkeit diese mit einem irgendwie gearteten Algorithmus zu analysieren. Beispielsweise kann es ja vorkommen, dass einzelne Dateien nur bei wenigen Nutzungen viele Aufrufe haben, andere dafür aber immer sehr häufig angefragt werden.

3) Es sollte sich erkundigt werden, ob man auch eine Schnittstelle zu dem OS oder einer anderen naheliegenden Treiberebene hat, in der man auch auslesen kann, welche Teile der Datei gerade geladen wurden. Das würde die Profile zum Analsysieren erstmal ernorm vergrößern. Hierdurch kann man aber sehen, ob einzelne Dateibereiche regelmäßig angefragt werden (ggf HDD), oder aber eine ganze Datei auf einmal geladen werden muss (SSD).

Ebenfalls ein guter Punkt, da hab ich aber selbst noch keine Lösung zu gefunden ohne sich irgendwie einzu"häcken", eventuell helfen unter Windows die SysInternals Tools - wie SysMon oder ProcMon - da bin ich unschlüssig wie das analysiert werden kann.

4) Zudem könnte man als "Analyse" auch überlegen, ob es Sinn macht ein Vortrainiertes Neuronales Netz am Ende an den Nutzer auszuliefern, dass die Auswertung der Profile übernimmt und dabei die "beste Performance" ausgibt. Die Frage ist natürlich in wie weit jemand da eine Testreihe durchführen möchte und dort ein entsprechendes Netz (a) entwerfen und (b) trainieren möchte.

Naja, der Logik her gibt "Größe in Bytes, Häufigkeit" aktuell so die Idee, den Maßstab vor. Auch auf Punkt 3 bezogen. Sicherlich kann man da was "beratendes" entwerfen, was das einbezieht - zum Beispiel wenn man als Grenze seine Hardware "GB RAM, GB RAM Graifkkarte" angibt?

5) Es wäre vermutlich auch interessant zu wissen, in welchen zeitlichen Abständen die Zugriffe auf die Datei durchgeführt wurden. Viele Zugriffe zeitlich nah beieinander sprechen eher für eine SSD, viele Zugriffe, dafür aber mit größeren Pausen, sprechen für HDD. Entsprechendes sollte auch in den Profildaten enthalten sein.

Das wäre über die Score geregelt, das man sagen kann wie viel Punkte man "investieren will", "wie viel MB/GB dass ergeben und ob das mit den Regeln/Limits der Symlinks vereinbar ist.

---
Jetzt sind die Szenarien mit irgendwelchen Ideen, die mir im Kopf rumgeschwirt sind vermischt. Viel Spaß beim Querlesen und Kopfschütteln. Vielleicht habe ich ja schon einen sinnvollen Beitrag geleistet.:unknown:
---

Passt, und ich hoffe ich konnte dir ein paar deinen Punkte und Fragen beantworten.

Bezüglich Programmierer die dabei mitmachen. Ich werde zumindest mal in das Repo schauen und jenachdem, wie das hier weiter voran geht auch mal was beitragen - vielleicht aber auch nur Hinweise auf mögliche Probleme oder dergleichen geben. Ich bin (noch) nicht so sehr vertraut mit dieser Art der Projektumsetzung und halte mich da lieber etwas zurück.

No need to be shy :D

Edit: Es kommt nicht darauf an das die erste Lösung perfekt ist und oder alle Punkte umfasst - man lernt ja dazu und wenn erst mal was steht, um so mehr sicherlich. Also auch für Neueinsteiger eventuell geeignet weil es wenige bis keine Abhängigkeiten gibt. :)
 
Zuletzt bearbeitet:

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Mal ein anderer Gedanke: Weiß jemand ob gängige Anti-Cheat-Lösungen / Anti-Tamper-Lösungen / Kopierschutz etc sich über Junctions bzw. Symlinks beschweren? Sonst funktioniert das Tool nachher bei einer größeren Anzahl an Spielen überhaupt nicht, oder führt zu gesperrten Accounts.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
  • Thread Starter Thread Starter
  • #27
@Rakorium-M: Eine sehr gute Frage... sollten wir testen!

@all:
Hat jemand eine Möglichkeit dazu das zu testen?

Ich meine, es sollte nichts passieren.. weil die (Spiel)Daten ja nicht verändert werden, zum Beispiel wenn es über Checksums geht.
Edit: Und theoretisch weiß ja nur das OS um den neuen Pfad, auch was drfuture vorher erwähnte. Aber gut, getestet werden sollte es auf jeden Fall.

Ich hab leider nur Spiele ohne Kopierschutz, no Joke :o
 
Zuletzt bearbeitet:

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
So dann melde ich mich auch mal wieder. Ich habe mir die Skripte noch nicht angeschaut, da ich auch noch ein paar andere Dinde um die Ohren hatte (u.a. das Osterrätsel :D)

Was die Programmiersprache/UI Framework angeht werfe ich einfach mal C++ und CopperSpice in den Raum. C++ lässt sich auf so gut wie jedem System nativ kompilieren, sollte also bis auch einigen systemabhängigen Code (z.B. symlinks erstellen) für jedes System anwendbar sein.
Mit CopperSpice habe ich selbst auch keine Erfahrung, es ist aber von Qt abgespalten und von den Grundkonzepten ähnlich.
CopperSpice is a set of individual libraries which can be used to develop cross platform software applications in C++. It is a totally open source project released under the LGPL V2.1 license and was initially derived from the Qt framework. Over the last several years CopperSpice has completely diverged, with a goal of providing a first class GUI library to unite the C++ community.
Meine Erfahrung mit Qt ist auch nicht sonderlich viel, aber ich denke das ist schon machbar da reinzukommen.

Man könnte das auch komplett in Python umsetzen, wenn man ein geeigentes GUI Framework hat. Ich habe mit Kivy schon recht gute Erfahrungen gemacht. Da wir jetzt keine besonders hohen Anforderungen an Performance haben sehe ich da kein Problem darin wenn wir keinen nativ kompilierten Binaries haben. Und Python ist vielleicht ein wenig zugänglicher für Leute mit weniger Programmierkenntnissen.


Ich bin natürlich auch für andere Sprachen offen, wenn jemand einen besseren Vorschlag macht.

Da es hier noch nicht viel Struktur gibt wäre es doch erstmal interessant wer denn jetzt konkret Lust hat mitzumachen, wenn ja welche Programmiersprache ihr beherrscht bzw. bereit seid zu lernen. Es ist natürlich niemand verpflichtet dabei zu bleiben und wer will kann auch jeder Zeit später dazustoßen, aber einen groben Plan wer gerade an was arbeitet wäre nicht schlecht. Wir könnten den issue Tracker von github verwenden um Tickets anzulegen und zu tracken wer gerade was macht.

Ich schaue mir die kommenden Tage erstmal die bestehenden Skripte an und überlege mir mal etwas was man denn für ein "MVP" so alles braucht. Falls ich dazu komme würde ich auch mal ein Grundgerüst für eine GUI Anwendung aufsetzen.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
  • Thread Starter Thread Starter
  • #29
Man merkt richtig, da hat jemand Bock @exomo, find ich gut. :T
Hast du dir in der Zwischenzeit die Skripte mal angesehen?

---

Also grundsätzlich kann an Technologien alles genutzt werden, selbst ein Midnight Commander ähnliches System, zum Beispiel mit ncurses, also rein auf Text basierend, wäre möglich. Aber auch jede andere GUI Anwendung. Das eine System soll das andere nicht ausschließen und so fern sich Überlappungen finden, kann man ja gemeinsam etwas damit erarbeiten.

Die Pythonskripte sind auch nicht in Stein gemeiselt. Sondern dienen lediglich als Startpunkt. Das ganze auf etwas anderes umzustellen wäre sicherlich auch möglich. Im Moment ist die EXE für den Plot auch riesig, weil das komplette Matplotlib für Python3 eingebunden wird um die Graphen auszugeben.

Wichtig wäre mir persönlich nur, bei der Auswahl der Werkzeuge und Komponenten/Libraries, dass es nach Möglichkeit Cross-Plattform ist und nicht an ein einziges System oder OS gebunden ist. Ich denke das ist durchaus möglich.
 
Oben