Daniel Shawul wrote:The adapter on Arena's side can not act as a server as it can not order it to do things. It can only send moves. The adapter needs to tell Arena about the start position (could be from set of epds), moves, take back of moves, resignations, draw offers etc... How is it going to arena to display those if it can not order it.
Resignations and draw offers are no problem at all. In WB protocol engines can resign and offer draws. As for setting up positions: ICS cannot do this either, (for games), so this was not on my list of desired features. Note that the WinBoard-Alien protocol would allow this without problem, though, (but of course is not supported by Arena.) by using the 'setup' command for that. The only real problem might be takebacks. Note that ICSs also don't accept takebacks without opponent approval. Which is fine if you play a human, but a bot opponent most likely would ignore any takeback request. In the human case my p2p adapter would also have no problem: it would let Arena present the request to the human opponent as a popup, so the user could enter a takeback command into Arena.
OTOH if it was your app that is on that side, it can order it just like a referee engine does. Think about a situation where you have two arena's on both sides. How can you play games started from EPD positions between two players ?
You can't. Just like you cannot do that with two Arenas (or WinBoards, or whatever) that are connected to FICS. But why would you want that? Btw, between humans you could still do it with a p2p adapter when both agree on the starting position, and both enter the same EPD into their respective GUIs. The p2p adapters would see the same setboard command loaded into them from both sides (or the same sequence of moves in force mode), and conclude the setting is viable for starting a game. If not, they would ask one of the sides to comply with the request of the other, displaying the EPD to be entered as a GUI popup through telluser. Just like they would do when the chosen colors do not match. So that already beats a connection through FICS. Between two humans I don't see why one of them should have the power to force an initial position on the other. With Human vs bot the bot can select the EPD through the same mechanism.
If you want to have an engine bot on the remote machine that is a total slave, obeying all your whims like it is a locally loaded engine, there is no reason why there should be a GUI at the other end at all. That task is much more efficiently and straightforwardly performed by ssh, connecting to the remote engine directly. Then you can feed it all the EPDs you want. This problem has already been solved for decades, so it is not within the aim of my p2p pseudo-engine project. My interest is to provide an opportunity for humans to play exotic games for which there exist no servers over the internet with each other.
Why? Peer to peer needs one of them to be a 'server' of games so it is already asymmetric. Ofcourse it doesn't need to be as complex as I made it and it suffices to have features for playing games only (not observing). The difference between a p2p and an FICS server is that in the former case the 'server' is also a participant in the game.
OK, I see. But if participating in the game becomes only a quite minor part of the task, it kind of stretches the p2p concept. I usually leave a Fairy-Max bot on my ICS, and it is running on the same machine that is running the ICS (because that is always on). Does that now suddenly make connections of other people to my ICS to play Fairy-Max a peer-to-peer connection? But this is not really worth discussing. What's in a name, after all?