# The &ksirk; Handbook

Gaël
Kleag
de Chalendar

    kleag@free.fr

Nemanja
Hirsl

    nemhirsl@gmail.com

2002-2012
Gaël de Chalendar
2013
Nemanja Hirsl
&FDLNotice;
2021-10-14
KDE Gear 21.08

&ksirk; is a computerized version of a well known strategy game.

KDE
AI
free
game
GPL
KsirK
network
risk
strategy

## Introduction

&ksirk; is a computerized version of a well known strategy game. Commercial and other Free Software versions exist but I (Gaël de Chalendar) created this game initially as a C++ learning exercise and so, I developed it up to this point (see `README` for details).

Here's a screenshot of &ksirk;
Screenshot

In the current version, &ksirk; is a multi-player network-enabled game with an AI. (see `TODO` for details)

This documentation gives only the major information you need to start playing. Please read the tooltips and the status bar messages to complete your information.

The goal of the game is simply to conquer the World... It is done by attacking your neighbors with your armies. Peaceful, isn't it ? :-)

## Using &ksirk;

### Playing &ksirk;

Preliminary note: the map can be scrolled by three methods:

- You can put your mouse near a border of the window and the map will scroll in that direction

- You can use your mouse wheel: with no modifier, it will scroll vertically; when pressing the &Alt; key, it will scroll horizontally

- You can use the keyboard arrows

#### Starting a game

When &ksirk; starts, you are presented with a main menu.

The main menu of &ksirk;
Main menu

New Local Game

  Starts a new game.

New Standard TCP/IP Network Game

  Start a new game using Internet protocol suite.

Join Standard TCP/IP Network Game

  Join to the created by other user game using Internet protocol suite.

Load...

  Use this to load a previously saved game.

Quit

  Maybe you finally don't want to play?

If you hit New Local Game you will be presented with the New game properties dialog where you will be able to choose the number of players, the skin (or theme) to use, the game type (conquer the goal or have a specific goal) and finally if this game will be played with online players or if it is purely local. New skins can be downloaded using Download New Skins... button.

The New Game dialog
The New Game dialog

To start a TCP/IP network game, choose the New Standard TCP/IP Network Game option on introduction screen. After pressing this button you will be able to choose the network parameters: number of local players and TCP port on which waiting for connections.

Network game parameters dialog
Network game parameters dialog

Then, network players will be able to connect by choosing Join Standard TCP/IP Network Game on the introduction screen and by indicating the IP or hostname of the host and the port number you just set.

Joining network game dialog
Joining network game dialog

Each connection is indicated by a new row in the Players table below the map thumbnail.

New player row
New player row

Let's suppose you keep all the default settings and hit Next. You will then setup two players, one after one. For each one, you'll choose a name, a nationality and, if you want, setup a password such that nobody else than you can reuse this player when reloading this saved game. Lastly, you will here specify if this player is played by the computer or by a human being.

The Player Setup dialog
The Player Setup dialog

Then, after press Start, if you choose to play with goal, the goal of each local player is displayed, preceded by a warning such that other players looking at the same computer can discreetly turn away while the goal is being viewed.

The Goal Display warning message
The Goal Display warning message
The Goal Display dialog
The Goal Display dialog

#### Distribution

At the beginning of the game, countries are distributed to all the players. Each country contains one army (represented by an infantryman) at the start. Each player has some armies to distribute to his countries at their turn (indicated by the presence of their name and their flag in the status bar). Note that five armies are represented by a cavalryman and 10 by a cannon.

To put an army on one of your countries, click on it with the &LMB;. To remove an army, click with the &RMB;. Note, as a general rule, that you will never be able to remove more armies than the number you placed.

Placing armies
Placing armies

When a player has distributed all there armies, the next player is automatically selected to do the same task. When all players have finished to distributing their armies, there is two possibilities that can be selected by two buttons showed in the right panel:

Redistribution Recycle

  One player wants to change some of his choices. The first player can then remove an army he just put in a country with the &RMB; and put it in another one with the &LMB;. When he finishes, he gives control to next player with the Valid button. When all players have finished their redistribution, the two buttons are displayed again.

End of redistribution Done

  The redistribution is finished and the game can continue.

#### Fight

After the redistribution, a turn starts. Each player plays at his turn. He has the choice to:

