Well I lost! darn it! and to my own player...it is almost sad that something I created can beat me, but then again it is neato, eh? ;)
||The player to be used directly through the X windows GUI by the user
||This player only knows how to slide exactly one spot away. No jumping AI. Slider is intelligent enough to move around walls of marbles, however. Slider trys to be the best simple player it can be!
||Jumper is a decendant of slider. Jumper adds the capability of single jumps to slider. It also trys to be the most intelligent a single jumper can be!
||Robo is the next step after Jumper. Robo knows how to do multiple jumps. Robo try to be the most intelligent multiple jumper and single slider if necessary!
||A variation of Robo being developed by Michael Sterrett.
Credits & History
for Intro to AI
on Sun UNIX
in Lisp and C
||Jon Atkins (Main & GUI)|
Michael Sterrett (Assist & Sockets)
|Documentation & Presentation
in C (incomplete)
in C (incomplete)
|Summer 1996 - now
in C (in progress)
The original game was made for a class at Taylor University. It contained features such as dynamic integration of new player modules on every run, LISP main driver with C functions, automatic tournament and result tallying, plus it had a dual capability to run through a VT terminal or an X-Windows client through an elaborate socket driven message system to the LISP driver. All this was one HUGE kludge. The X libraries were not compatable with the LISP linker, the socket library would die after 64 transactions (about 32 moves) so it was killed and restarted EVERY time(!), many things were emulated in LISP by using a C system call, and finally we had to make sure that Marbles in the X window were visible so we drew them 5 times EVERY TIME! In the end I didn't qualify for credit in the class, even though this was the most beautiful peice of work in the class, the code alone was 3 times longer than anyone elses, it took two solid weeks of work non-stop, and did quite a bit more functionally as well. Bummer eh? :(
Then we decided it was time to rewrite the whole thing in C. Mike started on his own version for MS-DOS using a nice graphics library. It ran in low res 320x200 and had mouse functionality built in. The rest was pretty much up to Mike. He had the computer players working, and even had animation with jumping marbles with shadows! But this has been put on indefinite hold as long as Linux is a better OS. Which means FOREVER! ;)
Then, inspired by Mike's achivements I was spurred to try writting a client for my Amiga 4000. I started working from the original LISP script and C sourses, just as Mike did for MS-DOS. I had both the computer and human players working. A nice Amiga GUI with screen flipping and 8bit (a whopper for Amigas!) graphics complemented the clean execution. I even had screenmode selection worked in the menu! The VT terminal half was ditched in this version as well as in Mike's MS-DOS version. I even had a full startup implementation done for player color, type, and number selection. Plus colored glowing corners for human's origin corner on the board. It was nice, but starting a new game in the middle of another would mess up the board. I stopped development on this once school started again, and lost interest until the next summer...
As you can see this is now the fourth generation of the same old driver we came up with in the spring of 1993! I think I have enough experience now to really know what can be done to make this a really enjoyable game. I am continuing work on it. It still retains it's VT interface, soon to be in true color ncurses. I also plan to integrate tournament functionality into the whole package somehow, maybe as a separate front-end. A Network player is planned when the GUI is finished, so that freinds can play over the net with each other. That would be derived from the human player and use the BSD socket library. The X-Windows code is all my own using only XLib functions. I was concerned about getting the most speed out of a very freindly X-Windows client. MITSHM extensions may be nice in the future too, although, they would be almost useless for the amount of data I'm actually moving around! The current version will be released with old VT handling, but full GUI implementation. Later a tournament of AI players is planned, and sucsessive version will, of course be posted here!
Just a note on the release here, some buttons do nothing. Consider them to be stress relievers.
Fixed human player in X client, it now moves correctly in any player position.
read README, and players/README for any info, otherwise email me.
CVS repository is available, but I don't update it that often, as my work is on other projects at the moment...but I will make an OpenGL interface for this someday!
The sources now contain source for all players I've written so far.
I'd love to have more good players, but noone else has contributed source code.
The binaries are for convenience, they were made for glibc2.1 & XFree4.0.1
sdlCC-0.0.0.tar.gz (this sdl version, much better too! 560KB (ignore the version number ;)
All files, new and old...
jcatki AT jonatkins.org