It still seems you are detaching the computation graph somewhere.
If you want to backpropagate through the model, your forward and loss function should use tensors and contain PyTorch methods. Otherwise you would have to implement the backward function manually.
In your updated myloss function, you are re-wrapping the output of playgame in a tensor, which will also break the graph.