Weird Science - Tales from the
Vectrex Academy Lab
Vectrex
Performance Experiment
KINGSLAYER CHESS
Project
Status
Beta release candidate, version 1.0
Synopsis
A simple one
or two player chess-like game with some
basic AI opponents
Intended to be
rather an academic experiment than the
attempt to create a good Vectrex chess game
Most
recent changes compared to the previous version
Code has been
optimized for performance, significant speed
up of AI computations.
Alpha-Beta
pruning of the minimax-algorithm improved by
adding one (simple) heuristics.
Load-balancing
introduced. The AI state machine observes
Timer 2 and schedules its computations so
that a 50Hz framerate is maintained at all
times (well, there might still be some
occasional spikes). This can be nicely
observed in Vide.
AI levels 4 to
6 added. AI levels 1 to 3 do their
computations rather quickly, 4 is
acceptable, 5 and 6 are mainly included just
for performance tests.
Choice between
board-view and progress-view during AI
computation, see below.
Choice to let
the AIs open a game by up to 3 random moves.
This provides for a lot more variety and a
means to quickly start an (interesting?)
game, as AI computations are otherwise
mainly deterministic (same situation on the
board will lead to same decision of the AI).
Choice between
two different board evaluations functions
(AI types). Type A is default and well
tested, type B is highly experimental.
Some bugs
fixed which caused the AIs of the previous
version to do some silly stuff on rare
occasions.
How To
Play
The rules of Kingslayer Chess are a simplified and
modified version of the common rules of chess.
The goal of the game is to explicitly slay the
opponent's king (hence the name).
In order to win the game, the king must be taken
by an attacking move of another piece.
There is no checking-rule, and the game only ends
if the king is taken.
There is no castling, en-passant, or
pawn-promotion. Also no 50-moves-rule or alike.
Use the joystick and the buttons of controller 1
to play the game.
AI
opponents
The are currently six different AI opponents
available, implementing levels 1 to 6 of the minimax
algorithm (looking between 1 and 6 moves ahead into
the future).
Also, a non-AI can be chosen as opponent which
does completely random moves only.
The AIs are certainly not club player level and
rather intended as (worthy?) opponents for the
casual novice or amateur player. Maybe they can also
provide some fun for beginners or kids who are just
about to start learning chess.
Computation time and difficulty both increase with
the level of AI chosen. AIs 3 and 4 seem to be
acceptable in regard of both.
While the AIs are computing their moves, it is
possible to toggle between board-view and
progress-view by pressing button 1 for one second.
The default is board-view for AIs 1 and 2, and
progress-view for the other AIs 3 to 6.
It is sort of fun to watch the AIs
play against each other...
Author
Peer Johannsen
Prototype
Screenshots
Prototype 0.1 Demo
Video
Trivia
Initially, the goal of this
experiment was to keep the complete board drawn
at a 50Hz framerate at all times. Especially,
the board was to remain visible during the AI
move computations.
The screen size of the chess board
is the (currently) best possible compromise
between performance and the goal to display the
board at any time while maintaining a 50Hz frame
rate.
Only the original Vectrex hardware
is used, no additional RAM, no "stronger"
external CPU.
The code is pure Vectrex C, using the BIOS
routines for interfacing with the console
hardware only.