Ändern der Geschwindigkeit, mit der ein Prozess ausgeführt wird (Cheat Engine-Alternative als Flash Game Speed ​​Hack)

20

In Windows gibt es ein Tool für Flash-Spiele namens Cheat Engine, mit dem ein Prozess um das X-fache beschleunigt bzw. verlangsamt werden kann, sodass eine Aufgabe in einem Spiel schneller oder langsamer als in der realen Welt ausgeführt werden kann. Dies ist besonders hilfreich für zeitbasierte Spiele, bei denen Sie X-mal warten müssen, bis ein Gebäude fertig ist, eine Ernte abgeschlossen ist usw. Dies gilt auch für Spiele, bei denen Sie eine Verlangsamung benötigen, damit Sie dies tun können Verteidige dich gegen mehrere Gegner (Zombiespiele usw.) oder Spiele, deren Schwierigkeit darin besteht, wie schnell man etwas schaffen kann.

Dies ist jedoch nicht auf webbasierte Flash-Spiele beschränkt. Cheat Engine kann auch andere Spiele beschleunigen (Half-Life, Quake 3, etc ..).

Gibt es eine Möglichkeit, dies in Ubuntu zu tun?

Hier ist die SPEED HACK- Option, auf die ich mich beziehe, wenn ich das "Cheat Engine" -Tool in Windows verwende. Tatsächlich verwenden 99,99% der Cheat Engine-Benutzer die Cheat Engine für:

Bildbeschreibung hier eingeben

Ich sollte erwähnen, dass ich nicht nach einer Methode suche, um den Prozess alle Millisekunden anzuhalten (wie zum Beispiel Firefox oder Chrome zu verlangsamen, anstatt das Flash-Spiel zu verlangsamen). Zum Beispiel würde eine Verlangsamung von Firefox nicht funktionieren, da es auch alles andere verlangsamt, so dass es kein Speed-Hack wäre, sondern den Prozess im Allgemeinen einschließlich aller Aktionen des Benutzers verlangsamt. Grundsätzlich wäre alles gleich, nur langsamer. Gleiches gilt für die Beschleunigung des Prozesses.

Ich suche nach einer Möglichkeit, dies für Web-basierte Flash-Spiele und / oder Wine-emulierte Spiele zu tun.

Luis Alvarado
quelle
1
Ich denke, dieses Problem wird auftreten, bis eine "Cheat Engine für Linux" herauskommt.
Luis Alvarado
Gibt es etwa ein halbes Jahr später eine Antwort auf diese Frage (ich zähle die Prozesspriorität nicht als Antwort ... da sie sowieso nicht funktioniert)?
Yanick Rochon
Ich weiß nichts darüber, aber nachdem ich es gelesen hatte, kam mir der Gedanke, warum ich nicht den Flash emulieren und etwas Automatisierung hinzufügen sollte, vielleicht sogar etwas KI, um Änderungen zu antizipieren. Frag mich nicht, wie es passiert

Antworten:

3

Kurze Antwort, nein. Es gibt keine 2x-Taste für die Prozessplanung. Das Beste, was Sie tun können, ist, cgroups zu verwenden, um auf Kosten eines anderen Prozesses mehr CPU-Zeit zu erhalten. Wenn ich raten müsste, ist der Grund, warum Speedhack überhaupt funktioniert, der, dass es Geschäfte macht, indem man die Flash-Laufzeit manipuliert oder es einfach eine virtuelle Maschine nennt. Es ist nicht so, dass es das Programm beschleunigt, es hat grundlegende Parameter geändert, auf denen die gesamte VM basiert. Ich nehme an, dasselbe wäre mit so etwas wie Java oder Python möglich.

Na ja, ich denke, Sie müssen Farmville unter Windows weiter betrügen. Schande.

ppetraki
quelle
3

Dies könnte helfen, Prozesse zu verlangsamen, aber nicht zu beschleunigen ...

1) SIGSTOP und SIGCONT:

Der killBefehl kann ein STOPund ein CONTSignal für einen Prozess mit einer bestimmten PID ausgeben . Ich habe es zuvor zum Anhalten und Drosseln von Python-Skripten verwendet, und es funktioniert für diesen Zweck einwandfrei.

Hier ist ein Beispiel in einem Bash-Skript (geben Sie die PID des relevanten Prozesses als Befehlszeilenparameter ein):

PID=$1
while true; do 
    sleep 0.5
    kill -s STOP $PID
    sleep 0.5
    kill -s CONT $PID
done

Dieser Schlaf (in Sekunden) müsste auf einen viel kleineren Wert reduziert werden, um Ruckeln zu reduzieren, aber das größere Intervall macht es für Tests offensichtlicher.

Wenn Sie mit einem bestimmten Intervall zufrieden sind, können Sie das Schlafverhältnis mit einer Variablen anpassen.

2) Eine andere Möglichkeit zur Drosselung ist "cpulimit":

sudo apt-get install cpulimit

So begrenzen Sie Firefox auf 30% CPU:

cpulimit -e firefox -l 30
laher
quelle
Wäre das nicht das Gegenteil von dem, was er verlangt?
Uri Herrera
1
Ich antwortete auf den Teil über "Spiele, bei denen man sie langsamer machen muss, um ein schwieriges Level zu
meistern
1

Ich würde ein paar Dinge vorschlagen. Wenn es sich in der Tat um Farmville / etwas handelt, das im Internet gespielt wird (wie von ppetraki vorgeschlagen), besteht meiner Meinung nach eine Möglichkeit darin, über greasemonkey zu navigieren (es ist eine Plattform, die das Ausführen aller Javascript-basierten Skripten ermöglicht, um fortgeschrittenere Optimierungen auf allen Ebenen zu ermöglichen des Browsers / Seitendarstellung.). Nicht weniger, es las ich alle anderen Antworten über sehr schnell und überraschend nicht jemand erwähnt Wein sehen http://www.winehq.org/documentation .

