My mind was stuck with a story by a chess lover, posted a long time ago. He was building himself a strong computer just for chess. He talked enthusiastically about how to select, order strong, bargain hardware from many sources, install them together, correct problems. In the end, he had to add a number of fans around the computer to cool it down in the summer. He was successful, his computer was so strong and worked like a charm. He was so happy to call it his supercomputer. However, the problem occurred, the computer sounded so noisy like a tank speeding up thus nobody in his family including himself could stand it. Thus, instead of seeing and touching it daily, he had to put it into the basement of his house, quite far from his desk. He had to control that computer remotely via a local network. It was not easy technology for an average user and took him several days to set up. Sometimes he had accessed his basement in midnights to check and change chess engines.
The story was simple, not so special but I was impressed and remembered so long, perhaps, caused by his enthusiasm and thought the similar things would happen to me as other people. I frequently wonder if I could do something, at least make life be easier for normal players in similar situations. That becomes the motivation thus I have implemented so early the playability over the local network for BSG.
To play via local networks, BSG was designed with the main idea: human players in different computers can play against each other and so do engines. All have equal rights and their games can be viewed by anyone in that network.
The idea had been implemented and worked very well!
However, after a while, we see there are some limitations. Firstly, to make everyone can join and watch network games, all information must be broadcast widely. That is not efficient to send all games including computing info to all computers on the net since they may be too many and affect traffic. Secondly, because of designing for human players with equal rights, one should not change the settings of other computers, thus to change settings the user should visit physically each computer. That is not convenient. Imagine, you may need to visit frequently the computer in your basement in midnights just for changing some parameters of an engine! Or worse, you want to organize huge matches with several tens computers and you need to check every engine in each computer. Note that BSG has a good feature “Overall options” which could auto-detect and set up some vital options such as the numb of cores, hash size, ponder modes… It can make sure all engines are set up correctly and the matches are fair and users don’t need to set manually one by one. However, that feature can’t help to set up remote engines with the old design.
Thus, after trying several solutions we decided to change seriously the design. The new idea is: the remote engine should pretend as it is inside the computer in the right front of the user! BSG can help to make that pretending by transferring information between computers in the background.
Since it pretends to work “locally”, nobody from other computers can see the playing games nor computing information even the engine may run inside their computers (runners). Only the computers that created games can view. People can’t play against each other via their local networks anymore. We think the loss is not a bid deal since not so many people nowadays play via local networks. They can access some servers (such as Lichess) to vs each other even they may seat at the same table.
The reward is good: the traffic reduces, the user can control remote engines totally without visiting the remote computers, easy to integrate to other functions.
Almost all functions which need engines can get benefits since the remote engines now are treated and work as any local engines. They can play in games of both normal and tournament, Lichess bots, run in test positions (test suites), to analyze (both for whole games and on the fly)… Imagine, you work with a light, small laptop, but whenever needed you can call a remote engine on your own supercomputers in the basement to analyze a chess position!
It may help some new features we plan to implement in the coming time: ECA and splitting tournaments via local network.