Keep in mind that a lot of user-submitted programs will try to do the same (because writing a step-by-step interpreter is hard), so they would keep evaluating each other spawning watchdog threads every time, so, um, your watchdog thread would be badly outnumbered.
The easy fix for you would be to run your watchdog in a separate process, but players wouldn’t have this ability, which might make things either more interesting or boring (ruling out all strategies using eval). Maybe a specially designed restricted subset of Scheme with time-restricted eval would be a better choice?
By the way, after looking at your payout matrix to see what should I do if I see the opponent using eval, looks like you have in fact created a version of PD with three choices. Not incentivizing the third choice doesn’t really help because a program still has to consider the possibility that the other program chooses “other” due to a bug, in which case it should choose Defect.
I suggest you implement the standard PD by declaring that anything that is not Cooperate is Defect. The only downside would be that you’ll see somewhat more programs using all their allotted 10s, but you’ll see a lot of those either way. At least you’ll be able to say that this competition was about the actual PD.
Keep in mind that a lot of user-submitted programs will try to do the same (because writing a step-by-step interpreter is hard), so they would keep evaluating each other spawning watchdog threads every time, so, um, your watchdog thread would be badly outnumbered.
The easy fix for you would be to run your watchdog in a separate process, but players wouldn’t have this ability, which might make things either more interesting or boring (ruling out all strategies using eval). Maybe a specially designed restricted subset of Scheme with time-restricted eval would be a better choice?
By the way, after looking at your payout matrix to see what should I do if I see the opponent using eval, looks like you have in fact created a version of PD with three choices. Not incentivizing the third choice doesn’t really help because a program still has to consider the possibility that the other program chooses “other” due to a bug, in which case it should choose Defect.
I suggest you implement the standard PD by declaring that anything that is not Cooperate is Defect. The only downside would be that you’ll see somewhat more programs using all their allotted 10s, but you’ll see a lot of those either way. At least you’ll be able to say that this competition was about the actual PD.