Modification de la vitesse à laquelle un processus s'exécute (alternative à Cheat Engine en tant que Flash Game Speed ​​Hack)

20

Dans Windows, il existe un outil pour les jeux Flash appelé Cheat Engine qui peut accélérer / ralentir un processus de X, ce qui rend le temps nécessaire à une tâche dans un jeu plus rapide ou plus lent que dans le monde réel. Ceci est particulièrement utile pour les jeux basés sur le temps qui vous font attendre X fois la fin d'un bâtiment, une récolte pour terminer, etc ... Cela s'applique également aux jeux dont vous avez besoin pour aller plus lentement afin que vous puissiez défendre contre plusieurs ennemis (jeux Zombie, etc.) ou des jeux dont la difficulté réside dans la rapidité avec laquelle on peut achever quelque chose.

Mais cela ne se limite pas aux jeux Flash basés sur le Web. Cheat Engine peut également accélérer / ralentir d'autres jeux (Half-Life, Quake 3, etc.).

Existe-t-il un moyen de le faire dans Ubuntu?

Voici l' option SPEED HACK à laquelle je fais référence en utilisant l'outil "Cheat Engine" dans Windows et c'est en fait l'option pour laquelle 99,99% des utilisateurs de Cheat Engine utilisent Cheat Engine pour:

entrez la description de l'image ici

Je dois mentionner que je ne recherche pas de méthode pour interrompre le processus toutes les millisecondes (comme ralentir Firefox ou Chrome au lieu de ralentir le jeu Flash). Par exemple, ralentir Firefox ne fonctionnerait pas car il ralentit également tout le reste, ce ne serait donc pas un hack de vitesse autant que de ralentir le processus en général, y compris toutes les actions de l'utilisateur. Fondamentalement, tout serait le même, mais plus lentement. Il en va de même pour accélérer le processus.

Je cherche un moyen de le faire pour les jeux Flash basés sur le Web et / ou les jeux émulés par Wine.

Luis Alvarado
la source
1
Je pense que ce problème sera vécu jusqu'à ce qu'un "Cheat Engine pour Linux" sorte.
Luis Alvarado
environ six mois plus tard, y a-t-il une réponse à cette question (je ne compte pas la priorité du processus comme réponse ... car cela ne fonctionne pas de toute façon)?
Yanick Rochon
Je ne sais rien à ce sujet, mais après l'avoir lu, l'idée m'est venue pourquoi ne pas émuler le flash et ajouter une certaine automatisation, peut-être même une IA pour anticiper les changements ne me demandez pas `` comment '' car comme je l'ai dit, je ne sais pas comment faire ça arrive

Réponses:

3

Réponse courte, non. Il n'y a pas de bouton 2x pour la planification des processus. Le mieux que vous puissiez faire est d'utiliser cgroups pour ce qui vous intéresse pour obtenir plus de temps CPU, au détriment d'un autre processus. Si je devais deviner, la raison pour laquelle speedhack fonctionne même est parce qu'il fait son travail en manipulant le temps d'exécution flash, ou simplement en l'appelant une machine virtuelle. Ce n'est pas que cela accélère le programme, cela a changé les paramètres fondamentaux sur lesquels la VM entière est basée. Je suppose que la même chose serait possible avec quelque chose comme Java ou Python.

Eh bien, je suppose que vous devrez continuer à tricher sur farmville sur Windows. La honte.

ppetraki
la source
3

Cela pourrait aider à ralentir les processus, mais pas à les accélérer ...

1) SIGSTOP et SIGCONT:

La killcommande peut envoyer des signaux a STOPet a CONTà un processus avec un pid donné. Je l'ai déjà utilisé pour «mettre en pause» et «limiter» les scripts python, et cela fonctionne très bien à cette fin.

Voici un exemple dans un script bash (passez le PID du processus correspondant comme paramètre de ligne de commande):

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

Ces périodes de sommeil (en secondes) devraient être réduites à une quantité beaucoup plus petite pour réduire les secousses, mais le plus grand intervalle le rend plus évident pour les tests.

Une fois que vous êtes satisfait d'un intervalle particulier, vous pouvez faire en sorte que le taux de sommeil soit réglable avec une variable.

2) Une autre possibilité, pour la limitation, est «cpulimit»:

sudo apt-get install cpulimit

Pour limiter Firefox à 30% de CPU:

cpulimit -e firefox -l 30
laher
la source
Cela ne serait-il pas en réalité l'opposé de ce qu'il demande?
Uri Herrera
1
Je répondais à la partie sur "les jeux où vous devez les ralentir pour que vous puissiez terminer un niveau difficile"
laher
1

