================================ To do file for OpenGo ================================ last rev. 5/2004 Here are the different things to improve: Core Improvements Engine Connection Protocols Game Load/Save/Format Support Windows GUI Improvements Console GUI Improvements Go Engine Protocol Particular engine support Other Improvements ** ISSUES ** The priorities are: 1 vital 2 nice to have 3 perhaps later Please report on what you're working on so that we don't have much overlap: opengo@inventivity.com ------------------------ Core Improvements ------------------------ 1 Improving scoring estimation 3 Better support for japanese style handicapping ------------------------ Engine Connection Protocol Support ------------------------ 1 improve go modem protocol GMP implementation - improve timeout handling - improve error handling - board setup 2 Support pipe-based GMP players other than gnugo 1 implement GTP 2 We should provide a skeleton for such an engine with the GMP support. ------------------------ Game Load/Save/Format Support ------------------------ 1 Improve and generalize the import/export code of go games to support non-ishi formats. Also, the ishi write code needs to be enabled (there is code to do this... contact me). SGF format needs support in particular!!!! 1 Ability to browse the game-tree. NOTE: this should be done via the referee. 1 Improve support engines that need to train - Play n-games against a list of opponents (round-robin). * Partially done in console. - Play against a training set, then a test set. * Partially done in console. ------------------------ Windows GUI Improvements ------------------------ 1 Make board display correspond to the scrolling board in status window. One axis needs flipping, and the mouse coords adjusted. 1 The buggy modem of gmp needs to be replaced using the newer method. (PS: this is easy!) 1? Last game setting should be saved, reloaded, reused 2? Support for browsing a game-tree 2? Make the wood and splash screen bitmaps support 256color instead of requiring 16bit support or greater. (Change bitmaps depending on the hardware capabilities?). 2 Save game to a file name at the end of the game. Loading an in progress game requires a go engine to support an initial board setup. 2 Display move count on each stone. 2 Support a scoring phase when a human is playing. 2 Disable buttons when it's not the current player's move. 3 Enable selecting different wood for the board. 3 Using a picture of a stone would be better than rendering it. 3 2-d Shadows under stones. 3 Show board in 3d. A nice direct-x learning activity. 3 Resizing the player & status windows should stretch the controls in it. 3 Modem player chat should be forwarded to opposing player and displayed in referee window. Ref's typing should go to both players. ------------------------ Console GUI Improvements ------------------------ 2 Command-line interface needs considerable improvement 2 Support for browsing a game-tree. ------------------------ Go Engine Protocol ------------------------ ------------------------ Particular Engine Support ------------------------ Gondo & Wally: SGF-> BRD conversion and BRD->SGF conversion. ------------------------ Other Improvements ------------------------ 1 Support connectivity to IGS & NNGS for testing. This can be done through a PlayerProxy for these protocols. =========================== ** ISSUES =========================== Windows 1. Boards for Gondo, Wally have the same orientation as books and GnuGO, 2. Window output has different orientation 3. Should say what the handicap is in the title bar, should also add Komi in the future. 4. When Multiple games are played simultaneously, the status output is not written to the correct window. It will write to the latest instance of that player. Console 1. If external program is not launched, program should not crash and give warning 2. Human board with special characters does not show Ko. ============================== Protocol Issues ============================== -. It seems that once OpenGo receives the second consecutive pass move via two gmp clients playing each other, and the game is over, it doesn't inform the other client of that final move. Therefore, it just hangs, waiting to hear it's opponent's move. -. Item (4), I think, also presents itself in the console version. Leading to a serious resource hog when running multiple games overnight (because one client from each game stays running in memory). -. The really annoying bug I found and fixed was that OpenGo was interpreting a certain non-pass move (a1?) as a pass move. Thereby corrupting the board and leading to other problems. I'll have to look at the source as see exactly what file it was in and everything. I'll get that for you tonight. -. When you play a handicap game, white should move first. -. Validate: Does handicap works WITH GMP? ============================== Windows Interface Issues ============================== 1. The graphics are annoying the way it flickers constantly under windows. This should be fixed. 2. The visual interface has the goal of indicating where legal moves are. The implementation tries to achieve this by changing the cursor as it is moved over the board. The effect is that some find that the changed cursor looks like a stone so it can seem that a real stone has already been placed. The suggestion is to show a small red dot where it is legal. The implementation should be improved somehow. How? 3. One can't play two different GMP clients against each other. This should be fixed somehow. How? It is suggested that the New Game window specify an executable and a command line. Alternatively, a configuration file could be created with these commands, loaded at runtime, and available for selection when desired. 4. I often want to look at the text window on the left while the game [between two gmps] is going, but that is very difficult, b/c it keeps adding more text at the end and scrolling back down. How about a "pause game" button to facilitate this? 5. Also annoying, is the fact that every time I start a new game, I use the same settings, but OpenGo defaults to something I don't want. Can't these things be saved in a configuration file or something? It would really lower my blood pressure.