Društvo LJUDMILA, Slovenska 54
OSMO nadstropje, Avtotehna

pošta: Rozmanova 12
SI-1000 Ljubljana
e: info@ljudmila.org
t: +386 1 426 9530
f: +386 1 426 9531

pon,tor,čet,pet 9h-14h
vstop prost

Blender Laser Chess

Blender Laser Chess rendering
Blender Laser Chess editing

Laser Chess is a chess variant, first appearing in an program from Mike Duppong in 1987. With his program, he won the first prize in the COMPUTE! magazine programming contest.

There was a website [1], but it seems to have dissapeared.

Laser Chess is, in fact, a chess variant. The main feature of the variant is that players have a laser. Other pieces have mirrors. When one shoots the laser, it reflects at mirrors, and finally may hit one or more pieces that blow up. The program allows two players to play against each other.

The original game was later updated to Advanced Laser Chess, which has many improvements and much better gameplay. This is the version we are interested in.

The idea here is to implement the game entirely with the Blender game engine. Although Blender is a 3D program, it still makes for a great engine, even for a 2D game.

Get it here (v0.3).

It is not quite playable yet.

Other versions

  • JavaScript version - work-in-progress, almost complete. Use Mozilla Firefox for best results.
  • original Amiga version - you can run it with UAE emulator. No .adf file, sorry! :-(
  • xlaserchess - version for X11/Athena Widgets. A bit dated, but works. Should be modernized for gtk, etc... It's C++ and doesn't compile without tweaks on modern Linux :-( You are welcome to help fix it.


2006-02-11 - v0.3

Lots of improvements:

  • use of game engine
  • mouse motion and picking
  • simple piece movement and rotation
  • simple taking sides and move indicators


Game Logic

  • initialize piece rotations
  • laser functionality
  • motion limiting
  • holes
  • teleporter

Other stuff

  • sound effects
  • explosion animations (can animated textures be used?)
  • change views with 1 and 2 keys (1 - gameplay, 2 - fancy 3d autorotation of the board)
  • initialize display window geometry. use this for better mouse pointer accuracy.
  • mouse pointer shadow transparency
  • clickable action button
  • rotate piece with mouse wheel
  • save board positions to blender objects. add reset board function.


Production notes

OK, so I have to make this game. I will try to keep faithful to the Amiga original.

While programming this, it became apparent, that the game could be quite well done as a web page with javascript as well... probably easier than Blender game.

But the idea now is to get to know Blender game engine better, so here we go!

One way to view this is as a game in Python, using Blender mostly for display engine. If it can do 3D, it could do 2D too. Chess is really a 2D game. Maybe add a 3D view later, for propaganda effects?

First, I made board and all pieces. Pieces were designed to look good from above. 2D shapes were extended to 3D, but most of this remains unseen in default view.

All objects were renamed to something sensible. This would be used by Python for finding and identfying objects...

One was was that user could set up a board in Blender and just run the game with new starting position - game should initialize the board from object coordinates and rotations.

Picking objects

There is a clear need for user to be able to select a piece (or rather square) on the board. At first, I was hoping I could use game engine's object picking fascilities, but this proved rather too complicated - I opted for artificial mouse pointer instead.