# Jago
Documentation

#

## Version 4.18

## Overview

This file only contains general things about the JagoClient. If you never played on an Internet Go Server, you should first read the first instruction about playing Go in the internet.

Jago is

- an IGS/NNGS client,
- a SGF / XML game viewer, locally and as a Web applet,
- and a point to point go player (using the Internet).

Features are:

- Available on all platforms.
- On-line help.
- Game tree with variants, even for on-line games.
- Variations can be generated and entered with the mouse.
- Nice, but resizable board.
- For true color screens a wooden board with anti-aliased stones, still resizable.
- Configurable board and stone colors.
- Coordinates on request, and dynamic coordinate display.
- Big comment window.
- Sound on request, hear your opponent make a move, get a message warning.
- SGF read and write.
- XML read and write.
- Mailing games in SGF format.
- Chinese and Japanese counts.
- Automatic login to server.
- Multiple connections to IGS/NNGS servers.
- Channel chat window.
- Configurable message, information and error filters.
- Auto Reply while you are away.
- Programmable function keys, sending text to the server.
- Send fields with history.
- Connection to a go partner over the Internet.
- Possibility to build up a partner network, which publishes open partners among themselves.
- Chat window with the partner.
- Partner games with accurate timings.
- Freeware.

## Using the Windows

Many details depend on your operation system.

However, JAGO keeps the sizes and positions of the windows in a file named GO.CFG. It tries to write the file into the active directory. So you need write access to this directory. In multi-user environments, you should set up a local JAGO directory for each user with an installation script. Then a script can start JAGO from this directory. You need to pass the JAGO directory as -home parameter to gain access to the help texts in this case.

Most systems allow cut and paste from text fields. In Windows, use CONTROL-C to copy text from anywhere to the clipboard and CONTROL-V to paste it into a JAGO input field. The terminal window has a pop-up menu for cut and paste, which is accessible with the right mouse button.

The input fields, which send commands to the server, have a history. To re-use old commands press cursor up or down.

## The Main Window

The startup window shows up, when you start Jago. It displays the go servers, your partners and some buttons. Switch between the server panel and the partners panel with the corresponding buttons.

In this window you can either connect to a go server, or connect to a partner, or open a local board. If you wish to connect to a server, you will have to edit the connection parameters (see below) and press the Connect button. The same applies to partner games. To open a local board, choose the corresponding menu item.

To setup your server connection, press the Edit or Add button. A dialog appears, where you have to enter the following items:

- Connection name: This is the name, that should appear in the connections list.
- Server: The internet name of the server. Right now, there are two server available (see below).
- Port: The port the server is watching (see below).
- User name: The name your are using on the server. If you want a guest account follow the instructions of your server. On NNGS, you will have to choose a weird name, unlikely to exist already. On IGS, choose guest.
- Password: Your login password for the server. If you leave this open, you will be prompted for the password every time. You may enter a space for guest accounts.
- Move mode: Do not choose anything else than move, unless you know what you are doing.
- Encoding: This will display your local character encoding. If your server uses the same encoding, leave it as it is. You will then be able to send and receive local characters (Kanji and such) from your server. Java uses Unicode internally and has to know, how to translate this to the outside world. My setting is `8859_1` or `Cp1252`. If you encounter problems (loosing connection with exception message), try adding a `!` before the code page, or try using `ASCII` or `!ASCII`.

Here are the internet names (addresses) and the ports of the existing servers:

    igs.joyjoy.net 6969
    nngs.cosmic.org 9696
    wing.gr.jp 1515
    lgs.hinet.net 9696

To setup your partner connection, press the Edit or Add button in the lower half. You will have to enter

- Your partners internet address.
- Your partners port (should be 6970)
- The state of the partner connection (silent, private, local or public)

Your partner needs to start the server with the corresponding menu item. To connect, press the Connect button in the lower half. Enjoy your chat and game! A started server waits for request on the specific port. Do not change the port from the default 6970. You can do so, but need an agreement with your partners, who want to connect with you.

You need to set you rserver port, but should use 6970. Furthermore, you should give your server a unique name, which describes yourself to others, maybe including your playing strength.

If you start a public server, Jago will publish this to all your partner connections, which have a state other than "silent". These servers will again push your server start to other connected servers, unless they have a state "private". A "local" state means that the partners may publish your server start to connected servers, but these may not further publish it. This is the meaning of the partners state flag.

