				N_O_m_e_g_a 

			(a weak chess program by Chris Tatham)

-------------------------------------------------------------------------------

///// What is included? /////

N_O_m_e_g_a_RM 	- basic information
N_O_m_e_g_a.exe - executable (dated 18 November 2011)
N_O_m_e_g_a.bas	- source code (dated 18 November 2011)

--------------------------------------------------------------------------------

///// Overview /////

As a longstanding computer chess enthusiast I have always admired those who have 
been able to write and release their own programs irrespective of how strong or 
weak they are. It has been a bonus that so many have been made available for us 
to enjoy for free! :)

N_o_m_e_g_a is the culmination of a long held ambition of mine, to write and release 
my own chess program. As I am very much a non-technical hobbyist with no 
previous relevant experience, it has taken many frutstrating hours over a long 
period of time. However, as well as being very challenging it has been an 
immensely rewarding and also highly addictive experience! However, it is time to
do other things and N_O_m_e_g_a is the last release in the Numpty chess series.

N_O_m_e_g_a is not the best coded or most efficient engine available by any means. 
However, my primary objective in releasing N_O_m_e_g_a is to make my experiences and 
resources such as they are, available to other novice coders who are keen to 
start writing their own programs. With this in mind, my source code which I have 
documented as clearly as I can, is also freely available with this release.

N_O_m_e_g_a was written and compiled in FreeBasic, using FBIDE which you can find at
the following site:

http://www.freebasic.net/index.php/about 


If you enjoy using N_O_m_e_g_a then please drop me a message via twitter 
'numpty_chess' and make my day! :-) 

--------------------------------------------------------------------------------

///// Strength /////

Strength of play wasn't the main focus in developing N_O_m_e_g_a. Against 
carbon based opponents I believe N_O_m_e_g_a plays at around 1500 - 1800 elo level, 
perhaps a little more at faster time controls and so may be a nice opponent for 
average club players. Although still relatively weak it should play 'reasonable' 
looking moves without too many gross blunders. 

Earlier versions of Numpty chess will remain available as I have had feedback to
say these have been good opponents for novice players and children learning the 
game.

 -------------------------------------------------------------------------------

///// Installation & use /////

N_O_m_e_g_a is winboard compatible engine and can be used within any of the common 
commercial or freely available graphical user interfaces (gui). If you are 
reading this you probably know what to do to install the engine in the desired 
gui, but if you need further help or the software itself then please visit the 
following:

Free GUI:

Winboard:
http://www.open-aurec.com/wbforum/viewtopic.php?t=50387

Arena:
www.playwitharena.com


Commerical GUI:

Chessmaster
www.chessmaster.com

Chessbase
www.chessbase.com


Console mode
You can use N_O_m_e_g_a in 'console' mode, by simply by double clicking 
the N_O_m_e_g_a.exe file. However, the engine is not really designed for use in 
console mode. Its main use is for testing move generation. As a result not all
features are supported. In particular games can only be played with a fixed 
search depth as time controls are not supported in console mode.

Enter 'help' to get a full list of the available commands/options. These are
fairly basic and obvious so are not explained in detail here. 

-------------------------------------------------------------------------------

///// Acknowledgements & thanks /////

I would like to thank the following people for their help in making my dream a 
reality!  N_O_m_e_g_a would not exist without their kind input. 

A *big* thank you to the following:….

Bill Rogers:
- for his encouragement and support including the exchange of source code
during development of the initial version of N_O_m_e_g_a. Specifically, also for the 
idea for multiple use of an ‘incheck routine’ and permission to use and adapt 
his opening book related code

Tom McBurney:
– for permission to use his basic Winboard interface code (it was a real thrill
to see my engine play its first game in Winboard!). I have adapted it for use in
N_O_m_e_g_a and added additional features/options so any compatibility problems or 
errors are entirely my fault.

John Merlino:
- for his extensive help in enabling me to resolve a longstanding and frustrating
bug that affected compatibility in the Chessmaster gui

Lars Hallerstrom:
- for his willingness to test many development versions and his patience in
putting up with the many problems/limitations encountered! 

Engine testers:
- for their unflagging support and encouragement of my efforts. Thanks in particular
  to:
  - Leo Dijksman for the superb WBEC
  - Olivier Deville for his excellent Chesswar 
  - Sergio Martinez; Claude Dubois; Ciro Vignotto, Guenther Simon


..... all those who have used (and hopefully enjoyed) earlier versions of Numpty 
chess and the many people who have offered support, given feedback or informed me 
of bugs - thanks! :-) 


I have used the following resources extensively in learning how to program a chess
engine and can recommend them highly:

Levy D – Chess Computer Handbook (Batsford, 1984)
- I used this book for the basic ideas of how a chess program works.

Levy D – How Computers Play Chess (Batsford, 1976)
- Earlier engine versions used the swap-off algorithm described in this book.

Levy D - Chess Computer Compendium (Batsford 1988)
- A magnificent compiliation of papers relating to all aspects of computer
  chess from the early days of chess programming

Chess Programming wiki (http://chessprogramming.wikispaces.com/)
- An invaluable reference source. N_O_m_e_g_a's piece square tables are developed
  from and based on the ideas from this site    

JAMCA  (http://eli.thegreenplace.net/programs-and-code/jamca/) 
- an excellent and readable introduction of the basics of how a program plays 
  chess – thanks to Eli Bendersky

------------------------------------------------------------------------------

///// Known and other issues /////

My objective has only ever been to write a rock solid reliable chess program so 
if you find any bugs or encounter any unexpected behaviour please let me know.

The only GUI compatibility issues or problems with N_O_m_e_g_a that I am aware 
of are:

Arena users:
When setting up a position manually for N_O_m_e_g_a to play (ie using setboard)
please re-start N_O_m_e_g_a before starting the engine thinking.

Where preference is given for book use I would appreciate it if N_O_m_e_g_a could
use my own neutral engine v engine book (libra8.abk). N_O_m_e_g_a was extensively 
tested using this book during the development phase.

Chessbase users:
N_O_m_e_g_a will not play consecutive games without being restarted manually.


If you need support or help with the engine, you can tweet numpty_chess and I
will do my best to help.

-------------------------------------------------------------------------------

///// Small print ////

Please feel free to edit, enhance or otherwise use N_O_m_e_g_a's code as you wish. 
There is plenty of scope for improvement! Any errors or bugs in the existing 
code are entirely my responsibility.

This program and related files are free to use and distribute subject to the
conditions below.  

1) If you wish to use specific code in any program that is publicly released,
   please first seek permission from and then credit the relevant author's work.

2) This read me file and the relevant source code must accompany any secondary
   distribution of the N_O_m_e_g_a executable.

There is no warranty given or implied and the N_O_m_e_g_a program and related files
are used at your own risk.

Chris Tatham
November 2011