Je suggérerais deux ou trois choses. S'il s'agit bien de farmville / quelque chose joué sur le net (comme l'a suggéré ppetraki), je crois qu'une avenue est de passer par la route greasemonkey (c'est une plate-forme pour permettre l'exécution de tous les scripts basés sur javascript pour permettre des réglages plus avancés à tous les niveaux du navigateur / rendu de page.). Pas moins, j'ai relu toutes les autres réponses très rapidement, et étonnamment je n'ai vu personne mentionner Wine http://www.winehq.org/documentation .

Plus précisément, si le vin normal ne fonctionne pas (ce que j'ai pu faire fonctionner, mieux vaut essayer 32 bits), tout espoir n'est pas perdu, car cela ressemble à un candidat parfait pour l'extension / l'add-on Wine. 'programme esque,' Wine-Hacks ', il invite l'utilisateur à passer en revue l'installation de divers logiciels qui répondent à des exigences particulières / etc ... (c'est une avenue très facile, si la configuration traditionnelle de wine ne fonctionne pas ). C'est une situation intéressante, et il est important de se rappeler que Linux en général donne à l'utilisateur une plate-forme beaucoup plus grande pour personnaliser et modifier les différents processus / threads / etc. à tous les niveaux ... Cependant, une grande quantité de lecture provient généralement de il. Dans une perspective de niveau inférieur, on pourrait, si le jeu utilise la communication interprocessus, modifier les vitesses sur les sockets ('vmstat' / '

Mais en regardant votre image, et après avoir téléchargé l'application moi-même, comprendre comment fonctionne l'application, et le fait qu'elle lit des bits de mémoire, et balaye des adresses de mémoire / etc ... cela échappe à cela , peaufiner la communication mémoire / interprocessus à un bas niveau (cependant, en suivant cette voie, vous créeriez votre propre version piratée du `` Cheat-Engine '', cela pourrait très facilement être fait avec une gdb (gcc-debugger, un développeur / L'outil de sécurité car effectuer ces types de tâches est une partie courante du travail d'un développeur pour mieux évaluer le fonctionnement de l'application / ses performances globales., agit de manière similaire dans une portée plus limitée). Vous utiliseriez simplement un outil différent pour contrôler la mémoire / séquençage de la communication au niveau du socket. Pas moins, le scénario Wine fonctionnera, et je l'ai essayé brièvement (cependant, je ne 't savoir quel est le jeu ciblé votre jeu, lol !!).

Pour conclure, afin que nous soyons clairs, une façon serait de refaire la beauté des processus / threads de processus (tâches) sous Linux / et de localiser les différentes adresses mémoire et les bits utilisés dans la communication interprocessus / socket à l'aide des utilitaires / ou du débogueur ( déjà mentionné). Ensuite, une autre manière plus basique qui utiliserait la logique du `` moteur de triche '' lui-même dans un environnement non Windows, en l'installant avec Wine, car Wine exécute l'application et la gère dans les processus / threads à l'intérieur afin qu'elle soit aussi si le programme est exécuté dans Windows lui-même. Le programme Wine est dans toutes les distributions spécifiques à Ubuntu que j'ai vues, "'apt-get' / 'aptitude'" pour installer Wine). De plus, un autre outil pour déboguer / peaufiner les jeux flash / etc ... est celui de Flashbug (une variante de firebug, tout comme Greasemonkey est utilisé dans Mozilla) Bonne chance et bravo !!

William Franklin
la source
Vous auriez besoin de toute la pile installée avec WINE - un navigateur fonctionnant dans WINE (à moins que le jeu ne puisse s'exécuter à l'extérieur), Flash Player pour Windows et le piratage de Flash Speed ​​(plus le fichier SWF évidemment) Quant à GreaseMonkey - cela ne travail. JS et Flash sont des technologies complètement différentes.
Piskvor
Bon appel à ce qu'il s'agisse de technologies totalement différentes, mais je ne faisais pas cette distinction, le flash (en fait un plug-in propriétaire) est présenté en étant intégré dans le DOM, et bien sûr, on peut pour certaines choses utiliser ces événements avec lesquels javascript est entièrement s'interface avec comme moyen d'atteindre une fin pour influencer le flash, car parfois le flash est même intégré dans javascript. À moins qu'ils n'aient progressivement éliminé l'interaction avec toutes les pages avec les spécifications w3 / whatwg, est le résultat d'une exécution basée sur les événements. L'exécution basée sur les événements est la raison d'être du javascript (ECMA dans le passé), FYI: 80% + les scripts greasemonkey sont des tricheurs pour les jeux.
William Franklin
Vous avez raison sur ce qu'est JS, d'où il vient et comment cela fonctionne; mais à moins que le blob Flash n'expose réellement une interface pour changer la vitesse du jeu (extrêmement peu probable), vous ne pouvez pas utiliser JS pour cela - il n'y a pas de contrôle "intégré" pour une telle interaction. Je connais les scripts de triche GM; notez que tous ciblent la partie JS / DOM et / ou l'interaction de Flash avec JS - pas le fonctionnement du blob Flash lui-même.
Piskvor