bernds / q5go Goto Github PK
View Code? Open in Web Editor NEWA tool for Go players: SGF editor, analysis tool, game database and pattern search tool, IGS client
License: GNU General Public License v2.0
A tool for Go players: SGF editor, analysis tool, game database and pattern search tool, IGS client
License: GNU General Public License v2.0
the observer bar seems to be always visible, even when i choose to hide it and save it that way, the next time i open a new game, the bar keeps coming back. you were saying this was independent from the general layout and a special settings for it might have to be made for it. this issue will serve as a reminder of that talk as it's easy to forget when time passes and one gets involved in other parts of the code.
My sys is windows 7
i configured the layout so when i play on igs, the side bar is on the right, and the comment (chat) bar is on the left. i disabled most of the other bars like: editbar, navigationbar.. basicaly i kept only 5 of them:
then i clicked save layout globaly, but, each time i restart q5go, few of them bars have been reseted to their default location, and reactivated so they show up again despite me having disabled them before. some of them are saved i think, and some others aren't.
also, in new game, the sidebar is reported as disabled in the view menu while it is actualy being shown.
each time i connect on igs, i have to manually set quiet to be false.
i want to see the server message. q5go doesn't seem to save my choice for quiet as it does for other settings, like: looking and open
../src/qgo_interface.cpp: In member function ‘void MainWindow_IGS::unobserve_game(go_game_ptr)’:
../src/qgo_interface.cpp:447:73: error: no matching function for call to ‘QMetaObject::invokeMethod(MainWindow_IGS*, bool (QWidget::*)(), Qt::ConnectionType)’
QMetaObject::invokeMethod (this, &QWidget::close, Qt::QueuedConnection);
It would be nice to specify a number of visits to put on each board position, as a different option from "time to spend on each board position".
Currently I end up with some fairly uneven visits on board positions - some positions get 700 visits, some get a few thousands, some apparently get up to 20 or 30. I imagine that some of these numbers are due to how q5go does the analysis in the reverse, so it reconnects to prior-done work in the analysis, but I'd like to have a minimum number of visits guaranteed on all board positions.
I'm using Polish locale on my system (pl_PL.UTF8
), in which the decimal point is defined as comma (,
).
The comma is used for a komi field in user interface of "Game information", which is fine. However, when writing the game to SGF, a comma is also written, e.g. KM[6,5]
, whereas the SGF standard requires dot to be used (i.e. KM[6.5]
).
This results in broken SGF file, which cannot be read back into qGo or other editors ("Errors found in SGF file").
I suspect other tags containing real values can also be affected.
The workaround is to edit SGF in some text editor and replace comma with dot.
Hi. I greatly appreciate your Go editor and its unique support for both GTP engines and toroidal Go. Adding support for the Klein bottle (where one pair of opposite edges connects in opposite orientation and the other pair connects in the same orientation) would be very helpful for me, as it would help me play this variant with an adapted version of KataGo. Could you please add this support or point me to what code I would need to change in order to accomplish this? Thank you!
e.g. a whole directory / subdirectories, or clicking on many games at once in the DB window.
Using the latest git version, I'm unable to write messages when playing or observing games. The small message window doesn't appear. There is no such issue with the 0.9 release version.
as per the explanation at https://stackoverflow.com/a/4644922, the code below works for me:
void ClientWindow::slotFileOpen(bool)
{
QString fileName(QFileDialog::getOpenFileName(this, tr ("Open SGF file"), setting->readEntry("LAST_DIR"),
tr("SGF Files (*.sgf *.SGF);;MGT Files (*.mgt);;XML Files (*.xml);;All Files (*)")));
if (fileName.isEmpty())
return;
#if defined (Q_OS_WIN)
QByteArray qba = fileName.toLocal8Bit();
#else
QByteArray qba = fileName.toUtf8();
#endif
open_window_from_file (qba.constData ());
}
i was playing on igs, and suddenly my opponent was taking a long time to respond and do his move.
on the server window (where there is the igs console, user list and player list) i tried to refresh game and user list, but nothing would show up. these areas went all white with nothing in it. igs console didn't reply to my input properly, like: typing "help commands" didn't gave me the list of commands.
so now i have no idea how to resume my previous game, if it is possible at all.
if there is a long server lag or connection lost, maybe q5go could tell us about it ?
On macOS, if a board window is in front, if About q5Go
action is triggered from the menu bar, the AboutQt
dialog pops up.
Setting proper menu role to actions may resolve this issue, for example:
--- a/src/boardwindow_gui.ui
+++ b/src/boardwindow_gui.ui
@@ -3644,6 +3725,9 @@ Take a screen grab of the current board position and export it to the clipboard
<property name="shortcut">
<string>Alt+P</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::PreferencesRole</enum>
+ </property>
</action>
<action name="soundToggle">
<property name="checkable">
@@ -3670,11 +3754,17 @@ Take a screen grab of the current board position and export it to the clipboard
<property name="text">
<string>&About..</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::AboutRole</enum>
+ </property>
</action>
<action name="helpAboutQt">
<property name="text">
<string>About &Qt...</string>
</property>
+ <property name="menuRole">
+ <enum>QAction::AboutQtRole</enum>
+ </property>
</action>
<action name="anConnect">
<property name="text">
Hello there,
I do like your q5go very much but, in my opinion it should provide a better GTP support.
I do use and test tens of go engines and I would like to use them with q5go, unfortunately it seems your program is not providing much help in debugging gtp engines.
For example, in case a GTP transaction fails for any reason, you simply get a "Invalid response from GTP engine" message without knowing why it failed. This makes GTP debugging very difficult. I would like to suggest a change in GTP_Process::default_err_receiver (src/qgtp.cpp) like so:
void GTP_Process::default_err_receiver (const QString &error)
{
QString errMsg = "Invalid response from GTP engine: ";
errMsg += error;
m_controller->gtp_failure (this, tr (errMsg.toLatin1()));
quit ();
}
You would at least know what was the invalid response from the GTP engine and fix it. And it would also be VERY helpful to know why the "GTP process exited unexpectedly" which is shown in case a "who knows why" error is happening with a GTP engine.
Another thing I would love to see, and for the very same reason about GTP debugging, is to have a window with the whole GTP transaction and log. I see this log window is opened at the moment of the engine startup and then it is closed: Why don't you add an option in order to have this window always open and showing the whole communication with the engine?
It would immensely help to track and debug any GTP engine without the need of using another program offering this useful feature.
I truly like your program, also because it was written for Qt, and it would be GREAT if it would have a better GTP integration and logging. I also find sometimes difficult to use q5go when connecting to GO servers: it connects to the service but it will not show anything, no rooms, no games, no users, just an empty window.
Despite of that, this is a very good program which could replace all the other ones around and offering an "all in one" solution, from playing with a GTP engine, to connecting to a server, analyzing games and learning the game.
Steps to reproduce:
The issue does not occurs before opening the new board window. Closing that second window does not solve it.
An actual server connection is not necessary, this seems to be purely on the UI side.
This is on the master
branch, running:
Linux 5.7.3
X11
i3 4.18.1
Qt 5.14.2
the chat window have a few problems and might benefit a little work on it for better user experience
there is a loss of focus whenever enter key is pressed.
when one send text by pressing enter key, the focus is lost and constently require the user to keep clicking on the chat window at each sentences he want to make. this is a little annoyance. if the focus on chat window could be maintained until a click is performed elsewhere that would be better for the user experience as it would allow normal chatting without having to constently having to re-set the focus.
the user experience with chat window could also become better if different colors could be set for the two speakers. my text could be all green, and the other's can stay black for example. allowing to apply a color setting on the speakers text would help for better readability, at a glance one could quickly see what is his text and what is the opponent's text. this could be made either quickly with just one hardcoded value. or to be even better a new ui element in preferences allowing settings of both colors, where q5go users could select which colors for each speaker. (for example, in preferences i could choose: my text blue, other's text red or whatever colors suits q5go users better, they could choose).
I know I can store variations when analyzing, but when I pause analyzing, all the variations are gone. If use Sabaki, I can use "final_score" to store variations temporarily on the board and the analysis is paused, but I can't store variations because the author of Sabaki doesn't like variations as far as I know. I hope to choose variations to store when pausing analysis because real-time analysis will make my poor laptop hot.
for example, set file path in preference, the file path contains CJK characters, it can't save to setting file correctly.
missdeer@4280258
i think q5go doesn't display igs session output correctly.
for example it doesn't seem to show captures.
unless igs changed its protocol, here's what we should see
normal move:
1 8
15 Game 656 I: Maruhi (13 527 8) vs tataki (16 518 17)
15 264(B): B19
move that capture opponent stones:
1 8
15 Game 656 I: Maruhi (13 527 8) vs tataki (16 518 17)
15 264(B): B19 C19 C18 C17 D18
(it's not from a real game but this is to illustrate that captures should show up next to any given move)
Would be great to be able to set the shadow intensity and x/y offset from the stone (as well as disable the shadow entirely if desired).
I am trying to compile q5go on an Archlinux system, following the suggested mkdir/qmake/make procedure. Compilation fails with:
make: *** No rule to make target '../src/images/boardwindow/navclicked.png', needed by 'qrc_q4go.cpp'. Stop.
In fact that file is nowhere to be found in the sources. Once I added a dummy png compilation succeeded. However, it would be nice to have the right image...
A problem I have. Challenge player I do. They accept, but no board appears. Perhaps I am missing something, but it feels a bit like I can't use version 0.8.1 to start a game. Perhaps I do something stupid
nmatch A W 9 19 600 180 25 0 0 0
Requesting nmatch with A(W 9 19 600 180 25 0 0 0).
Game 167 (I): A [ 5k?] vs B [14k ]
TIME:167:A(W): 0 600/600 0/180 25/25 0/0 0/0 0/0
TIME:167:B(B): 0 600/600 0/180 25/25 0/0 0/0 0/0
GAMERPROPS:167: 19 0 -5.50
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi -5.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16>|. . . + . . . . . + . . . . .>+<. . .|<16 Wh Time 10:00
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 10:00
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move:
12 |. . . . . . . . . . . . . . . . . . .| 12 #0 O (White)
11 |. . . . . . . . . . . . . . . . . . .| 11
10 |. . . + . . . . . + . . . . . + . . .| 10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
games 167
Match [167] with B in 10 accepted.
Please use say to talk to your opponent -- help say.
A B C D E F G H J K L M N O P Q R S T
167 5 0 19150.00 19150.00 19150.00
Seemly SGF files downloaded from http://weiqi.tom.com/php/listqipu.html are encoded as 'ISO-8859-1' aka 'Latin1', but they don't have correct CA[] property set, thus CJK characters can't be displayed by q5Go correctly.
Maybe charset detection and convertion to UTF-8 before loading SGF is need.
When I customize the layout of the game/board window it fails to save completely, and also fails to apply as the default when a new game window is opened.
Specific reproduce steps:
My preference is to maximize the vertical screen space the board is able to occupy.
Followed the instructions to compile on linux and I noticed that none of the sounds will play. No errors show on the terminal while running, either.
Compiled on Arch Linux with latest packages and using ALSA for sound. Tested both the 2.0 release and the latest git pull.
if the SGF file contains BOM, q5Go can't read it properly.
When an IGS connection is in verbose mode (toggle verbose 1
), game moves are send as nice ASCII art, which is not recognized by the parser. When that occurs, the board windows simply never show after accepting/observing a game.
The problem is that on IGS, the verbose setting seems to be persistent across sessions. Thus if I e.g. turn it on because I was connecting to IGS with telnet, and then connect with q5go, it will still be in verbose mode, and fail. (This took me longer to debug than I am willing to admit)
Enabling client mode toggle client 1
when starting the connection seems like a sensible way to avoid this.
I have yet to check whether this applies to NNGS in general, or is specific to IGS.
user password should not be saved in debug file.
some measures should be taken to avoid storing them in debug file.
it happen only once per session as far as i can tell.
PASSWORD***
"1 1"
Password or 1 1: found: "1 1"
"...send password"
send password "xxxxxx"
>> "xxxxxx"
PASSWORD***
apparently you're already able to tell when that event takes place, from its begining to its end (i mean the two strings "PASSWORD***" encompass the whole event). so just avoiding logging everything in between would be better. or replacing that with generic (password free) equivalent.
there is a version of KataGo for a board up to 37x37! lightvector/KataGo#454 (comment)
your wonderful program only supports up to 36x36. please do up to 37x37!
hi,
currenlty the only options for analysis rules are japanese, chinese or "guess from sgf" (analysis menu -> ruleset)
the "guess from sgf" seems to default to tromp taylor rules in the absence of any other information, overriding katago's rule definition from its config file.
this is a problem if you want to use non-standard rulesets for katago, like stone scoring, which is area scoring + group tax, and currently impossible to use in analysis in qgo as far as I can determine.
so it would be cool if an option like "unspecified" for the ruleset could be added which does not override the ruleset specified in katago's config, or alternatively, if the "guess from sgf" would simply not set any rules at all in the absence of any information. (tromp taylor is seemingly used on blank sgfs)
greetings
configure reports error: required file 'src/pics/Makefile.in' not found
There is no pics
directory inside src
.
I make matches of different KataGo networks and play myself on 27x27 and 29x29 boards. after that it is interesting to do the analysis using the stronger KataGo network. but when setting the parameters, "preferences - computer go - change an engine configuration - board size (use for analysis)" - the limitation is 25x25. can this restriction be lifted?
probably in the "batch computer analysis" window "board size" is related to this, also limited to 25x25
While packaging q5Go in openSUSE, we noticed it fails to build with Qt < 5.10 due to QMetaObject::invokeMethod (https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-4 specifically).
The configure
file only looks for the pkgconfig modules but doesn't define a minimum version for Qt dependencies.
Following the instructions..
Compiling
On Linux, make a build subdirectory, enter it, and run
qmake ../src/q5go.pro PREFIX=/where/you/want/to/install
..makes my system (debian oldstable) request qt4 binaries, so I installed qt5-default.
This had qmake
work, but make
then failed with tons of errors on 'unknown functions'.
Suspecting that what is really needed is qt5-default binaries, I installed those.
qmake is now failing with
Project ERROR: Unknown module(s) in QT: multimedia svg
Which assumptions are made about the build tools available?
What do I need to install, and possibly clear out, in order for the instructions given to work?
On loading an SGF, sometimes q5go pops up a dialog box saying "Errors found in SGF file". Often this is for files that load quite happily in other applications (e.g. Lizzie, CGoban, Jago). Is it possible to include a bit more information in this dialog box, so it's easier to track down inconsistencies in how the SGF standard is used? I have no problem with q5go enforcing a stricter interpretation of the standard than others, but the error reporting could be a bit friendlier!
(In some cases, after a lot of trial and error, I've found that Jago is inserting "FF[1]" tags that q5go doesn't like. If I just delete those four characters of the SGF using a text editor, the file loads with no problems.)
I guess I must be missing something? The following error occurs on starting build (make) on my slackware64 system:
../src/analyzedlg.cpp: In member function ‘virtual void AnalyzeDialog::eval_received(const analyzer_id&, const QString&, int, bool)’:
../src/analyzedlg.cpp:346:55: warning: unused parameter ‘id’ [-Wunused-parameter]
346 | void AnalyzeDialog::eval_received (const analyzer_id &id, const QString &, int, bool have_score)
| ~~~~~~~~~~~~~~~~~~~^~
make: *** [Makefile:1059: temp_/analyzedlg.o] Error 1
Exit 2
full info:
komi 7,50
2020-05-07 18:35:17+0200: Controller: 3 clear_board
2020-05-07 18:35:17+0200: =3
?4 Expected single float argument for komi but got '7,50'
2020-05-07 18:35:17+0200: Controller: 4 komi 7,50
2020-05-07 18:35:17+0200: ?4 Expected single float argument for komi but got '7,50'
quit
is it possible to auto-play sgf files? that is, to have the board automatically go through the game moves at some set time interval?
Like cgoban3's shift-click on next-move button, which starts playing the moves without user input.
I've seen some reference to an auto-play feature in the changelog and in the translations, but couldnt figure out if it's still a feature in q5go and how to use it. (The fact that auto-play interval settings seems to be gone from the preferences makes me think it isnt currently supported)
sooo.. is it possible? if so how? if not, is it likely to be implemented?
I am running Batch analysis in version 0.9 using KataGo and the analysis starts from near the end of the game and works towards the first move. The issue is that in the two games I have tried, the analysis skips the last several moves of the game, for example starting analysis at move 208 in a game that has 217 moves, skipping analysis of 209-217. The other game it started analysis at move 135 out of 142 moves skipping moves 136-142.
missdeer@57aa74a
I have update qgo_zh_cn.ts, it looks good on my Windows box.
I had a look at v0.4; I'm particularly interested on it's features for toroidal boards. Is it possible to import SGF for a game on this sort of board?
I also posted this identical question on the L19 forum. Sorry for the duplicate but I tend to go on github a little more often than on L19...
Would it be feasible to add an option to merge all windows into a tabbed layout? Other than the obvious of keeping window manager clutter down, this would also help make streaming through OBS easier.
need to add something like below to src/q5go.pro
:
macx :{
LIBS += -framework CoreFoundation
}
I have an issue with analysis engine.
I use katago and get this message ; I couldn find where does this komi value come from and how to fix it.
<Working directory: /home/jl/bin/katago-v1.7.0-cpu-eigen-linux-x64
protocol_version
KataGo v1.7.0
Using koPOSITIONALscoreAREAtaxNONEsui0 rules initially, unless GTP/GUI overrides this
Loaded config /home/jl/bin/katago-v1.7.0-cpu-eigen-linux-x64/gtp_example.cfg
Loaded model /home/jl/bin/katago-v1.7.0-cpu-eigen-linux-x64/g170e-b15c192-s1305382144-d335919935.txt.gz
Model name: b15c192-s1305382144-d335919935
GTP ready, beginning main protocol loop
=1 2
boardsize 19
=2
clear_board
=3
komi 7,50
?4 Expected single float argument for komi but got '7,50'
quit>
can't delete existed Go Engine properly
The official pandanet client has this helpful feature that changes the color of your clock if your time remaining/moves remaining value goes under a certain threshold. Also, clients for some other servers can display the time remaining on top of the last played stone if you have only a few seconds left. This is very useful for blitz. Would it be possible to implement something like these in q5go?
I have compiled this on two of my (slackware64-current) systems now. On one system the 'game sekection' window docks all observed games into a single pane/window and on the other this does not seem to work. Even though I can enable/view the games selection window on the other system, each game wants to start in a separate window. Is this a compile feature? A library issue? Thanks.
When sound is turned on there is sound only for about 1/4 of the moves. These moves that have sound seem to be randomly distributed. It is quite annoying because sometimes when i'm reading i don't immediately realize when my opponent makes a move. Looking at the source it doesn't seem like intended behavior, but i couldn't figure out why it is happening. I tried removing the switch statement and making it play only one kind of stone sound, and setting local_stone_sound permanently to 1 but these didn't fix the issue.
I am developing a Go web GUI for non-standard Go games for fun, and I want to use svg/ascii to save/load positions as pictures because they both can be edited.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.