Lazy evaluation is a technique often used to save time when evaluating chess position. If a position’s true score is much higher than beta or lower than alpha the full evaluation is really unnecessary. For example, if you’re a queen down it’s a waste of time checking to see if you have a weak double […]
Author Archive for: Steve
About Steve Maughan
I’ve loved computer chess ever since I was given a Chess Challenger 9 for my birthday back in 1981. Up to that point I had been obsessed with chess. But once I started to play against the computer I was sucked into the world of computer chess. Over the years I’ve created quite a few 2-player board game, including Connect4, backgammon, Edge Reversi and Monarch Chess.
My day job is running a small consultancy (Cozmix Inc.) which specializes in helping companies design their sales forces. We also help design sales territories. While I’m certainly not a programming Rockstar, I designed and wrote all of the software we use.
I live in Central Florida and have a beautiful wife (Stephanie), and two wonderful daughters (Evie and Pippa).
Entries by Steve Maughan
I decided to see what Mavericks performance is like through the lens of a profiler. I’m using CodeBlocks as my GCC IDE. It was remarkably simple to get the profiler working. The first thing I notices was the large amount of time taken to see if a move resulted in discovered check, and therefore illegal. […]
Tim Ferriss of “Four Hour Work Week / Body / Chef” fame has championed the idea of Minimum Effective Dose. This is simply the smallest does which will have the desired outcome. In the context of computer chess evaluation I think it’s interesting. I would like to try to create an automatic parameter tuning framework […]
I’m now starting to think about the evaluation function. I’m doing this at a completely different stage than for Monarch (the Delphi or “C” version) – but that’s intentional – here’s why. Monarch was my first chess engine. While I had been a computer chess fan (fanatic?) since the early 80’s, and liked programming, I […]
Perft is a fantastic way to debug your chess engine’s move generator (as well as the make and un-make routines). Here are some tips which you may find helpful: Find a set of test positions with known perft scores and which cover all the weird and obscure chess moves. See my previous post Perfect Perft […]
Over the weekend I got the last couple of bugs out of Maverick perft routine. It now has a perfect node match for all the positions I’ve tried – Yippee!! In my opinion getting to this stage is a major milestone in the development of a chess engine. If you can get this far you’re […]
The perft routine in Maverick is almost fully debugged! I believe this is an important milestone in any chess engine’s development. It’s really the first time the code “plays” chess, in the sense it generates moves, make and un-makes the moves, and iterates up and down the search tree. I also think the speed of […]
I’ve been in Tokyo this week on business. So there hasn’t been too much time for chess programming (sigh). Hopefully I’ll have time on the 13 hour flight back via Dallas Fort-Worth. I’m in the process of using perft to debug the move generating and make / unmake routines. For those who haven’t come across […]
I finally got the move generators working. There are two primary move generators. The first “generate_moves” is called when the side to move is not in check. It creates a list of pseudo moves (i.e. some may be illegal due to discovered check). The second routine, generate_evade_check creates a list of legal moves which get […]
If your chess engine is bitboard based you will need to be able to visualize what the bitboard looks like as an actual chess board. I can’t image developing a bitboard engine without this type of utility. So I created a simple chess bitboard viewer. You download it here: Chess Bitboard Viewer It runs on […]