GLPexeso is a simple implementation of the old game Pexeso. It was written partly as an exercise in learning OpenGL (it was my first OpenGL program, well, the second after the obligatory "Hello, world!"-ish spinning colored triangle), partly as a participant in the "Most Senseless Use of 3D Graphics In a Computer Game" contest.
Note: The name "Pexeso" might be a registered trademark or something; please contact me if you believe the name "GLPexeso" violates any patent/copyright/trademark/whatever laws.
You can choose different game dimensions from the New Game menu.
Click on a tile to flip it open. You can have two tiles open at a time; when you try to open a third, the first two flip back closed. If you open two tiles with the same picture on them, they disappear; the goal is to make all the tiles disappear.
You can turn annoying visual effects from the Options menu on and off - a spotlight beam which follows your mouse, and the free floating of the tiles on the surface of the water (well, I wanted to make it appear as water, but it looks more like they're on top of a lump of jelly.)
You need a card with a full OpenGL ICD to play GLPexeso. Don't try it on software renderers - it runs, but very slowly, and it might crash because of some problems with trying to adjust the animation speed. It has been tested on S3 Savage3D, Intel i740, Riva TNT and Rendition Verite 2200 cards. It will not run on Voodoo2 or any other card without full OpenGL support (that is, OpenGL in a window, not fullscreen). Write me to tell me if it works on your card.
I believe OpenGL is a Good Thing (TM) for the entire range of applications from silly not-really-3D games like this one to superrealistic GIS visualisations. I tried working with A Certain Other 3D API (*cough, cough*), but quickly found out I'm both too stupid and too impatient to write screenfuls of QueryInterface() and filling execute buffers for something as simple as a pexeso game. OpenGL has a very graceful learning curve, with simple things done in a simple way, and complicated things not more complicated than necessary. You can have a decent low-end card with good OpenGL support like the S3 Savage3D for $45 (well, at least here in Bulgaria), and the middle end is below $100 with cards like the TNT and Savage4. Even simple games and "serious" applications can benefit from 3D graphics, and OpenGL is the easiest way for you to add it to your software.
You can choose among three (in this version) sets of pictures for the tiles, all based on weird (and beautiful, in my opinion) alphabets:
Glagolic was the original Slavic alphabet, created by the Bysantian scholar Cyrillus. It was used in my country, Bulgaria, more than 1000 years ago, and until the 18th century in Croatia. It was later replaced by the contemporary Cyrillic alphabet, created by one of Cyrillus' followers, which bears strong resemblance to the Greek (and the Roman) alphabet; still, I think the Glagolic script was much more beautiful.
Tengwar Sindarin was the rune script used by the Gray Elves (the Sindar) in Tolkien's Middle Earth.
The Cirth Eredor script is another runic alphabet created by Tolkien, but it is based on the real runes used by the Germanic peoples tens of centuries ago.
The Glagolic TrueType font I used was created by the Translation Experts company.
The Tolkien typefaces were taken from Daniel Steven Smith's homepage, where you can find many more beautiful fonts.
You can change the appearance of GLPexeso to suit your tastes. Please send me any tilesets/backgrounds/tile textures you create, if I like them I will include them in the distribution.
The background is a 256x256 truecolor image stored in the Background.RGB file in the RAW format (as defined in the HSI Image Alchemy manual): 32 bytes of header (which are simply ignored), then 256x256 3-bytes triples, one byte each for red, green and blue. Paint Shop Pro and Image Alchemy can write this kind of files.
The tile itself (the wooden texture) is stored in a 128x128 truecolor image in the TileBack.RGB file in the same format.
The tileset, the images which appear on the front side of the tiles, are 32 64x64 monochrome images packed together in a 512x256 monochrome RAW file (again, 32 bytes for header, then a byte for each pixel, 0 for black/opaque, 255 for white/transparent). Any file with the extension .TS you place in the same folder as the GLPexeso.EXE executable will be added to the Tileset menu. If you want to create your own tileset, download this file, then paint a tile picture in each square with black; then delete all the red and blue around your pictures, fill the background with white, save it as RAW format and try to load it with GLPexeso. Warning: It will probably crash if you give it a file in a wrong format. Please make sure your file is exactly the same format as the three tilesets supplied by me, the same size etc. Contact me if you have problems.
If you want to have GLPexeso with true-color tilesets, not just scrabblings on the wooden blocks, first create a 512x256 image with 32 64x64 little pictures of your dog/gerbil/home/whatever, then send it to me and ask politely.
After I cleaned up the sources a bit I decided to publish them, so that anyone bored of all the stupid pointless tutorials on OpenGL around the Web will become, well, even more bored. They are published under the NLPL ("No License" Public License), because I don't thing something this simple and useless should be protected by licenses, and because I don't like the GPL. NLPL means you can do whatever you want with this code, if you like: you can make money, you can turn it into a virus, you can sell it to Microsoft, you can add two lines and GPL it, I don't care. (Well, if you make something even remotely sensible, I'd be glad to hear about it.)
Here is the ZIP with the sources (17 KB).
Instructions for building:
Unpack the ZIP into a new folder. Create an empty project in Visual C++. Add all files in the folder to the project (*.cpp, *.h, *.rc). Compile. Don't forget to place the artwork in the same folder as the executable (./debug and ./release). Repeat until successful :) Complain if not successful after the 10th iteration.
If somebody wants to port this to GLUT so it can be compiled under Linux, go ahead, it shouldn't be too hard to remove the Windows-specific code like mouse message handling and menus. I would do it myself, but MESA doesn't support my Savage3D under Linux (hint, hint, S3?), and I don't think the software renderer is worth bothering with the port. (And no, I'm not going to buy another video card just to port a stupid little game to Linux.)
This is version 0.41 beta, which means I believe (or rather, I'm sure) there are still bugs in it. If you find a consistently reproducible bug, please write me about it.
The future of GLPexeso depends on the feedback I get from you - if I find a few good words in my email, along with at least a couple of tilesets, then I might spend more time on it. Otherwise, I will move on to other projects.
Visit the GLPexeso Home Page at http://glpexeso.webjump.com
Developed by YE/digital graffiti June 1999
Special thanks to malkia/eastern analog
Created with Visual C++ 5.0 on
and
(yes, GIMP on Windows, you heard right :) )