Modificar la velocidad a la que se ejecuta un proceso (alternativa de Cheat Engine como Speed ​​Hack de juegos Flash)

Modificar la velocidad a la que se ejecuta un proceso (alternativa de Cheat Engine como Speed ​​Hack de juegos Flash)

En Windows existe una herramienta para juegos Flash llamadaMotor de trucosque puede acelerar/disminuir un proceso en una cantidad X, haciendo que el tiempo necesario para una tarea en un juego sea más rápido o más lento que en el mundo real. Esto es especialmente útil para juegos basados ​​en el tiempo que te hacen esperar una cantidad X de tiempo para que se termine un edificio, se complete una cosecha, etc. Esto también se aplica a los juegos en los que necesitas que vayan más lento para poder defenderse de varios enemigos (juegos de zombies, etc.) o juegos cuya dificultad radica en lo rápido que se puede completar algo.

Pero esto no se limita a los juegos Flash basados ​​en web. Cheat Engine también puede acelerar/reducir la velocidad de otros juegos (Half-Life, Quake 3, etc.).

¿Hay alguna manera de hacer esto en Ubuntu?

Aquí estáTRUCO VELOCIDADopción a la que me refiero al usar la herramienta "Cheat Engine" en Windows y en realidad es la opción que el 99,99% de los usuarios de Cheat Engine usan Cheat Engine para:

ingrese la descripción de la imagen aquí

Debo mencionar que no estoy buscando un método para pausar el proceso cada milisegundos (como ralentizar Firefox o Chrome en lugar de ralentizar el juego Flash). Por ejemplo, ralentizar Firefox no funcionaría, ya que también ralentiza todo lo demás, por lo que no sería tanto un truco de velocidad como una ralentización del proceso en general, incluidas todas las acciones del usuario. Básicamente todo sería igual, sólo que más lento. Lo mismo ocurre con la aceleración del proceso.

Estoy buscando una manera de hacer esto con juegos Flash basados ​​en Web y/o juegos emulados de Wine.

Respuesta1

Respuesta corta, no. No hay un botón 2x ​​para la programación de procesos. Lo mejor que puedes hacer es usar cgroups para lo que te interesa y obtener más tiempo de CPU, a expensas de otro proceso. Si tuviera que adivinar, la razón por la que speedhack funciona es porque hace su trabajo manipulando el tiempo de ejecución del flash, o simplemente llámelo máquina virtual. No es que esté acelerando el programa, sino que ha cambiado los parámetros fundamentales en los que se basa toda la VM. Supongo que lo mismo sería posible con algo como Java o Python.

Bueno, supongo que tendrás que seguir haciendo trampa en Farmville en Windows. Lástima.

Respuesta2

Estos podrían ayudar a ralentizar los procesos, pero no a acelerarlos...

1) SIGSTOP y SIGCONT:

El killcomando puede emitir señales STOPay CONTa un proceso con un pid determinado. Lo he usado antes para 'pausar' y 'acelerar' scripts de Python, y funciona bien para ese propósito.

Aquí hay un ejemplo en un script bash (pase el PID del proceso relevante como parámetro de la línea de comando):

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

Esas horas de sueño (en segundos) tendrían que reducirse a una cantidad mucho menor para reducir las sacudidas, pero el intervalo más grande lo hace más obvio para las pruebas.

Una vez que esté satisfecho con un intervalo particular, puede hacer que la proporción de horas de sueño sea ajustable con una variable.

2) Otra posibilidad, para limitar, es 'cpulimit':

sudo apt-get install cpulimit

Para limitar Firefox al 30% de la CPU:

cpulimit -e firefox -l 30

Respuesta3

Yo sugeriría un par de cosas. Si realmente se trata de farmville/algo que se juega en la red (como sugirió ppetraki), creo que una vía es ir por la ruta de Greasemonkey (es una plataforma que permite la ejecución de todos los scripts basados ​​en JavaScript para permitir ajustes más avanzados en todos los niveles). del navegador/renderizado de páginas). Nada menos, leí todas las demás respuestas muy rápidamente y, sorprendentemente, no vi a nadie mencionar Wine.http://www.winehq.org/documentation.

