Modificando a velocidade na qual um processo é executado (alternativa ao Cheat Engine como um Hack de velocidade do jogo em Flash)

20

No Windows, existe uma ferramenta para jogos em Flash, chamada Cheat Engine, que pode acelerar / diminuir um processo em quantidade X, fazendo com que o tempo necessário para uma tarefa em um jogo seja mais rápido ou mais lento do que no mundo real. Isso é especialmente útil para jogos baseados no tempo que fazem com que você espere uma quantidade X de tempo para que um prédio seja concluído, uma colheita seja concluída, etc ... Isso também se aplica aos jogos em que você precisa deles para ir mais devagar para que você possa defender contra vários inimigos (jogos de zumbis, etc.) ou jogos cuja dificuldade está na rapidez com que alguém pode concluir algo.

Mas isso não se limita aos jogos em Flash baseados na Web. O Cheat Engine também pode acelerar / diminuir outros jogos (Half-Life, Quake 3, etc.).

Existe uma maneira de fazer isso no Ubuntu?

Aqui está a opção SPEED HACK a que me refiro usando a ferramenta "Cheat Engine" no Windows e é realmente a opção que 99,99% dos usuários do Cheat Engine usam o Cheat Engine para:

insira a descrição da imagem aqui

Devo mencionar que não estou procurando um método para pausar o processo a cada milissegundo (como abrandar o Firefox ou Chrome em vez de abrandar o jogo Flash). Por exemplo, desacelerar o Firefox não funcionaria, pois também desacelera todo o resto, de modo que não seria um hack do Speed, mas desacelerar o processo em geral, incluindo todas as ações do usuário. Basicamente, tudo seria o mesmo, apenas mais lento. O mesmo vale para acelerar o processo.

Estou procurando uma maneira de fazer isso com jogos em Flash baseados na Web e / ou jogos emulados por vinho.

Luis Alvarado
fonte
11
Eu acho que esse problema será uma experiência até que algum "Cheat Engine for Linux" seja lançado.
Luis Alvarado
cerca de seis meses depois, há alguma resposta para essa pergunta (não estou contando a prioridade do processo como uma resposta ... pois ela não funciona de qualquer maneira)?
Yanick Rochon
Eu não sei nada sobre isso, mas depois de lê-lo, o pensamento veio à mente por que não imitar o flash e adicionar alguma automação, talvez até alguma IA para antecipar mudanças, não me pergunte 'como' porque, como eu disse, não tenho idéia de como fazer isso acontecer

Respostas:

3

Resposta curta, não. Não há botão 2x para agendamento de processos. O melhor que você pode fazer é usar cgroups para o que você está interessado para obter mais tempo de CPU, à custa de outro processo. Se eu tivesse que adivinhar, o motivo pelo qual o speedhack funciona é porque ele está fazendo negócios manipulando o tempo de execução do flash ou apenas chamando de máquina virtual. Não é que ele esteja acelerando o programa, ele mudou os parâmetros fundamentais nos quais toda a VM se baseia. Suponho que a mesma coisa seria possível com algo como Java ou Python.

Bem, acho que você terá que continuar trapaceando em farmville no Windows. Vergonha.

ppetraki
fonte
3

Isso pode ajudar a diminuir a velocidade dos processos, mas não a acelerá-los ...

1) SIGSTOP e SIGCONT:

O killcomando pode emitir um STOPe um CONTsinal para um processo com um determinado pid. Eu o usei para 'pausar' e 'controlar' scripts python antes, e funciona bem para esse propósito.

Aqui está um exemplo em um script bash (passe o PID do processo relevante como o parâmetro da linha de comando):

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

Essas dormidas (em segundos) precisariam diminuir para uma quantidade muito menor para reduzir a agitação, mas o intervalo maior torna mais óbvio para os testes.

Quando estiver satisfeito com um intervalo específico, você poderá ajustar a proporção de adormecidos com uma variável.

2) Uma outra possibilidade, para estrangular, é 'cpulimit':

sudo apt-get install cpulimit

Para limitar o firefox a 30% da CPU:

cpulimit -e firefox -l 30
laher
fonte
Isso não seria exatamente o oposto do que ele está perguntando?
Uri Herrera
11
Eu estava respondendo a parte sobre "jogos em que você precisa para torná-los mais lento para que você possa completar um nível difícil"
Laher
1

