Vice

Home * Engines * Vice



Vice, (Video Instructional Chess Engine) a didactic open source chess engine by BlueFeverSoft, written in C, and introduced in a series of 87 + 8 YouTube videos from May 2013 until January 2014.

Vice represents the board with a 120 square array and additionally has some bitboards for pawn stuff. It applies an alpha-beta search with transposition table, null move pruning and quiescence inside an 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 format.

=Forum Posts=
 * Vice 1.0 by BlueFeverSoft, OpenChess Forum, July 30, 2013
 * Vice 1.0 by Adam Hair, CCC, August 22, 2013
 * Re: Mussaurus 0.1-prealpha - a poor man's Vice by Richard Allbert, CCC, Novembr 26, 2019
 * Re: Mussaurus 0.1-prealpha - a poor man's Vice by Richard Allbert, CCC, December 02, 2019


 * Vice CCRL rating by Amanj Sherwany, CCC, April 29, 2021 » CCRL
 * Vice solving problems on Twitter by Richard Allbert, CCC, November 08, 2021

=External Links=

Chess Engine

 * Vice ReadMe File and Download
 * Vice 1.0 64-bit in CCRL Blitz

Videos

 * Programming A Chess Engine in C, YouTube Videos by BlueFeverSoft
 * 1) Resources and Community
 * 2) Board Representation » Board Representation
 * 3) First Definitions
 * 4) Board Structure
 * 5) Undo-Move Structure » Unmake Move
 * 6) Array [120 to Array[64] Indexing for Pawns] » 10x12 Board, 8x8 Board
 * 7) Piece Lists and ASSERT! » Piece-Lists
 * 8) Bitboards » Bitboards
 * 9) Bitboards Pop and Count » BitScan, Population Count
 * 10) Set and Clear bits » General Setwise Operations
 * 11) Position Key (Hashkey) #1 » Zobrist Hashing
 * 12) Position Key (Hashkey) #2
 * 13) Position Setup - Reset Board
 * 14) Position Setup - FEN Notation » Forsyth-Edwards Notation
 * 15) Parsing An FEN (1)
 * 16) Parsing An FEN (2)
 * 17) Printing the board to screen
 * 18) Piece Lists » Piece-Lists
 * 19) Rank and File Arrays
 * 20) Checkboard
 * 21) Next steps
 * 22) Square Attacked (1)
 * 23) Square Attacked (2)
 * 24) Move Format & Bits (1) » Encoding Moves
 * 25) Move Format & Bits (2)
 * 26) Move Format & Bits (3)
 * 27) Printmove and Printsquare
 * 28) Move Generation #1 » Move Generation
 * 29) Move Generation #2 - Validations
 * 30) Move Generation #3 - White Pawns
 * 31) Move Generation #4 - Black Pawns
 * 32) Move Generation #5 - Piece Index Setup
 * 33) Move Generation #6 - Non Slider Pieces
 * 34) Move Generation #7 - Slider Pieces
 * 35) Move Generation #8 - Castling » Castling
 * 36) Move Generation #9 - Final Movelist! » Move List
 * 37) Writing MakeMove - Introduction » Make Move
 * 38) Writing MakeMove #1
 * 39) Writing MakeMove #2 - ClearPiece
 * 40) Writing MakeMove #3 - Add/MovePiece
 * 41) Writing MakeMove #4 - MakeMove
 * 42) Writing MakeMove #5 - TakeMove
 * 43) Introduction to Perft testing » Perft
 * 44) Perft Testing (Move Make / Unmake debug) » Unmake Move
 * 45) Quick Look At MinMax and NegaMax » Minimax, Negamax
 * 46) Quick Look At Alpha Beta » Alpha-Beta
 * 47) Overview of search implementation » Search
 * 48) Parsing a move from user / GUI » GUI
 * 49) Repetition Detection » Repetitions
 * 50) Getting the time in milliseconds
 * 51) Principal Variation Table #1 Definitions » Principal Variation
 * 52) Principal Variation Table #2 Store / Probe
 * 53) Principal Variation Table #3 Retrieval
 * 54) Preparation for search
 * 55) Search Function Definitions
 * 56) Basic Evaluation (very basic) » Evaluation
 * 57) Clear To Search
 * 58) Writing the Iterative Deepening Function » Iterative Deepening
 * 59) Writing the Alpha Beta Function » Alpha-Beta
 * 60) Vice solves a Mate in 3 ! » Checkmate
 * 61) Move Ordering - Setting Up MVV LVA » Move Ordering, MVV-LVA
 * 62) Move Ordering - Picking a Move
 * 63) BUG ALERT - Change to Move Generation!
 * 64) Move Ordering - Killer, History Heuristics, PV Move » Killer Heuristic, History Heuristic, PV-Move
 * 65) Quiescence - Getting rid of the horizon effect » Quiescence Search
 * 66) UCI Protocol #1 - Intoduction » UCI
 * 67) UCI Protocol #2 - UCI Loop
 * 68) UCI Protocol #3 - Parse Position
 * 69) UCI Protocol #4 - Parse Go
 * 70) UCI Protocol #5 - Interrupt Thinking & Working Program
 * 71)  Vice vs Nero 6.1 - The first ever game!! » Nero
 * 72) XBoard / Winboard Protocol #1 » Chess Engine Communication Protocol
 * 73) XBoard / Winboard Protocol #2
 * 74) XBoard / Winboard Protocol #3 And Console Mode
 * 75) BUG ALERT #2
 * 76) In Check Extension » Check Extensions
 * 77) Improving Evaluation - Bitmasks » Evaluation
 * 78) Improving Evaluation - Pawn Bitmasks
 * 79) Improving Evaluation - Mirror Board Function » Color Flipping
 * 80) Improving Evaluation - Isolani and passer » Isolated Pawn, Passed Pawn
 * 81) Improving Evaluation - Open Files » Open File
 * 82) Improving Evaluation - King Position and Material Draws » Draw Evaluation
 * 83) Null Move Pruning #1 » Null Move Pruning
 * 84) Null Move Pruning #2
 * 85) Transpositon Table » Transposition Table
 * 86) Test Results, Debug Test Run » Debugging
 * 87) Vice 1.0 release, end of series
 * 88) Adding An opening Book Using Polyglot » Opening Book, PolyGlot
 * 89) Polyglot Opening Book #1
 * 90) Polyglot Book #2 Hashkey Generation
 * 91) Polyglot Book #3 Read In Data
 * 92) Polyglot Book #4 Read Book Moves
 * 93) Polyglot Book #5 Internal Format Book Moves
 * 94) Polyglot Book #6 Book Option
 * 95) Vice 1.1 Polyglot Books

Misc

 * vice - Wiktionary
 * Vice (disambiguation) from Wikipedia
 * Vice from Wikipedia
 * Vice (character) from Wikipedia
 * Tree of virtues and tree of vices from Wikipedia
 * Seven deadly sins from Wikipedia

=References= Up one Level