Home * Engines * Vice
181px-Vices_Speculum_Virginum_W72_25v.jpg

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 [1].

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 [2].
Tree of Vices [3]

See also


Forum Posts


External Links

Chess Engine

Videos

  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


References

  1. ^ Programming A Chess Engine in C, YouTube Videos by BlueFeverSoft
  2. ^ Vice ReadMe File and Download
  3. ^ "Tree of Vices" from Speculum Virginum, Walters Art Museum, Ms. W.72, fol. 25v, Early 13th century manuscript from the Cistercian abbey of Himmerode, Vices Speculum Virginum W72 25v.jpg - Wikimedia Commons, Tree of virtues and tree of vices from Wikipedia

What links here?


Up one Level