What it is for and what it does:
I implemented an Autohotkey-program which is capable of monitoring and controlling multiple Foldit-clients.
I got this idea from Loci's excellent youtube-video: "Running Foldit in Multiclients" (https://www.youtube.com/watch?v=TWaHyCHhFZo) and I thought it would be nice to control all of those clients automatically and globally by Autohotkey. If a recipe is run on each slave-client, then the "Foldit_ctrl" program evaluates the current score of each slave-client (based on a global loop-wait-interval) and if one or more falls
too far behind in score, then its recipe is stopped, this slave-client is updated with the solution of the currently best-scoring client and then its recipe is started up again.
Like this, a quick progression in score can be achieved in most cases and many different recipes can be run in parallel since it is not always known which recipe is the best to use at the current state. Foldit_ctrl
will take care of this automatically.
I have added the AHK-script "Foldit_upd" which can in addition update/initialize all slave-clients from the solution of a master-client so that Foldit_ctrl can run properly. I strongly recommend using Foldit_upd
first before running Foldit_ctrl.
Foldit_ctrl has two main modes: parallel and sequential. The parallel mode was described roughly already in the introductory sentences above. But with the sequential mode it is possible to pre-program one or more
clients with a sequence of recipes that shall run. Whenever a recipe stalls for this client, the next one in the program-list is called up. I found this very useful for prediction-puzzles or when multiple puzzles
shall be worked on in parallel. The client in the sequential-mode will be excluded from the client-list for parallel-mode so they will not interfere with eachother. Both modes can be used in parallel and they are
both controlled by Foldit_ctrl.
Foldit_ctrl has the ability to do all necessary mouse-clicks, button-presses and so on so that the slave-clients can perform the actions that they need to perform. In addition, Foldit_ctrl can recover a client
when it has crashed and restart it and resume its recipe. This is particularly nice because it may sometimes happen that recipes crash a client (I never found out why exactly; DeepRemixWiggle likes to do this)
and with Foldit_ctrl this can be recovered. Took some doing to get this function running smoothly in AHK but for me it works very well now.
There is some basic log-functionality in Foldit_ctrl so it can be investigated afterwards at which point a client has crashed and how often.
See further information and installation instruction in the Readme in the installation package.
Happy folding! And I welcome any feedback that you can give. Greetz, iwdn