Started in 1980 in BASIC with DIM B(64) creating an array for a chess board and did not know how to proceed.
Numerous ideas taken from books, CCC forum, Bruce Moreland's website and CPW wiki.
Some ideas might be inspired be reading chess and AI literature.
Inspirations from: Fruit, Stockfish, Umko. Details in source code comments.
I did not record where I picked up ideas. I never picked up (copied) any code.
Derived from Ippolit series, but in the meantime I have changed many parts and added other code and original ideas.
I document where stuff came from in the program comments rather than the readme. I have most of them but I won't swear that I have them all. Bruja is source on request and Cupcake is open source so anyone interested in originality can check for themselves.
The inspiration comes from several books. AI books: Artificial Intelligence by Patrick Henry Winston; The Handbook of Artificial Intelligence by Barr, Figenbaum & Cohen; The Art of Computer Programming by Knuth; various ICGA publications, and more.
Numerous conversations with others in the field
including Bob Hyatt, Brian Richardson, James Swafford,
Vincent Diepeveen, Gian-Carlo Pascutto, Shay Bushinsky,
Amir Ban, GM Boris Alterman, Andrew Williams, James
Robertson, Rudolf Huber, Stefan Meyer-Kahlen, GM
Sergey Kudrin and many more.
I find it difficult to extract concepts from just looking at code, which is why I hardly ever do that. In the meantime, I see nothing wrong with allowing others to reuse open source game playing code in tournaments as long as
1. sufficient differentiation is demonstrated, and
2. equal attribution is given to the original authors (even if modified). Additional permission would not be needed in case of GPL or BSD-style license. If such a program wins, then the prize and recognition should be shared with all contributors.
Source code provided with my program under GPL. Many ideas from many places as described in readme.txt and in the individual source code files. Many ideas come from the old rgcc, ccc, chess programming wiki, etc discussions.... some of these (usually specific ideas) are documented in the code, for others (usually common things, I think) the specific origin of the idea to me is lost in time (development on-and-off over 15 years).
The search is initial inspired from some ideas from
Stockfish. Many ideas from CCC forum and Chessprogramming Wiki. At code level absolutely new as it's written in Haskell.
Several ideas collected from the ICGA journal, and a couple from conversations with other programmers at WCCC events.
My engine is in VB.net.I started from scratch. Most of the algorithms were from Bruce Moreland (alpha beta,
quiescence,...). It take me years to tune the search in order to have a not too weak engine, although it is not very strong. LMR and NullMove seems to work, as well as extensions in case of checks in the main search, and checks in the first plies of quiescence. I have not TT, but some kinds of History Tables which are depth
dependent. I tend to try original ideas but they usually
don't work. I do not record very well the improvements between versions.
Derived from Fruit 2.1 - but I think this is public knowledge.
Written 100% from scratch, not using any public available code. Gaviota EG probing code was included temporarily to verify the internal node recognizer.
Monarch is 100% original at the code level. It really doesn't have anything special in it. It's just a basic vanilla Alpha Beta with all the normal trimmings (killers, null move etc).
Many ideas obviously inspired by the chess literature, but all code is original (except Nalimov probing code which is used with permission of Eugene Nalimov and Andrew Kadatch).
My inspiration and knowledge came from Talkchess
discussions as well as ChessWiki and open source chess programs: crafty, stockfish, gnuchess, etc. I document all the sources of inspiration (no copied code) in the readme accompanying my engine.
Many ideas taken from Stockfish, Sloopy, Robbo and Gull. The code is completely written by myself with the exception of MT (random number generator), Magic Move Generator (By Praddu), some optimized bitCount and bitScan code snipets.
Frenzee is a rotated bitboard engine. Every single line of code is handwritten by me there is no copy/paste from any other source. I feel it is my design, my ideas, my engine. However, I have over the years looked at other programs, like Crafty, Beowulf, Phalanx and other such oldies.
If one were to look at the engine with the same scrutiny as was the case for Rybka then similarities would no doubt be detected. The move generator has something in common with Crafty, since it is a rotated incremental bitboard
Many of the eval terms are also public knowledge. I estimate that the original ideas in Frenzee probably amount to 100-200 points. The rest of its strength comes from implementing and tuning publicly known ideas or variations thereof such as PVS, nullmove, LMR, check extension, hashing and so forth.
Jabba is written in C# - I've used many ideas from many
other OS programs, as well as the CPW and the Talkchess forum extensively. I use them in thesame way I use for example www.cplusplus.com/reference/clibrary.
Heaviest influence came from Bruce Moreland's programming pages, and the comments in the crafty code documentation.
My motivation is not engine strength - I derive most pleasure in writing engines from scratch that play a legal game with a few evaluation terms. See recent talkchess posts about C# performance!
Having a 2200 engine on FICS playing 1000's of games
is rewarding. My other reason is meeting people involved - such as at the CPT tournament hosted by Richard Pijl, or vis the online tournaments.
On my home computer I have many self-written engines in pure C, C++, Java, C# and VB. This is why I release with source. Since I began in 2004, I've written many engine incarnations using Rotated BB, 0x88, Mailbox, Magic BB.
its original from starting on, first using rotated bitboards,
and later changed that with pradu's Magic Bitboards. Of course some ideas are inspired and took from other open sources too. own hard worked over many years ago, never copied any lines from other. but only the code of nalimov for tablebase access is included to the source with permission.
Written from scratch and has open source. A few instances of code inspired from other people's work (in particular SEE logic), but in those cases has mentions of the originators.
Portfish is the .Net port of Stockfish, so it is means to be an exact replica of Stockfish on the source level. Technically it employs solutions which are more natural or has to be formulated differently under .Net (object broker concept).
WhiskySoda is my original engine, it is heavily inspired by
Stockfish/Portfish and GarboChess. Bitboard operations,
FEN parsing, randoms, polyglot book handling are taken
over from Portfish, search inspired by Garbo. It currently
has a very basic eval, I will definitely use a lot of
inspirations there from literature and other engines if there will be time to continue.
I looked at source code TSCP, ExChess, and Crafty before starting from scratch. Only other code seen again since then are code snippets in fora.
My new engine based on magic bitboards and a novel move dictionary approach. It's 100% unique.
Most ideas inside, if not my own, were taken out of books,
inspired by discussions on several forums or the result of
conversations via eMail or directly at several computer
chess tournaments. There never was any code copying,
except the Nalimov access code and the code that is
responsible to capture commands while thinking (taken
from ExChess, Dan might remember the conversation
long ago - afaik he has taken that from Bob who got this
from Tim Mann, at least that is the info I have in mind)
The book was created by Colin Frayn (Beowulf), I have just modified and extended. I had his permission.
Hannibal is original at the source code level. Many of the
ideas are adapted from various open source engines and
the knowledge repositories like chess programming wiki,
and forums like CCC, and the Winboard forum. The only
non-original code in Hannibal is the set of hash keys
necessary for Polyglot book support.
Secondchess is derived from Pam Nguyen's firstchess. Its goal is to add a couple of features missing in firstchess (castle, ep) and some simple enhance in evaluation and search, and keep the original idea of firstchess of being a pedagogical tool for beginners.
My venture into chessprogramming started around the year 2000 and has very much been from the ground up/never left it. Starting with a 1, 2.. 3 and eventually 4 ply
nested loops pseudo legal mover. ..If you put it in check, it
might put you in check..too! And trade kings.
To Stan's chess. A buggy but working alpha/beta(ish)
program. To Neurosis. A slow but semi serious effort with
which atleast some points were won at the lower ends of
the rankings at OTB tournaments halfway the 2000-2010
decade. Entirely weak, strange and original but..don't tell
any of the strong proggie people..way more fun.
Initially inspired by TSCP, but eventually completely rewritten implementing my own design and ideas. Many ideas taken from Talkchess, Chesswiki and various open-source engines.
First taught myself to program in 80386 assembler and
wrote a completely table driven PERFT called Godzilla. Then made a chess program in C called Carnivor, while
teaching myself to program in C. Then decided to go
BITBOARD and wrote RomiChess completely from my own head except for a couple of utility routines I got from Crafty and basic Alpha-Beta from books. I believe that it was Charles Roberson that said, RomiChess was the most original chess program that he had seen in a very long time.
The first version of Nightmare was written in assembler for the 8080 processor during the fall of 1977 and the spring of 1978. It was mainly inspired by the book 'Chess Skill in Man and Machine' by P.W. Frey and by the book 'The Heuristic Programming Approach' by J.R. Slagle.
The current v7.8x is a modern bitboard oriented engine, it is entirely written from scratch although the magic code is derived from Pradu Kannan's work and the Nalimov tablebasecode is used with permission from Eugene Nalimov and Andrew Kadatch.
Nightmare is Windows only, it has an incomplete UCI
implementation with most things hard coded, this is the main reason why I never cared to release it. I hope to address this weakness in the upcoming version 8.0 which is partly finished.
Rodent is a GPL program, started from codebase of
Sungorus by Pablo Vazquez. It uses ideas from Fruit (eval, via Toga Log User Manual), Stockfish (some search parameters, most notably LMR reduction size) DiscoCheck, (hanging pieces eval), Crafty (material imbalance table) and a couple of others, mentioned in comments.
What I consider original is some work on evaluation
function (pawn chains etc.), but it has been inspired by CCC posts of Lyudmil Tsvetkov and Carl Langan.
My goal is *not* to create an original engine to enter
competitions, but to give end users the opportunity to change engine's playing style and strength.
My C++ program Symbolic is entirely original other than
parts derived from my earlier original programs. While the Symbolic source is private, I have released sections of it for others to use. I also have released the full source of my ANSI C tablebase generator, my ANSI C SANKit, my Pascal program CookieCat, my C++ Audrino program Myopic and my Common Lisp CIL Chess In Lisp program. These are all original works with no source copied from any other author.
I give credit for some ideas to Slate and Atkin for their on their Chess 4.x program and to Wilkins for his Paradise program.
I've other chess engine: Drago, Raffaela and Freccia, all original works.
Many ideas find in chessprogramming and forums.
This engine is completely original from scratch in the Rust Programming Language, but it uses many well-known concepts.
One idea though, is taken straight from VICE, by Bluefever Software: updating castling permissions in make_move by using a pre-filled array that substracts permissions on moving the king or one of the rooks..
This engine is based on VICE, I started making modifications to the 1.0 version, added magic bitboard and many search and eval features, still had the same name but it was private, that was ~2013, then in 2016 I started with the code base from VICE 1.0 but with just plain alphabeta(no null move, no tt, etc..) and PSQT from CPW for the eval, magic bitboard, still there are many thing from VICE in the code, sure there will be some refactoring to get better/fast code
Inspired by -- but original at code level -- Stockfish, Rubi, Xiphos, Ethereal, Texel, Winter, Topple, Demolito, Defenchess, Amoeba, Arasan, and probably many others.
I do this for fun and learning about chess programming.
Originally written pre-internet in early 90s. No other source has been consulted. Mostly written based on the Computer Chess Compendium book and the Donninger ICCA journal article on PVS.
Inspired by -- but original at code level -- the many open-source giants in chess programming, Ethereal aims to refine existing ideas into a well documented educational tool.
If an idea in Ethereal is too similar to an idea in another engine, I will always aim to update and provide full acknowledgment of the origins.
Orion is a 100% original work with one notable exception : v0.7 uses the Syzygy support library provided by Jon Dart (https://github.com/jdart1/Fathom).
All implemented concepts are well-known and not specific to any engines. Orion has also for particularity to use a legal move generator, which does not seem to be widely the case.
Note that StockFish's evaluation outputs are used since Orion v0.4 as targets to tune the engine evaluation parameters.
A big thank you to Jonatan Pettersson (http://mediocrechess.blogspot.com/) and Thomas Petzke (http://macechess.blogspot.com/), authors of Mediocre and iCE, for having shared their passion and thoughts on their respective blogs !
Comments: Weiss is written using VICE as a base, and otherwise inspired mainly by Ethereal and Stockfish.
Originally a fork, there is at this point hardly any VICE code left.
Inspired by VICE I'm now developing my own engine covered in YouTube series.
I pick up ideas from the chess programming wiki, original articles, and from talkchess discussion. I then do my own implementation in the D language. I probably use too many ideas from other people to mention them all, so I mention none.
Written from scratch, original at the code level, with the exception of the fathom library. First inspiration was Van den Herik's thesis in the 80's on computer chess. Concrete inspiration from Stockfish, Maverick, Xiphos, Ethereal, Crafty and others, the Rebel website, CSVN and CCRL/other rating sites.
I wrote Raven with a lot of help from the ##chessprogramming IRC channel on freenode, the Chess Programming Wiki, and studying how other engines implented ideas. Some parts of the source (e.g king safety table, endgames with 5 or fewer pieces) were provided by other engine authors and are used with their express permission. I also use a library for magic move generation which is fully credited to its author according to the license in the source code.
FabChess - while written from scratch - has been inspired very much by all the great ideas and information contained in the chess programming wiki and other open source engines such as Ethereal, Asymptote and Weiss.
Started in November 2019 from scratch, I implemented Stockfish's bitboard representation three months later. Search techniques inspired by Stockfish, Fruit and Strelka.
Isa si derived from Pham Nguyen's FirstChess. I've learned and added many things from Cpw , Bruce, pages , and with the help from the Ccc forum.
Sapeli is 100% original. Even magics are generated not copied. It is written for speed. I have different code for White/Black for branch prediction reasons. That obviously has affected the overall design of the program. The main focus was making Sapeli a nice little Linux/Unix program that works without much fuss. But at least it's unique.
This has always been the way I have worked on CC.
Seer is written completely from scratch. The numerous search heuristics implemented in Seer originate, primarily, from the chess programming wiki. A few other ideas are the result of experimentation with variants of search heuristics found in several top engines.
Inspired by many open source engines but original at code level.
Alpha zero abd lc0 methods, but with a hybrid search and no bits of code is derived off of it.
Allie is original except for including Ankan's GPU NN backend which originated in the Lc0 project, Fathom for TB, and magic bitboards from Andrew Grant/Ethereal. She was heavily inspired by the A0, Lc0, and Ethereal chess engines.
Started completely from scratch. In the history of development I got inspired by
- ideas from Vice video tutorials
- implementations of several ideas in Olithink, Laser, Ethereal, Stockfish
- following the patches tested at Fishtest and OpenBench
Parts of NNUE evaluation code implementation (the parts using SIMD instructions) were taken by Cfish.
NNUE nets were (so far) trained using a modified Nodchip/SF trainer binary running on training data generated with RubiChess.
Every engines I took code snippets from is licensed under GPLv3 as RubiChess is.
Original? Inspired by? I can't tell really, I read the Chess Programming Wiki, used many ideas from it, I have watched VICE videos, and looked into the source code of many open source projects. I am sure I have taken many ideas from many places.
And I can guarantee that I am too bad a chess programmer to come up with any novelty on my own!