Older Version Newer Version

GerdIsenberg GerdIsenberg Mar 8, 2016

**[[Home]] * [[Engines]] * Vice**
|| [[image:181px-Vices_Speculum_Virginum_W72_25v.jpg link="http://commons.wikimedia.org/wiki/File:Vices_Speculum_Virginum_W72_25v.jpg"]] ||~ || **Vice**, (Video Instructional Chess Engine)
a didactic [[Open Source Engines|open source chess engine]] by [[BlueFeverSoft]], written in [[C]], and introduced in a series of 87 + 8 [[http://en.wikipedia.org/wiki/YouTube|YouTube]] videos from May 2013 until January 2014 <ref> [[http://www.youtube.com/watch?v=bGAfaepBco4&feature=share&list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg|Programming A Chess Engine in C]], [[http://en.wikipedia.org/wiki/YouTube|YouTube]] Videos by [[BlueFeverSoft]]</ref>.

Vice [[Board Representation|represents the board]] with a [[10x12 Board|120 square array]] and additionally has some [[Bitboards|bitboards]] for [[Pawn|pawn]] stuff. It applies an [[Alpha-Beta|alpha-beta]] search with [[Transposition Table|transposition table]], [[Null Move Pruning|null move pruning]] and [[Quiescence Search|quiescence]] inside an [[Iterative Deepening|iterative deepening framework]]. It is compatible with the [[UCI]] and the [[Chess Engine Communication Protocol]], and since version 1.1, supports the [[PolyGlot]] [[Opening Book|opening book]] format <ref>[[http://bluefever.net/Downloads/ViceReadMe.html|Vice ReadMe File and Download]]</ref>. ||
|| Tree of Vices <ref>"Tree of Vices" from [[http://en.wikipedia.org/wiki/Speculum_Virginum|Speculum Virginum]], [[http://en.wikipedia.org/wiki/Walters_Art_Museum|Walters Art Museum]],  [[http://www.thedigitalwalters.org/Data/WaltersManuscripts/html/W72/description.html|Ms. W.72, fol. 25v]], Early [[http://en.wikipedia.org/wiki/13th_century|13th century]] manuscript from the [[http://en.wikipedia.org/wiki/Cistercians|Cistercian]] [[http://en.wikipedia.org/wiki/Himmerod_Abbey|abbey of Himmerode]], [[http://commons.wikimedia.org/wiki/File:Vices_Speculum_Virginum_W72_25v.jpg|Vices Speculum Virginum W72 25v.jpg - Wikimedia Commons]], [[http://en.wikipedia.org/wiki/Tree_of_virtues_and_tree_of_vices|Tree of virtues and tree of vices from Wikipedia]]</ref> ||~ ||^ ||
[[toc]]
=See also=
* [[Various Classifications#Acronym|Acronym]]
* [[Various Classifications#Demonology|Demonology]]

=Forum Posts=
* [[http://www.open-chess.org/viewtopic.php?f=5&t=2383|Vice 1.0]] by [[BlueFeverSoft]], [[Computer Chess Forums|OpenChess Forum]], July 30, 2013
* [[http://www.talkchess.com/forum/viewtopic.php?t=49043|Vice 1.0]] by [[Adam Hair]], [[CCC]], August 22, 2013

=External Links=
==Chess Engine==
* [[http://bluefever.net/Downloads/ViceReadMe.html|Vice ReadMe File and Download]]
* [[http://www.computerchess.org.uk/ccrl/404/cgi/engine_details.cgi?print=Details&each_game=1&eng=Vice%201.0%2064-bit|Vice 1.0 64-bit]] in [[CCRL|CCRL 40/4]]
==Videos==
* [[http://www.youtube.com/watch?v=bGAfaepBco4&feature=share&list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg|Programming A Chess Engine in C]], [[http://en.wikipedia.org/wiki/YouTube|YouTube]] Videos by [[BlueFeverSoft]]
# [[http://www.youtube.com/watch?v=bGAfaepBco4|Resources and Community]]
# [[http://www.youtube.com/watch?v=VuJL4qhpp-8|Board Representation]] » [[Board Representation]]
# [[http://www.youtube.com/watch?v=x9sPmLt-EBM|First Definitions]]
# [[http://www.youtube.com/watch?v=3uBCUF_qHcg|Board Structure]]
# [[http://www.youtube.com/watch?v=1q0NlSdGOjI|Undo-Move Structure]] » [[Unmake Move]]
# [[http://www.youtube.com/watch?v=pqYFUnUn0qw|Array[120] to Array[64] Indexing for Pawns]] » [[10x12 Board]], [[8x8 Board]]
# [[http://www.youtube.com/watch?v=Bi61lMwhksw|Piece Lists and ASSERT!]] » [[Piece-Lists]]
# [[http://www.youtube.com/watch?v=JsjSChsu2L0|Bitboards]] » [[Bitboards]]
# [[http://www.youtube.com/watch?v=ITVB7JSaI3w|Bitboards Pop and Count]] » [[BitScan]], [[Population Count]]
# [[http://www.youtube.com/watch?v=pa0W1mz_wa4|Set and Clear bits]] » [[General Setwise Operations]]
# [[http://www.youtube.com/watch?v=uw9jsInf4jA|Position Key (Hashkey) #1]] » [[Zobrist Hashing]]
# [[http://www.youtube.com/watch?v=WqVwQBXLwE0|Position Key (Hashkey) #2]]
# [[http://www.youtube.com/watch?v=vF_Td1nABYw|Position Setup - Reset Board]]
# [[http://www.youtube.com/watch?v=4vCiIf73FQM|Position Setup - FEN Notation ]] » [[Forsyth-Edwards Notation]]
# [[http://www.youtube.com/watch?v=usUJFkGyqM4|Parsing An FEN (1)]]
# [[http://www.youtube.com/watch?v=GmCxU4elNcA|Parsing An FEN (2)]]
# [[http://www.youtube.com/watch?v=-wrSMzYGlGs|Printing the board to screen]]
# [[http://www.youtube.com/watch?v=clLaVOnvUvA|Piece Lists]] » [[Piece-Lists]]
# [[http://www.youtube.com/watch?v=CRaIcMGbkpE|Rank and File Arrays]]
# [[http://www.youtube.com/watch?v=O5YtKzh4siE|Checkboard]]
# [[http://www.youtube.com/watch?v=PGPdT9zz-xg|Next steps]]
# [[http://www.youtube.com/watch?v=8mHFATWbeik|Square Attacked (1)]]
# [[http://www.youtube.com/watch?v=VdH0ObqK3CA|Square Attacked (2)]]
# [[http://www.youtube.com/watch?v=KQcArvyrbIo|Move Format & Bits (1)]] » [[Encoding Moves]]
# [[http://www.youtube.com/watch?v=N6yImiyzWpo|Move Format & Bits (2)]]
# [[http://www.youtube.com/watch?v=n2ZgdkW7uls|Move Format & Bits (3)]]
# [[http://www.youtube.com/watch?v=siLoAPTOaWE|Printmove and Printsquare]]
# [[http://www.youtube.com/watch?v=uBwwC5uWJKo|Move Generation #1]] » [[Move Generation]]
# [[http://www.youtube.com/watch?v=wD9CNtvLCrI|Move Generation #2 - Validations]]
# [[http://www.youtube.com/watch?v=1TCKuEoHvcs|Move Generation #3 - White Pawns]]
# [[http://www.youtube.com/watch?v=8LUkqaodUFA|Move Generation #4 - Black Pawns]]
# [[http://www.youtube.com/watch?v=MFMk5SiXvHQ|Move Generation #5 - Piece Index Setup]]
# [[http://www.youtube.com/watch?v=6WovWHeRKFA|Move Generation #6 - Non Slider Pieces]]
# [[http://www.youtube.com/watch?v=dkHlnSP3u3w|Move Generation #7 - Slider Pieces]]
# [[http://www.youtube.com/watch?v=srAcgIKONO4|Move Generation #8 - Castling]] » [[Castling]]
# [[http://www.youtube.com/watch?v=kVXi615rFxE|Move Generation #9 - Final Movelist!]] » [[Move List]]
# [[http://www.youtube.com/watch?v=ZWcjcn4KVTk|Writing MakeMove - Introduction]] » [[Make Move]]
# [[http://www.youtube.com/watch?v=9Rfx1WHkJ3o|Writing MakeMove #1]]
# [[http://www.youtube.com/watch?v=F_L2AhqB4V4|Writing MakeMove #2 - ClearPiece()]]
# [[http://www.youtube.com/watch?v=ai_193NC3zU|Writing MakeMove #3 - Add/MovePiece()]]
# [[http://www.youtube.com/watch?v=qnHQJAsJFvk|Writing MakeMove #4 - MakeMove()]]
# [[http://www.youtube.com/watch?v=aKaU0WHVrJI|Writing MakeMove #5 - TakeMove()]]
# [[http://www.youtube.com/watch?v=ioaPTMKU3zg|Introduction to Perft testing]] » [[Perft]]
# [[http://www.youtube.com/watch?v=6Y_FaQhqX2c|Perft Testing (Move Make / Unmake debug)]] » [[Unmake Move]]
# [[http://www.youtube.com/watch?v=6ib1Kf44KR0|Quick Look At MinMax and NegaMax]] » [[Minimax]], [[Negamax]]
# [[http://www.youtube.com/watch?v=j_ZHeE87udo|Quick Look At Alpha Beta]] » [[Alpha-Beta]]
# [[http://www.youtube.com/watch?v=eox81XUaXYI|Overview of search implementation]] » [[Search]]
# [[http://www.youtube.com/watch?v=XPOcvp4h7VU|Parsing a move from user / GUI]] » [[GUI]]
# [[#Repetitions]][[http://www.youtube.com/watch?v=1Vq-Ic9t4FE|Repetition Detection]] » [[Repetitions]]
# [[http://www.youtube.com/watch?v=l_OrrycM7Fw|Getting the time in milliseconds]]
# [[http://www.youtube.com/watch?v=AlwyJFG466M|Principal Variation Table #1 Definitions]] » [[Principal Variation]]
# [[http://www.youtube.com/watch?v=BpR76VBo7DQ|Principal Variation Table #2 Store / Probe]]
# [[http://www.youtube.com/watch?v=9LKX9jgqx84|Principal Variation Table #3 Retrieval]]
# [[http://www.youtube.com/watch?v=_063cuTPOe8|Preparation for search]]
# [[http://www.youtube.com/watch?v=F74y0ErjWTI|Search Function Definitions]]
# [[http://www.youtube.com/watch?v=zSJF6jZ61w0|Basic Evaluation (very basic)]] » [[Evaluation]]
# [[http://www.youtube.com/watch?v=6WobF80RgaY|Clear To Search]]
# [[http://www.youtube.com/watch?v=31guiVzPJuU|Writing the Iterative Deepening Function]] » [[Iterative Deepening]]
# [[http://www.youtube.com/watch?v=-WyXnVpJVSQ|Writing the Alpha Beta Function]] » [[Alpha-Beta]]
# [[http://www.youtube.com/watch?v=r4pNoANs8_0|Vice solves a Mate in 3 !]] » [[Checkmate]]
# [[http://www.youtube.com/watch?v=hDHa4-fijMc|Move Ordering - Setting Up MVV LVA]] » [[Move Ordering]], [[MVV-LVA]]
# [[http://www.youtube.com/watch?v=8LYMXwH1xsg|Move Ordering - Picking a Move]]
# [[http://www.youtube.com/watch?v=RkZ7mUQnviA|BUG ALERT - Change to Move Generation!]]
# [[#KillHist]][[http://www.youtube.com/watch?v=jIc2YOP1W7U|Move Ordering - Killer, History Heuristics, PV Move]] » [[Killer Heuristic]], [[History Heuristic]], [[PV-Move]]
# [[#Quiescence]][[http://www.youtube.com/watch?v=ouWcWzyCOCY|Quiescence - Getting rid of the horizon effect]] » [[Quiescence Search]]
# [[#UCI]][[http://www.youtube.com/watch?v=NBl92Vs0fos|UCI Protocol #1 - Intoduction]] » [[UCI]]
# [[http://www.youtube.com/watch?v=gcBYSby9f88|UCI Protocol #2 - UCI Loop]]
# [[http://www.youtube.com/watch?v=EzkmJEkAmoY|UCI Protocol #3 - Parse Position]]
# [[http://www.youtube.com/watch?v=Lo54mNqOMAs|UCI Protocol #4 - Parse Go]]
# [[http://www.youtube.com/watch?v=gVGadWuBqEA|UCI Protocol #5 - Interrupt Thinking & Working Program]]
#  [[#Nero]][[http://www.youtube.com/watch?v=_1S_vDHWJp8|Vice vs Nero 6.1 - The first ever game!!]] » [[Nero]]
# [[#CECP]][[http://www.youtube.com/watch?v=DZwW-st4Jl8|XBoard / Winboard Protocol #1]] » [[Chess Engine Communication Protocol]]
# [[http://www.youtube.com/watch?v=ubSDzI3ecwc|XBoard / Winboard Protocol #2]]
# [[http://www.youtube.com/watch?v=pClToEJ-g-A|XBoard / Winboard Protocol #3 And Console Mode]]
# [[http://www.youtube.com/watch?v=KuQCsEcCO0g|BUG ALERT #2]]
# [[http://www.youtube.com/watch?v=1SiR7A1NQ0g|In Check Extension]] » [[Check Extensions]]
# [[http://www.youtube.com/watch?v=XkbK_yOvcUw|Improving Evaluation - Bitmasks]] » [[Evaluation]]
# [[http://www.youtube.com/watch?v=oB2l2KADPYc|Improving Evaluation - Pawn Bitmasks]]
# [[http://www.youtube.com/watch?v=tfzG-o77RD8|Improving Evaluation - Mirror Board Function]] » [[Color Flipping]]
# [[http://www.youtube.com/watch?v=uoHEwVSEy5s|Improving Evaluation - Isolani and passer]] » [[Isolated Pawn]], [[Passed Pawn]]
# [[http://www.youtube.com/watch?v=XXdzSQ49aM0|Improving Evaluation - Open Files]] » [[Open file]]
# [[http://www.youtube.com/watch?v=4ozHuSRDyfE|Improving Evaluation - King Position and Material Draws]] » [[Draw Evaluation]]
# [[http://www.youtube.com/watch?v=wgYuNhzCYe0|Null Move Pruning #1]] » [[Null Move Pruning]]
# [[http://www.youtube.com/watch?v=5rqXb_QMLA4|Null Move Pruning #2]]
# [[http://www.youtube.com/watch?v=MMoOsCHSdj4|Transpositon Table]] » [[Transposition Table]]
# [[http://www.youtube.com/watch?v=jmLNzigTceM|Test Results, Debug Test Run]] » [[Debugging]]
# [[http://www.youtube.com/watch?v=-G_tQKNfVuM|Vice 1.0 release, end of series]]
# [[#Polyglot]][[http://www.youtube.com/watch?v=HjZtevzCa5Y|Adding An opening Book Using Polyglot]] » [[Opening Book]], [[PolyGlot]]
# [[http://www.youtube.com/watch?v=hGy5kR_mOdM|Polyglot Opening Book #1]]
# [[http://www.youtube.com/watch?v=jEurXv03JIs|Polyglot Book #2 Hashkey Generation]]
# [[http://www.youtube.com/watch?v=_VZfnlhk2SU|Polyglot Book #3 Read In Data]]
# [[http://www.youtube.com/watch?v=wT7H4ogSDak|Polyglot Book #4 Read Book Moves]]
# [[http://www.youtube.com/watch?v=u5WEOplKjdc|Polyglot Book #5 Internal Format Book Moves]]
# [[http://www.youtube.com/watch?v=30GFA_d98SQ|Polyglot Book #6 Book Option]]
# [[http://www.youtube.com/watch?v=eGGL_9_qduI|Vice 1.1 Polyglot Books]]
==Misc==
* [[http://en.wiktionary.org/wiki/vice|vice - Wiktionary]]
* [[http://en.wikipedia.org/wiki/Vice_%28disambiguation%29|Vice (disambiguation) from Wikipedia]]
* [[http://en.wikipedia.org/wiki/Vice|Vice from Wikipedia]]
* [[http://en.wikipedia.org/wiki/Vice_%28character%29|Vice (character) from Wikipedia]]
* [[http://en.wikipedia.org/wiki/Tree_of_virtues_and_tree_of_vices|Tree of virtues and tree of vices from Wikipedia]]
* [[http://en.wikipedia.org/wiki/Seven_deadly_sins|Seven deadly sins from Wikipedia]]

=References= 
<references />
=What links here?= 
[[include page="Vice" component="backlinks" limit="50"]]
**[[Engines|Up one Level]]**