Eu sugeriria algumas coisas. Se é realmente farmville / algo jogado na rede (como sugerido por ppetraki), acredito que uma avenida é seguir a rota greasemonkey (é uma plataforma que permite a execução de todos os scripts baseados em javascript para permitir ajustes mais avançados em todos os níveis do navegador / renderização de página.). Não obstante, li todas as outras respostas muito rapidamente e surpreendentemente não vi ninguém mencionar o Wine http://www.winehq.org/documentation .

Mais especificamente, se o vinho normal não funcionar (que eu consegui fazê-lo funcionar, melhor tentar 32 bits), toda a esperança não será perdida, pois isso soa como um candidato perfeito para a extensão / complemento do Wine O programa 'esque', 'Wine-Hacks', solicita ao usuário a instalação de várias peças de software que atendem a requisitos específicos / etc ... (essa é uma avenida muito fácil, se a configuração tradicional do vinho não funcionar ) Esta é uma situação interessante, e é importante lembrar que o linux em geral oferece ao usuário uma plataforma muito maior para personalizar e ajustar os vários processos / threads / etc em todos os níveis ... No entanto, uma grande quantidade de leitura geralmente vem de isto. Em uma perspectiva de nível inferior, se o jogo estiver utilizando comunicação entre processos, é possível ajustar as velocidades nos soquetes ('vmstat' / '

Mas, olhando para a sua imagem e tendo baixado o aplicativo pessoalmente, entendendo como o aplicativo funciona, e o fato de estar lendo bits de memória e verificando endereços de memória / etc ... ele escapa, está fazendo exatamente isso. , aprimorando a comunicação de memória / interprocesso em um nível baixo (no entanto, nesta rota, você criaria sua própria versão hackish do 'Cheat-Engine', isso poderia ser feito facilmente com um gdb (gcc-debugger, desenvolvedor / ferramenta de segurança, pois executar esses tipos de tarefas é uma parte comum do trabalho de um desenvolvedor para avaliar melhor como o aplicativo funciona / seu desempenho geral., age da mesma forma em um escopo mais limitado). Você usaria apenas uma ferramenta diferente para controlar a memória / sequência da comunicação no nível do soquete.No entanto, o cenário do Wine funcionará e eu tentei brevemente (no entanto, nãoNão sei qual é o jogo direcionado, lol !!).

Para concluir, para que fiquemos claros, uma maneira seria refazer os processos / threads de processo (tarefas) no Linux / e localizar os vários endereços de memória e bits usados ​​na comunicação entre processos / soquetes usando utilitários / ou depurador ( já mencionado). Em seguida, outra maneira mais básica que utilizaria a lógica do 'Cheat-engine', em um ambiente não Windows, instalando-o no Wine, já que o Wine executa o aplicativo e o gerencia em processos / threads no mesmo se o programa estiver sendo executado no próprio Windows. O programa Wine está em todas as distros específicas do Ubuntu que eu já vi, "'apt-get' / 'aptitude'" para instalar o Wine). Além disso, outra ferramenta para depuração / aprimoramento de jogos baseados em flash / etc ... é a do Flashbug (uma variante do firebug, assim como o Greasemonkey é usado no Mozilla) Boa sorte e felicidades !!

William Franklin
fonte
Você precisaria de toda a pilha instalada com o WINE - um navegador rodando no WINE (a menos que o jogo possa rodar fora), o Flash Player para Windows e o hack do Flash Speed ​​(mais o arquivo SWF obviamente) Quanto ao GreaseMonkey - isso não acontece trabalhos. JS e Flash são tecnologias completamente diferentes.
Piskvor
É bom chamá-los de tecnologias totalmente diferentes, mas eu não estava fazendo essa distinção: o flash (na verdade, um plug-in proprietário) é exibido ao ser incorporado no DOM e, naturalmente, pode-se usar coisas para eventos com os quais o javascript está totalmente interfaces com o objetivo de influenciar o flash, pois às vezes o flash é incorporado em javascript. A menos que eles eliminem gradualmente o w3 / whatwg especifica a interação de todas as páginas, é resultado da execução baseada em eventos. A execução baseada em eventos é a razão de ser do javascript (ECMA nos velhos tempos da escola), FYI: 80% + scripts greasemonkey são truques para jogos.
William Franklin
Você está certo sobre o que é JS, de onde veio e como funciona; mas, a menos que o blob do Flash exponha uma interface para alterar a velocidade do jogo (extremamente improvável), você não poderá usar o JS para isso - não há controle "interno" para essa interação. Estou ciente dos scripts de truques da GM; observe que todos eles têm como alvo a parte JS / DOM e / ou a interação do Flash com JS - não o funcionamento do próprio blob do Flash.
Piskvor