Más específicamente, si el vino normal no funciona (lo cual pude hacer funcionar, es mejor probar con 32 bits), no se pierde toda esperanza, ya que suena como un candidato perfecto para la extensión/complemento Wine. 'programa similar, 'Wine-Hacks', le muestra al usuario un tutorial para instalar varias piezas de software que cumplen con requisitos particulares, etc. (esta es una vía muy fácil, si la configuración tradicional de Wine no funciona ). Esta es una situación interesante, y es importante recordar que Linux en general le brinda al usuario una plataforma mucho mayor para personalizar y modificar los diversos procesos/hilos/etc. en todos los niveles... Sin embargo, una gran cantidad de lectura generalmente proviene de él. Desde una perspectiva de nivel inferior, si el juego utiliza comunicación entre procesos, se podrían ajustar las velocidades de los sockets (los comandos 'vmstat'/'top'/'ps'/'ss' no son más que un pequeño arsenal de lo que ofrece Linux) en sí mismos, y aunque no tendrán una curva de aprendizaje/facilidad de uso tan pequeña, estas herramientas son un comienzo para analizar la actividad/administración de memoria a nivel de proceso.

Pero al mirar su imagen y haber descargado la aplicación yo mismo, comprender cómo funciona la aplicación y el hecho de que está leyendo bits de memoria y escaneando direcciones de memoria, etc., se elude. Está haciendo justamente esto. , ajustando la comunicación memoria/entre procesos en un nivel bajo (sin embargo, si sigue esta ruta, estaría creando su propia versión pirateada del 'Cheat-Engine'; se podría hacer muy fácilmente con un gdb (gcc-debugger, un desarrollador /herramienta de seguridad, ya que realizar este tipo de tareas es una parte común del trabajo de un desarrollador para evaluar mejor cómo funciona la aplicación/su rendimiento general. Actúa de manera similar en un alcance más limitado. Simplemente estaría usando una herramienta diferente para controlar. la memoria/secuenciación de la comunicación a nivel de socket Nada menos, el escenario Wine funcionará, y lo probé brevemente (sin embargo, no sé cuál es el juego objetivo al que estás jugando, jajaja!!).

Para concluir, para que quede claro, una forma sería volver a definir los procesos/subprocesos de proceso (tareas) en Linux/y ubicar las distintas direcciones de memoria y los bits utilizados en la comunicación entre procesos/sockets usando utilidades/o depurador ( ya mencionado). Luego, otra forma más básica que utilizaría la lógica del 'motor de trucos', en sí mismo en un entorno que no sea Windows, instalándolo con Wine, mientras Wine ejecuta la aplicación y la administra en procesos/hilos internos para que sea como si el programa se ejecuta en el propio Windows. El programa Wine está en todas las distribuciones específicas de Ubuntu que he visto, "'apt-get'/'aptitude'" para instalar Wine). Además, otra herramienta para depurar/modificar juegos basados ​​en flash/etc... es la de Flashbug (una variante de Firebug, tal como se usa Greasemonkey en Mozilla). ¡¡Buena suerte y salud!!

Respuesta4

Me doy cuenta de que esta es una vieja pregunta, pero encontré una herramienta que puede cambiar la velocidad a la que se ejecutan los programas, al menos en teoría. Muchas cosas parecen no verse afectadas o cambiar su velocidad de fotogramas, pero no la velocidad real del juego. De todos modos, aquí está:

https://github.com/evg-zhabotinsky/libspeedhack

Los binarios prediseñados ahora están disponibles enhttps://github.com/evg-zhabotinsky/libspeedhack/releases/y debería funcionar en la mayoría de los sistemas. Consulte el archivo README para saber cómo utilizar la herramienta. Por "trabajo" me refiero a la herramienta en sí, que aún así podría no ayudar con tu juego específico y, de ser así, es poco probable que se pueda solucionar.

información relacionada