Genauer gesagt, wenn normaler Wein nicht funktioniert (und ich konnte ihn zum Laufen bringen, am besten versuchen Sie es mit 32-Bit), ist nicht jede Hoffnung verloren, da dies wie ein perfekter Kandidat für die Erweiterung / das Add-On Wine klingt 'esque program', 'Wine-Hacks', fordert den Benutzer auf, verschiedene Softwareteile zu installieren, die bestimmte Anforderungen erfüllen (dies ist eine sehr einfache Möglichkeit, wenn die traditionelle Weinkonfiguration nicht funktioniert) ). Dies ist eine interessante Situation, und es ist wichtig zu bedenken, dass Linux dem Benutzer im Allgemeinen eine weitaus größere Plattform bietet, um die verschiedenen Prozesse / Threads / usw. auf allen Ebenen anzupassen und zu optimieren es. In einer untergeordneten Perspektive könnte man, wenn das Spiel Interprozesskommunikation verwendet, die Geschwindigkeiten der Sockets ('vmstat' / ') anpassen.

Aber wenn Sie sich Ihr Bild ansehen und die App selbst heruntergeladen haben, sich ein Bild von der Funktionsweise der Anwendung und der Tatsache machen, dass sie Speicherbits liest und Speicheradressen scannt / etc ..., dann ist es nicht möglich, genau das zu tun Wenn Sie die Speicher- / Interprozesskommunikation auf einer niedrigen Ebene optimieren (aber wenn Sie diesen Weg gehen, würden Sie Ihre eigene Hackish-Version der 'Cheat-Engine' erstellen, könnte dies sehr leicht mit einer gdb (gcc-debugger, ein Entwickler) geschehen / Sicherheitstool als Ausführung dieser Art von Aufgaben ist ein häufiger Bestandteil der Arbeit eines Entwicklers, um besser beurteilen zu können, wie die Anwendung funktioniert / wie ihre Gesamtleistung ist. In einem begrenzten Umfang verhält es sich ähnlich.) Sie würden lediglich ein anderes Tool zur Steuerung verwenden das Gedächtnis / die Abfolge der Kommunikation auf Socket-Ebene. Nicht weniger, das Wine-Szenario wird funktionieren, und ich habe es kurz ausprobiert.Ich weiß nicht, was das Ziel Ihres Spiels ist, lol !!).

Zusammenfassend lässt sich sagen, dass eine Möglichkeit darin besteht, die Prozesse / Prozessthreads (Tasks) in Linux neu zu definieren und die verschiedenen Speicheradressen und Bits zu lokalisieren, die in der Interprozess- / Socket-Kommunikation mithilfe von Dienstprogrammen / oder Debugger verwendet werden. schon erwähnt). Dann noch eine grundlegendere Methode, die die Logik der 'Cheat-Engine' selbst in einer Nicht-Windows-Umgebung nutzt, indem sie mit Wine installiert wird, während Wine die Anwendung ausführt und sie in Prozessen / Threads verwaltet, so wie sie ist wenn das Programm in Windows selbst ausgeführt wird. Das Wine-Programm gibt es in allen Ubuntu-spezifischen Distributionen, die ich gesehen habe ("apt-get" / "aptitude", um Wine zu installieren). Ein weiteres Tool zum Debuggen / Optimieren von Flash-basierten Spielen usw. ist Flashbug (eine Firebug-Variante, genau wie Greasemonkey in Mozilla verwendet wird). Viel Glück!

William Franklin
quelle
Sie müssten den gesamten Stack mit WINE installieren - ein Browser, der in WINE ausgeführt wird (es sei denn, das Spiel kann im Freien ausgeführt werden), Flash Player für Windows und der Flash Speed-Hack (und natürlich die SWF-Datei) Arbeit. JS und Flash sind völlig unterschiedliche Technologien.
Piskvor
Gute Voraussetzungen dafür sind völlig andere Technologien, aber ich habe diese Unterscheidung nicht getroffen. Flash (in der Tat ein proprietäres Plug-In) wird durch die Einbettung in das DOM hervorgehoben, und natürlich kann man für einige Dinge Ereignisse verwenden, bei denen Javascript vollständig ist Schnittstellen mit als Mittel zum Zweck, um Flash zu beeinflussen, da Flash manchmal sogar in Javascript eingebettet ist. Sofern sie nicht die w3 / whatwg-Spezifikation für alle Seiteninteraktionen auslaufen lassen, ist dies ein Ergebnis der ereignisbasierten Ausführung. Die ereignisbasierte Ausführung ist das Grundprinzip von Javascript (ECMA in der alten Schule). Zu Ihrer Information: Über 80% sind greasemonkey-Skripte Cheats für Spiele.
William Franklin
Sie wissen genau, was JS ist, woher es kommt und wie es funktioniert. Aber es sei denn, der Flash-Blob zeigt tatsächlich eine Schnittstelle an, um die Spielgeschwindigkeit zu ändern (äußerst unwahrscheinlich). Sie können JS dafür einfach nicht verwenden - es gibt keine "eingebaute" Steuerung für eine solche Interaktion. Mir sind die GM-Cheatskripte bekannt. Beachten Sie, dass sie alle auf den JS / DOM-Teil und / oder die Interaktion von Flash mit JS abzielen - nicht auf die Funktion des Flash-Blobs.
Piskvor