Furthermore, any server which has received your server start will send back a list of open servers known to him. He will of obey the rules of privacy mentioned above.

Using this feature, you can build up a smaller or larger network of open servers.

The main window is also used to set some options. You can e.g.

- choose wether you want a special send field to send comments to your opponent, or Kibitz,
- turn on sound,
- edit the filter for messages, information and errors,
- edit the function key texts.
- edit the fonts.

These options are explained in the on-line help.

## Connecting through a Telnet Session

Sometimes a firewall allows you to do telnet to a machine outside the firewall. If this is the case, you can use a telnet session to connect to the internet go servers.

To do this, enter port 23 (Telnet port), and the machines name in the "add connection" dialog. This allows you to connect to your machine via a primitive telnet session. You can then use a telnet command on that machine to connect to the internet go server, such as "telnet igs.nuri.net 6969". Local encocing is not available in this case.

## The Terminal Window

This window pops up for each connection. You could open multiple connections, if this makes you happy. The windows displays a large text area for server output, a command line for the input and some buttons.

The internet Go servers are located on some remote machine. Each client or telnet connection talks to this server via an internet port. The conversation is asynchronous. So you can send commands while the server is sending data.

In this client, received output is printed to the terminal window after it has been filtered. You will not see moves of your opponent in this window. Rather these moves are sent directly to your game board. Some messages even display in a separate window to catch your attention. You can switch this behaviour off with a menu entry, or you can filter certain messages or warnings from popping up.

On the other hand, all input goes to the server almost un-filtered. Some commands are filtered to avoid strange behaviour. However, for these commands you should use the buttons in the terminal window or in the games window.

If you are playing a game, moves will be sent to the server from the game board directly. You can also talk to your opponent or kibitz from the game board. However, this can also be done by typing into the input line of the terminal window or the extra send line in the board window.

You can save all information in the output window to a file with the corresponding menu entry.

Finally, closing this window will abort your IGS or partner connection and close all playing boards.

## Using Sound

You can switch on sound, if you like. This will send a message to you, when

- You have switched messages off, but a message comes in.
- You are investigating a variation and your opponent sets a stone.
- You place a stone, which is not yet confirmed by the server.

You have two sets of sound. The Beeps Only menu entry gives you shorter sounds.

There have been reports about problems with sound. I experience problems myself sometimes. Since the sound interface for applications is not documented, I cannot fix these problems.

## Partner Connections

With this window, you are connected to a go partner somewhere in the world. To send chat to him, enter the text in the text field below the output window.

To start a game, press game and enter the parameters, then press the Request button. If your partner accepts the game, a board will show up and you can enter moves.

Playing the game is similar to playing over the IGS/NNGS. But timings are more accurate, since only the time is counted while you were thinking. Also, there is no sever to count the result for you. So you have to end the game with the corresponding menu item, remove all prisoners and use the menu entry to count the result. Again, the result will obey the chinese rules. To convert to Japanese rules is easy. You will have to subtract the handicap stones minus one from the black score, and add an additional point to the white score, if black did the last move. Furthermore, some seki positions are treated differently.

Note, that your partner has to agree upon the end of the game.

You can request and undo of your partner. This will undo your partner's move and your own and will add 30 seconds of extra time to your partner. The partner can decline the undo.

## Board Window

This window contains the following elements:

- the menu
- the board itself
- an information label
- a label displaying the field coordinates under the cursor
- the undo button
- the movement buttons
- variation buttons
- a send button, if it is not a local board
- a comment window
- an optional extra send field to send commands to the server
- an optional timer field, if the timer is not in the window title bar
- an optional big timer with color warnings for low time

### The Menu

The file menu lets you empty the board, save it to disk or load a game form disk. Emptying and loading are enabled only for local boards. The same applies to changing the board size, which is done automatically for internet games. The format to store games is the Smart Go Format (SGF), which is also accepted by many other programs.

The settings menu lets you choose, if you play, who is to play, or if you do special things. You can set marks to empty places and stones, or set the letters a,b,c... You can even remove stones from the board. Setting up a handicap is done by placing black stones to the board and choosing the "White to play" button. There is also an option to remove all marks. Note that handicaps are automatically done from the IGS server, if white enters the handicap command.

