-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compatible with Yixin protocol #2
Comments
I've seen that AG 5.6.1 supports Yixin protocol, so I've tried to run AG 5.6.1 under YixinGUI ( YixinGUI 1.6 (the older one which comes with Yixin):
YixinGUI 2.1 (the newer one which comes with Rapfi):
|
Regarding 'ERROR Move 13,5 is outside of 0x0 board" then it is indeed a bug, probably easy to fix. However for the rest of issues (crashes), are you sure that it is caused by interaction with YixinBoard? Maybe AG just don't work on its own? Try running a selfcheck, by either:
Both methods will test few potentially problematic parts of code and produce selfcheck.txt file. Attach it here so I can see what went wrong. |
|
I'm able to reproduce the problem. To me it looks like YixinBoard launches AG process then starts sending commands, but until AG actually starts processing input from std::cin there are a lot of commands that have been lost and never got to the engine. I'm not sure what I can do about it right now. |
All right, I think I solved the problem(s):
Things that are not a bug but still not ok:
|
It seems good. But could you also implement message to allow the engine "show" the move is thinking during analyze? |
First of all, AG search algorithm works differently than alpha-beta search in Yixin so I don't have many of the informations (namely POS and REFRESH). |
I've tested the new version, and it finally works in YixinBoard. I know it's best to use GPU binary, but still worth to report that CPU binary refuses to use more than 1 cpu thread in YixinBoard :
|
I don't know... But I tested AlphaGomoku on YixinBoard of Dblue and it worked (numberOfThread) (checked by watch task manager) |
I've checked again and it still refuses to use more than 1 core in YixinBoard 2.1 of Dblue. |
The problem with number of threads was tirvial - a typo in the implementation. I guess @nguyencongminh090 was talking about setting number of threads directly in the config file, which worked but it should also be customizable via YixinBoard. Thanks for all findings. In the newest release I think I fixed all of them. I'm not closing this issue in case you'll find other problems or have more suggestions. |
Nope, I was talking about the same, I already had my Now I've tried to run AG 5.7.1 in YixinBoard GUI with the same Then I've auto-generated a new Even pasting your example from your above comment into Attaching the both autogenerated configs : 5.7.0 config.json, 5.7.1 config.json nguyencongminh090 would you keen to share your EDITED: it seems it's finally fixed in 5.7.1 (and 5.7.0 was bugged).
|
I have another idea : some users are novice and don't know how to install AG into YixinBoard GUI :
All that might be too hard for noobs to handle, maybe it would be a good idea, to provide also additional package for them (YixinBoard 2.1 + AG installed), just like Dblue does with Rapfi, so that novice users just unzip on their desktop and run and it works for noobs out of the box. Additional benefit is that such additional distribution, given how easy is to use for noobs, will make AG more user friendly and thus more popular, and noobs who were limited to use Rapfi-Yixin package will also start using AlphaGomoku-Yixin package. |
Regarding number of threads in 5.7.0: Regarding easier installation, I understand @garry-ut99 reasoning. But YixinBoard protocol is inconsistent, has no documentation, and in many ways violates the internal logic of AG. I don't want to invest time in implementing more support for it. I'd rather spend this time on writing my own GUI. |
Ok, are you thinking about modifying/adapting YixinBoard, QPiskvork, Piskvork, or building your own GUI from scratch? Building from scratch is investing much time too, isn't any of them suitable/easy for modifying? |
The idea of Lizzie GUI or Gomocalc seems to be good. I'd like a GUI with can view each branch of move or display winrate in real-time. QPiskvork is not good in analysis because of no option for analysis, just for engine tournaments. Besides that, QPiskvork GUI is not nice. Piskvork is the same as QPiskvork, it doesn't support real-time analysis and unlimited time settings. I think the best one is to create a new GUI from scratch with a modern style and satisfy those needs. |
Yes I forgot about Go GUIs like LizzieGUI, but maybe because they support only GTP protocol, while AlphaGomoku supports only Gomocup/Piskvork protocol, so they are not protocol-compatible, if it's not a problem, to make them protocol-compatible, then choosing LizzieGUI can be a good idea.
At least they "are good" because they already support the same protocol AlphaGomoku uses,
I know, it doesn't even support engine tournaments, only engine matches, which I already mention here : #8 (comment)
Given a fact it uses the same bitmaps like Piskvork, and looks same like Piskvork, you're basically saying that Piskvork doesn't look nice either, or maybe because the default selected bitmap in QPiskvork is different than in Piskvork, maybe try to change skins, some skins look better than others, also you can always create your own custom bitmaps/skins. For me Q or Piskvork doesn't look neither bad nor good, it's more a matter of choosing or creating a good skin. |
No, I didn't mean we will make AG to run on LizzieGUI but create a GUI with same function there, still use Gomocup protocol.
I'm not saying about reuse a possible GUI. If choosing Piskvork, and make it able to analysis, then it seems need to change a lot of part and GUI, not only add function.
I remembered that the pixel image of the board has a low resolution. And duplicate line after each move. the author seems divided each part of pieces.bmp of piskvork by slice only. Piskvork GUI is okay, it's easy to create a bitmap and import to piskvork. But anyway, choosing Piskvork or QPiskvork are same (about function), I still prefer Piskvork. |
I know that you meant to build from scratch, but when I mentioned about adapting/modifying (not building from scratch), it was just my separate alternative proposition to your proposition.
My reasoning was that actually I was thinking that building from scratch requires more work/time than adapting/modifying something which already exist, like I already said :
Because I was thinking that buliding a car from scratch requires more work/time than adapting an already existing car to a new engine, or already existing engine to a new car, but I'm not sure about it, so if it turns out that it's easier/faster to build GUI from scratch than to convert/adapt it, then I'm fine with it.
I didn't notice it for the first time, but I've looked now again and indeed, board and pieces are pixelisated, |
I think about time consume problem will depend on the purpose and target of the program. If it require to change a lot of from original then it's better to write a new one from scratch. And anyway, I'm here just to give some suggestion, I can't decide the product because I'm not author so of course I just mention about idea only. I understand your opinion as well, but thinking again and make a small analysis about Yixin and Piskvork. Currently, Yixin is the most suitable and able to develope more. The only problem appears is protocol to connect/ communicate between engine and GUI. Analyze code may help but will cost a time. Another reason is Yixin GUI was too old (about design), some modern application recently such as Lizzie seems nicer (Of course, this is just a small factor that we don't need to be serious). At this time, Yixin still good with it first purpose so keep using is no problem. My ideas about function are above, what is your idea about function that you want to add? (include modify or from scratch) |
Protocol
Same as Gomocup protocol, just a little different
yxboard
yxstop
Another protocol such as turn, board, ... is the same as Gomocup protocol
Rule Standard
The first command for choice "Program play as black" usually is
The first command for choice "Program play as black" usually is
After it maybe the same with Piskvork
Swap / Swap2 rule
Some command:
1. yxswap2step2 (Program choose color or add 2 more stones)
Example:
After it, engine will choose color or add 2 more stones.
1.1. Add 2 more stones:
Engine will return:
a) Opponent choose white:
It mean the manager will send include 3 stones from begin, 2 stones from engine and 1 stones from opponent.
b) Opponent choose black:
It mean the manager will send include 3 stones from begin, 2 stones from engine.
1.2. Engine choose black:
Then after taht, the manager will send
then the game continue
1.3. Engine choose white:
Then after that, the manager will send
and engine return the next move.
2. yxswap2step1 (Program put 3 stones)
The manager will ask the opponent choose color then maybe also send "BOARD" command then continue the game.
Notice:
Support analyze mode
MESSAGE REALTIME BEST x,y <---- Show the best move from the current position
MESSAGE REALTIME POS x,y <---- Show the position is analyzing
MESSAGE REALTIME REFRESH <---- Refresh, maybe it mean clear all spot
MESSAGE REALTIME DETAIL ... (print output)
The text was updated successfully, but these errors were encountered: