Voyager Client Framework
What is the Voyager Client Framework?
The Voyager Client Framework ('VCF') is an attempt to provide a common platform
The VCF is a layered, pluggy architecture: a batch of data-specific modules at the back end manage current/saved turn files, turning them into standard data objects. A middle layer handles the basic GUI functions (skins and player logon), and exposes these data objects to the front-end. The front-end is a plug-in system that dynamically loads 'small' voyager plugins written by interested programmers (you), and new skins drawn by voyager-inspired artistes (also you).
Why do we need it?
Lots of people over the years have had various good ideas about useful features that could be added to the client, ranging from fancy starmaps through to 'helper' A.I.s to help process long survey reports. Other ideas have included fancier 'commercial quality' graphics, lead-newbies-by-the-hand wizards, and so on.
The difficulty is that the effort of managing (reading/writing/parsing) turn data has usually sucked most of the time and enthusiasm of the developers, and of course everyone is off doing their own thing. While many voyager players are IT people, most are too busy to devote serious time to developing a client. The idea of the VCF is by providing a common base, people will be encouraged to write 'components' for the GUI, without having to slog through the data management, and that these components can be used together to create a rich GUI for all players.
How do I run it?
The short answer is 'download the zip file, unzip the java sources/classes, and use the runVCF.bat file'. (Spot which platform I'm currently using.) If you're on a linux box or similar, you'll need to convert that .bat file to a .sh script, which (I think) just means replacing M$ backslashes with forward slashes, and I think you'll need to change ';' to ':' in the classpath.
To run it directly from the command line, the raw invocation (as featured in the batch file above) is simply:
java -cp .;classes;plugins; com.pegacat.vcf.VoyagerClient
When you're ready to extend it by writing plugin voyager editors, simply place your classes (zipped or raw) in the 'plugins' directory - but have a good look at the example plugins first, and make sure they're working as specced before you try anything!
How do I help?
The main idea though is for people to write plug-ins! The easiest way to do this is to extend the 'BasePlugin.java' class, although any class that fully implements the 'Plugin.java' interface will work fine. Simply write your plugin, pop it in the 'plugins' directory, and the framework should magically pick it up the next time it runs. (I'll be putting up a separate page describing how to do this in more detail, in the meantime there is a reasonable amount of doco in the source files of the two classes described, a whole pile of javadoc, and some example plugins, as well as Korny galactic starmap.)
The main point to note is that you don't have to do any work with, or even recompile, the base VCF code in order to write a working plugin.
O.K., that's it for now - will update soon with a to-do list, status report,
source control suggestions, java doc etc.
In the meantime, mail me at