当前位置: 首页>>技术教程>>正文


修改进程运行的速度(作弊引擎替代 Flash 游戏速度黑客)

, ,

问题描述

在 Windows 中,有一个名为 Cheat Engine 的 Flash 游戏工具,它可以将进程加速/减速 X 量,使游戏中的任务所需的时间比现实世界中的更快或更慢。这对于基于时间的游戏特别有用,这些游戏让您等待 X 时间来完成建筑物、完成收获等……这也适用于您需要它们放慢速度的游戏,这样您就可以防御几个敌人(僵尸游戏等)或他们的困难在于完成某件事的速度的游戏。

但这不仅限于基于网络的 Flash 游戏。作弊引擎还可以加速/降低其他游戏(Half-Life、Quake 3 等)。

有没有办法在 Ubuntu 中做到这一点?

这是我在 Windows 中使用 “Cheat Engine” 工具所指的 SPEED HACK 选项,它实际上是 99.99% 的 Cheat Engine 用户使用 Cheat Engine 的选项:

我应该提一下,我不是在寻找一种方法来每毫秒暂停一次进程(比如减慢 Firefox 或 Chrome 的速度,而不是减慢 Flash 游戏的速度)。例如,放慢 Firefox 的速度是行不通的,因为它也会减慢其他所有东西的速度,因此它不会是 Speed hack,而是放慢整个过程,包括用户的所有操作。基本上一切都会是一样的,只是更慢。加快进程也是如此。

我正在寻找一种方法来对基于 Web 的 Flash 游戏和/或 Wine 模拟游戏执行此操作。

最佳方案

简短的回答,不。进程调度没有 2x 按钮。您可以做的最好的事情是使用 cgroups 来处理您感兴趣的事情,以获得更多的 CPU 时间,但会牺牲另一个进程。如果我不得不猜测,speedhack 之所以有效,是因为它通过操纵闪存运行时来完成它的业务,或者只是将其称为虚拟机。并不是说它在加速程序,而是改变了整个 VM 所基于的基本参数。我想Java或Python之类的东西也可以实现同样的事情。

哦,好吧,我想您将不得不继续在 Windows 上的 Farmville 上作弊。耻辱。

次佳方案

这些可能有助于减慢进程,但不会加快进程……

1) SIGSTOP 和 SIGCONT:

kill 命令可以向具有给定 pid 的进程发出 STOPCONT 信号。我之前曾将它用于 ‘pausing’ 和 ‘throttling’ python 脚本,它可以很好地用于此目的。

这是 bash 脚本中的一个示例(将相关进程的 PID 作为命令行参数传递):

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

这些睡眠(以秒为单位)需要减少到更小的数量以减少抖动,但更大的间隔使得测试更明显。

一旦您对特定的间隔感到满意,您就可以通过变量调整睡眠比例。

2) 对于节流,另一种可能性是 ‘cpulimit’:

sudo apt-get install cpulimit

将 Firefox 限制为 30% CPU:

cpulimit -e firefox -l 30

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12694.html,未经允许,请勿转载。