I am in need of a Linux programmer to develop a full implementation of "Hnefatafl" (also known as "King's Table" and "The Viking Game"), based on reconstructions by various historical societies. The program should be capable of:
(a) allowing two non-networked players to play a full game, according to the rules, with all captures taken account of.
(b) allowing a human to play against the computer, either using a custom game-solving engine -or- an existing Open Source game-solving engine. In either case, the computer should be capable of reasonably skilled play.
(c) allowing either a human OR the computer to play over the network. There is an existing standard protocol for networked boardgames and this should be used.
The game's rules are deceptively simple to describe. The board can take one of five possible sizes - 7x7, 9x9, 11x11, 13x13 or 19x19. The central square and the four corner squares are reserved solely for the white King - no other piece may land on them. These are usually referred to as King Squares. Whether any piece other than the King can even cross over them should be selectable at the start.
Other than White's King, there is only one other type of piece, that being a pawn. Unlike the pawns in chess, these can move horizontally or vertically any distance, with the restrictions given in the prior paragraph and the restriction that pawns cannot jump over other pawns.
A pawn is captured if an opposing piece (King or pawn) is moved such that it is horizontally or vertically adjacent to the pawn to be captured AND another opposing piece is directly opposite and adjacent. A piece cannot be passively captured by moving between two pieces, nor is it captured if the two opposing pieces do NOT lie along the same line or they are not directly adjacent to the piece to be captured. (It must optionally be possible for either side to capture using a King Square instead of the stationary opposing piece.)
White starts with the King in the center and a given number of pawns. These pawns are laid out in a way that has four degrees of rotational symmetry. Black has no king and starts with twice as many pawns as White. The exact layout should be loaded from a configuration file, as there are many alternatives.
In all cases, Black's victory conditions are to have a black pawn on all four sides of White's King. The White King cannot be captured by means of the King Square. Nor can it be captured along any edge.
White's victory condition should be selected at the start and should involve moving the King to EITHER the center of one of the edges OR to the corners of the board.
Black always moves first.
In terms of the game implementation, the game should be written with the target of running under KDE 4 (when a user is present). It should be possible to run without a GUI when in computer-vs-network mode. The game's coding should follow KDE programming conventions and norms. The code should also be written to at least GCC 4.1 (though if you code it to a pre-release of 4.2, that would be better). If you want to specify other pre-requisites, that is fine but they need to be (a) Open Source, and (b) not an existing version of this game.
In terms of graphics, I am looking for a 3D rendered gameboard and playing pieces. I'm not interested in whether there are shadows or not (or even if they are logically correct if present). Nor am I interested in "perfect" photorealism. Rather, the gameboard needs to both look interesting and be playable. Also along these lines, the two sides must be easily distinguished, along with the White King, and the five King Squares must be clearly marked.
Playability also applies to game performance. It doesn't matter how good the game is otherwise, if nobody can stand playing it on anything less than a Cray supercomputer. When it comes to the computer playing, the AI algorithm must be good enough to match or beat a good player, without sacrificing the playability aspect. How this is done (eg: multithreading, CPU affinity, real-time scheduling) is up to the coder.
Feel free to post any further questions on game mechanics or implementation requirements.