Goetz Schwandtner's PythonS60 Experiments: Tricky Mirrors


2008-06-04: Well, somebody has found this web page and announced it at Symbian-Freak [5] and Symbian60.mobi [6]. Thanks a lot! Maybe that motivates me to restart working on the game. ;)

2008-08-04: Just to let you know: A new version containing more levels is in the works. Some easy levels have already been added and I am making up my mind for some harder ones. But it will take some time, as I am quite busy at the moment.

2008-08-19: Latest news: Tricky Mirrors 1.0 is out! Go and grab your copy, as source or pre packaged SIS installer!


This small game is a proof of concept: It was developed completely onboard a Nokia E60, a Symbian Series 60 3rd Edition smartphone, using the PyS60 interpreter [1] and an onboard python editor [2] for the older versions and Ped [7] for version 1.0 to edit the source code.

What's the aim of the game?

The game is influenced by the games Oxyd [3] and Mirror Magic [4]. Each level consists of a rectangular grid containing some lasers, mirrors, laser targets and also some other elements. The aim is to hit all targets with a laser beam, established by proper mirror orientations. Since this is too simple, also automatic elements changing their state from time to time and fixed mirrors exist. Beware not to reflect a laser beam back to the laser - it will overheat and break eventually, which can be seen by the laser color changing from bright yellow to dark red. Here are some screenshots (click for full size):

On these screenshots you can see different kinds of mirrors: Flat mirrors and triangular mirrors. They have a small center dot showing the operation mode: A red dot for a fixed mirror, a blue dot for an automatic moving mirror and a green dot for a user orientable mirror. Mirrors with a green dot can be turned by moving the cursor (dark red square) to the mirror and press the joystick.

Targets are the light green circles, which change to black when hit by a laser beam and eventually vanish. The lasers are the elements where the laser beam starts. In the screenshots 2 and 3, circles of different shades of blue can be seen. These are teleporters which teleport a laser beam to the linked teleporter.

This version of the game consists of only three levels and I hope to be able to publish a version containing more levels soon, including some features already supported, like user-switchable or automatic lasers. Feel free to e-mail me ideas for new levels. :-)

Source code:
Binary Package (for S60 3rd edition):
mirrors.sis (without PyS60, has to be installed separately)
Current Version:
Version 1.0, introducing new features:
© Copyright:
Tricky Mirrors: copyright 07-2006, 08-2008 by Goetz Schwandtner
This game is freeware and open source.
Technical notes:
The development of Tricky Mirrors started on a Nokia E60 with a screen resolution with width 352 px and height 416 px. Version 1.0 was developed on a Nokia E51 with a resolution of 320x240 using Ped [7] as development environment. On a lower resolution not all details are displayed correctly - here you feel the proof of concept state of the project! Also, I tried the program on some devices with landscape. Well, it looks ugly there. Unfortunately, the appuifw.app.orientation does not seem to have an effect, at least on my Nokia E61i. But of course you may change the source to a landscape version by swapping the coordinates!
The binary package was created using Ensymble [8] with an arbitrary UID, using the following command:

ensymble.py py2sis --uid=0xffff9765 --appname=TrickyMirrors --shortcaption=TrickyMirrors --caption=TrickyMirrors mirrors.py mirrors.sis

Please re-run this command with a different UID if it turns out that the one I have chosen is already in use. I have set up the binary package for convenience and testing purposes and the UID is nothing official!


  1. PyS60
  2. Editor (dead link removed)
  3. Oxyd
  4. Mirror Magic
  5. Symbian-Freak
  6. Symbian60.mobi
  7. Ped
  8. Ensymble


As usual, I will take no responsibilities for problems connected with the use of my programs. For me, they have been working fine, but that does not mean that there could not be problems, bugs etc.