Difference between revisions of "Winglet"

From Chessprogramming wiki
Jump to: navigation, search
(Created page with "'''Home * Engines * Winglet''' FILE:Winglet with attached tufts of an KC-135A.jpg|border|right|thumb| Winglet <ref>Winglet with attached [https://en.wikip...")
 
 
(One intermediate revision by the same user not shown)
Line 69: Line 69:
 
==Chess Engine==
 
==Chess Engine==
 
* [http://kirr.homeunix.org/chess/engines/Jim%20Ablett/WINGLET/ Index of /chess/engines/Jim Ablett/WINGLET] by [[Jim Ablett]], hosted by [[Kirill Kryukov]]
 
* [http://kirr.homeunix.org/chess/engines/Jim%20Ablett/WINGLET/ Index of /chess/engines/Jim Ablett/WINGLET] by [[Jim Ablett]], hosted by [[Kirill Kryukov]]
* [https://github.com/PortugalTheMan/winglet/tree/master PortugalTheMan/winglet · GitHub] <ref>[http://schach.chess.com/forum/view/general/winglet-chess-engine-revived Winglet Chess Engine; Revived!] by [http://www.chess.com/members/view/PortugalTheMan PortugalTheMan], [https://en.wikipedia.org/wiki/Chess.com Chess.com], Septermber 24, 2014</ref>
 
* [http://aghaznawi.comuf.com/computer%20chess/winglet/ winglet, writing a chess program in 99 steps] by [[Stef Luijten]], hosted by [[Abdullah Al-Ghaznawi]] <ref>copy was taken in ‎March ‎07, ‎2013, images and archives included</ref>
 
 
==Tutorial Archive==
 
==Tutorial Archive==
 
{{Winglet to Include}}
 
{{Winglet to Include}}
Line 77: Line 75:
 
* [http://theflyingengineer.com/flightdeck/winglets-and-sharklets/ Winglets and Sharklets | The Flying Engineer]
 
* [http://theflyingengineer.com/flightdeck/winglets-and-sharklets/ Winglets and Sharklets | The Flying Engineer]
 
* [http://www.b737.org.uk/winglets.htm Boeing 737 Winglets]
 
* [http://www.b737.org.uk/winglets.htm Boeing 737 Winglets]
* [http://www.airbus.com/innovation/proven-concepts/in-design/winglets/ Winglets | Airbus, a leading aircraft manufacturer]
 
  
 
=References=  
 
=References=  
Line 85: Line 82:
 
[[Category:GPL]]
 
[[Category:GPL]]
 
[[Category:WinBoard]]
 
[[Category:WinBoard]]
 +
[[Category:Didactic]]

Latest revision as of 17:15, 31 August 2020

Home * Engines * Winglet

Winglet [1]

Winglet,
a didactic open source chess engine by Stef Luijten, written in C++ and licensed under the GNU General Public License. The development of Winglet was documented on the website tutorial Winglet, Writing a Chess Program in 99 Steps, started in 2011, now hosted by the Wayback Machine [2]. Winglet is intended as bitboard version of TSCP with WinBoard support [3], and is loosely derived from Wing, Stef Luijten's former private engine [4], in the meantime also open source [5].

Description

Board Representation

Winglet applies a mixture of Kindergarten Bitboards and Magic Bitboards [6] to determine sliding piece attacks with 32 KiB precalculated lookup tables[64][64] each on ranks, files, diagonals and anti-diagonals, indexed by square and hashed line occupancy - the inner six bits multiplied by a magic factor and shifted right by the strange looking 57, while 58 is more natural to ensure a six bit index range, using a constant factor (b-File) for all squares of a diagonal or anti-diagonal, ...

U64 arrDiagonalAttacks[64][64]] /* requires initialization */

U64 diagonalKindergartenAttacks(U64 occ, enumSquare sq) {
   occ = (diagonalMaskEx[sq] & occ) * C64(0x0202020202020202) >> 58;
   return arrDiagonalAttacks[sq][occ];
}

... but "magic" Winglet factors are designed such that the most significant bit of the 64-bit product will always be clear, that is positive if interpreted as signed 64-bit integer. It seems, Winglet's occupied index calculations emulate Wing's rotated bitboard indices for same attack table layout:

/*                 Winglet's occupancy state             ==            Wing's occupancy state */
(occ & MG_DIAGA8H1MASK[sq]) * MG_DIAGA8H1MAGIC[sq] >> 57 == (occ045 >> DIAGA8H1_ATTACK_SHIFT[sq]) & 63
(occ & MG_DIAGA1H8MASK[sq]) * MG_DIAGA1H8MAGIC[sq] >> 57 == (occ315 >> DIAGA1H8_ATTACK_SHIFT[sq]) & 63
(occ & MG_FILEMASK[sq])     * MG_FILEMAGIC[sq])    >> 57 == (occ090 >> FILE_ATTACK_SHIFT[sq])     & 63

Search

Evaluation

Passed Pawn
Backward Pawn
Doubled Pawn
Isolated Pawn
Pawn Shield
King Tropism

See also

Forum Posts

External Links

Chess Engine

Tutorial Archive

01 Introduction - 05 First steps with Visual Studio C++
06 Reading user commands
07 Internal representation of the chess board - bitboards » Board Representation, Bitboards
08 Displaying the position » Chess Position
09 Reading a FEN string » Forsyth-Edwards Notation
10 Setting up the board manually
11 The move generator » Move Generation
12 Making the moves » Make Move
13 The evaluation function » Evaluation
14 Search » Search, Minimax, Alpha-Beta, PVS
15 Mate and draw detection » Checkmate, Stalemate
16 Repetition detection - Zobrist keys » Repetitions, Zobrist Keys
17 Iterative deepening and move ordering » Iterative Deepening, Move Ordering
18 Quiescence search and SEE » Quiescence Search, MVV-LVA, SEE
19 Null move pruning » Null Move Pruning
20 Time control and running test suites » Time Management
21 Connecting to Winboard » CECP, WinBoard

Misc

References

Up one Level