Plateau Source Code
From the original email sent on November 21, 1999:
Because of personal and work commitments I am unable to devote any time to further enhancements of Virtual Plateau. So, I've packaged the source code and placed it on the web site. This takes me out of the way of you brilliant programmers out there who have been itching to add things like better email notation with strong encryption, live web play, better computer opponents, and etc.How will this be coordinated? -----
Obviously, this could turn into a huge mess fast with several people pounding on the same code at once. I AM NOT GOING TO SPEND A LOT OF EXTRA TIME SORTING IT OUT. Any and all work should be coordinated through the Plateau OneList email list. If you decide to work on some functionality you must make an announcement to that effect and coordinate with others who may be working on the code. This email system has a great feature where the history of messages can be viewed. As the software advances I will publish new intermediate versions on the web site for testing.
What's in the source code package? -----1. Main Visual Basic project. This contains of the user interface and all of the original Virtual Plateau code.
2. Visual C++ Plateau Engine project. The heart of the Plateau VB code is a move generator that calculates all of the board positions that result from a given board position. This is used throughout the Plateau code for move checking and in the beginner player. This VC++ project is a re-write of the VB move generator code and is mostly what I've been working on for the past year. My idea was that this core functionality could be more widely used if written in a portable language such as C and would be much faster as well.
3. Visual C++ Expert Player project. This was a feeble start at writing an expert opponent program. It's primary usefulness is as a template for how an expert player dll might be hooked into Virtual Plateau. So, when the "Test Expert Player" button is clicked VB "finds" the dll in the local directory and passes the recorded history of the game to the dll. The expert dll then calls the plateau engine dll to get a list of all the possible moves, selects one at random, and passes it back to VB.
A readme is included in the package with a few more details and the code is liberally commented throughout. I've tried to add the comment "jwa1999" to any section that deals with additions since the 1.4(current) Virtual Plateau release.
Won't people pay for better computer opponents? -----
You bet they will. This has been the number one request since Virtual Plateau came out. I'll make a standing deal on any salable components: I'll publish your component on the Plateau web site and we'll split the proceeds 50/50.
Existing bugs in the Plateau code? -----
In the three years that Virtual Plateau has been out there have been two reported bugs. Neither of which I've fixed. I have always been in the "major rewrite" mode, therefore waiting until certification of the next official release before cleaning out these bugs (if they were still there). Well, that next major release never happened so I never got around to looking into these bugs. I'll put some more information on these on the email list.
One was a situation where a particular piece was not allowed in a prisoner exchange but another one of equal point value was allowed. The exchange was able to proceed with the other piece, so this was a more or less inconsequential bug.
The other bug was a strange situation where the beginner computer opponent captured more pieces from a stack than was allowed and in the process won the game! -- not inconsequential, sorry.
Suggestions for enhancements: -----
Advanced Opponent interface:
The first thing to be done is to work out the interface between Virtual Plateau and advanced opponent dlls. Once this is finished then work can start on these advanced opponents. The basic idea is to work out a system where advanced opponents can be easily switched in and out. A good way to do it would be to drop specifically named dlls in the same directory with the plateau executable.
PBEM (Play By E-Mail):
While Virtual Plateau has had a facility for two players to exchange encrypted moves via email, it needs to interface with standard PBEM systems such as "Richards PBEM Server". The hard part with Plateau is the hidden information which, of course, needs to be kept absolutely secret. There are two ways to go about this. Either send encrypted full information moves/games back and forth between the players, or have a third party retain full information and forward only the information allowed to each of the players.
Live Play across a network.
Other operating systems especially Linux.
Internationalization.
Warm regards,
Jim Albea
Inventor of Plateau
plateau@plateaugame.com
The source:
Version 1.4.1c Uploaded Nov. 21, 1999 Original Version 1.4 plus "C" code extensions for engine and player.