算法大概原理:
1,hack-server.ns,作为处理中心,跑循环任务,分析目标服务器当前循环轮的现状数据,比如security降低到min,至少需要x个线程,grow到max-money,至少需要y个线程,hack全部money,至少需要z个线程。
2,分析当前运行该脚本的服务器(比如这里就是home),还剩余内存N,而运行这(x+y+z)个现成,需要内存M。如果M大于N,则需要按照一定计算方式,削减x y z个数。
3,计算weaken grow hack分别需要的时间,比如weaken需要20秒,grow需要14秒,hack需要8秒。那么在这种状态下,优先执行grow,hack的执行要确保在grow正好完成之后,则hack需要延迟14 - 8 = 6秒执行。weaken要排在grow、hack之后执行,此处weaken无需延迟,因为hack就算延迟到14秒后,weaken最快也需要20秒。
4,准备启动独立的do-weaken.ns、do-grow.ns、do-hack.ns脚本,ns.exec分别执行x个do-weaken、y个do-grow、z个do-hack,执行延迟按照上面计算的来。
上面这套机制,脱离了传统的串行hack思路,压缩了大量的时间。且提升了部署服务器的内存利用率,不会造成太大的线程浪费。
实测,一个128或者256TB内存的服务器,就可以同时hack 10来个目标(当然,看强化加成而定)。