Next player Next Player

  The turn of the current player finishes and it's the turn of the next one.

Attack 1

Attack 2

Attack 3 Attack with one, two or three armies

Auto attack Auto attack

  To attack, drag with the mouse from the attacking country and drop to the attacked one. You will then be presented with a contextual menu showing the above entries.

  Attack menu
  Attack menu

  For a country X to attack a country Y with x armies, 2 conditions must be fulfilled:

  - the two countries must be neighbors;

  - country X must have at least x+1 armies before the attack.

  If the attack is valid, a dialog is displayed if necessary for the defender to choose if he wants to defend with one or two armies or let the computer decide.

  When the defenders choice is done, the fight will occur and be completed. This will described below.

  Defense dialog
  Defense dialog
Move armies Move Armies from one country to another

  This is the last action of a player's turn. It gives the possibility to move some armies from one of his country to another, neighboring the first one. To choose the two countries, please drag and drop like you use during an attack. When both countries are selected, a slider is displayed on which you can choose how many armies there will be on each country afterwards.

#### Outcome of the fight

For each army in the fight there is a corresponding die cast. The player who rolls a higher number on the dice, whether being from the attacker or defender, wins and the one to roll a smaller number on the dice loses armies according to the number of dice thrown.

Attack result displayed
Attack result displayed

If the number of armies in the defender country reaches 0, the ownership of this country changes to the attacker: his flag is set up and one of his attacking armies is installed in his new country. The "Move armies" slider is displayed as for the moves of the end of the turn.

Invasion slider
Invasion slider

#### End of the turn

To finish your current turn, if you don't want to move armies, you can hit the Next Player button in the toolbar.

When everybody has played, the turn is finished. Some armies are distributed to the players, in function of the countries they own: 1 for each group of three countries, with a minimum of 3. There is also a bonus for players that own a complete continent, different for each one. The values of the bonuses for the default skin are:

##### Bonus due to the continents

Continent | Bonus
--- | ---
North America | 5
South America | 2
Europe | 5
Africa | 3
Asia | 7
Pacific Area | 2

When a player has finished distributing his armies, he clicks the Valid button to allow the next player to distribute his bonus armies. As for the initial distribution, when all player have placed their armies, they can start a new redistribution cycle or start a new turn...

## Command Reference

### The main &ksirk; window

#### The buttons

Quit Game Quit

  Causes the program to quit.

New Game New Game

  Starts a new game. It will cause the displaying of a dialog asking the number of players. After that, each player will be asked its name with another dialog.

## Developer's Guide to &ksirk;

Please refer to https://api.kde.org/ for the documentation of the API. It was quite complete but is currently a little bit outdated. There are no comments in the `.cpp` implementation files.

Note that I originally developed this game under &Windows; with Borland C++ and WinG. I ported it to &Java; before converting back to C++ and &kde;. At the beginning I used French or a mix of French and English to name the identifiers (classnames, methods, members, &etc;). I also used French for the comments. When I decided to distribute this game, I decided to convert all to english... but I am clearly not a native English speaker: please suggest or make and submit corrections, to the code comments or to this documentation.

## Creating new skins

&ksirk; comes with a skin editor, named `ksirkskineditor`, that allows to edit all skin data, as soon as graphics (map, sprites, &etc;) are available in a &SVG; file. Please see the &i18n-ksirkskineditor; manual for further details.

## Questions and Answers

&reporting.bugs; &updating.documentation;

## Credits and License

&ksirk;

Program copyright 2002-2012 Gaël de Chalendar kleag@free.fr

Program copyright 2013 Nemanja Hirsl nemhirsl@gmail.com

Contributors: Robin Doer, &Albert.Astals.Cid;, Michal Golunski (Polish translation).

Documentation copyright 2002-2008 Gaël de Chalendar kleag@free.fr

&underFDL;

&underGPL;

## Installation

### Configuration

The Settings Configure &ksirk;... menu item opens a dialog that allows you to:

Preferences dialog
Preferences dialog

- enable or disable the sounds ;

- set the speed of the sprites (from slow to immediate) ;

- enable or disable the contextual helps displayed in popups ;

- show or hide the number of armies on each country. The following snapshot shows the map when the number of armies are displayed.

  Display of the number of armies
  Display of the number of armies

&documentation.index;