Note, that while playing a game over the internet, the server controls the move. So your move is not valid until it is confirmed by the server. This only applies to the main variation. In side variations, you can do whatever you want.

The score command is used to finish the game. Refer to the help about playing a game for more information.

### The Board

The board displays the current situation. Marks are displayed in blue and letters in yellow. The last move is emphasized by a white rectangle. Variations are marked by green dots (refer to the help about variations).

You may use a nice looking wooden board and computer created stones, which are anti-aliased to look smoother. If you do so, you will experience some delay, when changing the board size. But from my viewpoint it is worth the waiting.

Below the board, you see a label, displaying information about the expected action. It will also show, if you are in the main variation by a star (*), and if you are at the end of the main variation by a double star (**). Beside it, you see the coordinates under your mouse cursor.

### The Buttons

The undo button works differently over the net and locally. Over the net and at the end of the main variation, it will send the undo command. This command is used to undo the move of the opponent and may only be used, if it is your turn. Elsewhere, this button removes the last move.

The direction buttons are used to go up and down in the variation. The variation buttons are used to switch between variations. The V button will go upwards to the first move of the current variation. The * button will go upwards to the main variation and the ** button will jump to the end of the main variation.

The send button is used on non-local board to send commands to the server quickly. Furthermore, it has abbreviations to talk to your opponent (via the say command) and to kibitz to the game.

### Comment Window

This text area lets you add comments to your game. Some comments are added by the server automatically.

Note that comments are reformatted before display. They are stored in paragraphs separated by a single empty line.

### Keyboard Shortcuts

You can use keyboard shortcuts to edit the board. You will find a list on-line. Note, that the board must have the keyboard focus to be able to read the keyboard. The board will get the keyboard focus, every time you click into or closely beside it.

## The Game Tree

Games are stored as trees. Each node of the tree can have many children. Going down from the root node and taking the first child every time is the main variation. All other variations are considered side variations.

You create a variation to the current move by clicking to an alternative position for this move while holding down the SHIFT key. This kind of variation can be seen easily on the board by the green dots. You can switch to any of these variation by clicking on it and holding down the CONTROL key.

The numbering starts with one in each variation.

On non-local boards, some actions may be blocked for the main variation, because it is assumed to be controlled by the server. Moves at the end of the main variations may be sent to the server instead of the board. The server sets the move later.

## Playing Games

To play a game, you simply click on the current board position. If you are playing over the internet, the move will first be sent to the server until it appears on your board.

Setting the handicap is done in different ways for local and non-local games. In local games, you set the black stones and choose "White to play" to start the game. In internet games, you use the handicap command. Send

    handicap 6

to the server for a six stone handicap. The server will set the handicap stones on your board.

You can use the pass command in local and non-local games.

During the game, you may create and inspect variations (see the section about variations). Use the ** button to get back to the current game position.

Finishing the game is different for local and non-local games again.

To finish a local game use the "Remove groups" menu item to remove prisoners and then the "Score" item to get the final score. This score will use the chinese rules. To convert to Japanese rules is easy. You will have to subtract the handicap stones minus one from the black score, and add an additional point to the white score, if black did the last move. Furthermore, some seki positions are treated differently.

To finish a non-local game, pass. If your opponent passes two, you will get a message from the server. Choose "Remove groups" from the menu and remove all dead groups. These removals will be sent to the server. After removing all dead stones, choose "Score". This will score locally, and send the done command to the server. The server will do its own scoring and notify you of the result.

## Final Words

This program has been developed rather fast, but then took a long time to come to this final version. Java proved to be an ideal tool for rapid prototyping. I took me only two weeks to assemble the first version. I will decide on further support based on user response and user requests.

The copyright of the program remains with the author. You are welcome to spread or to use the program extensively. It is unlawful to sell the program to anyone. It may be included into shareware and freeware collections as long as charges remain in appropriate bounds. You may not call this a full version for advertisement purposes. This is a freeware program and there is no restricted version. You are welcome to distribute an unchanged version for copy costs. Nowadays, in view of the WWW, it may be more appropriate to link to http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/jago/Go.html

> I will not be responsible for damages caused by this program. You use it entirely on your own risk. There is no guarantee that the program works as expected.

You can contact me by EMail or visit my homepage.

## With best wishes
for happy games!