• Welcome to the new COTI server. We've moved the Citizens to a new server. Please let us know in the COTI Website issue forum if you find any problems.
  • We, the systems administration staff, apologize for this unexpected outage of the boards. We have resolved the root cause of the problem and there should be no further disruptions.

Software Development

As for doing software, that is quite simple, just do it Steve Jackson style

  • Get a professional software company
  • Give them clean specifications what you want
  • Pay them properly

And you get a good, working software (GURPS Chargen for 4e) that can and will be maintained/supported.

Since that is unlikely to happen you will likely get the typical open source project with a half-supported, semi-functional fanpiece that gets abandoned when real life/other interests/the job takes precedence.

========================

But if one still wants to toggle the project:

  • Use an object oriented language
  • Use proper design patterns and read up on best practice(1)
  • Understand the platform you use(3)
  • Write the logic totally independend from the GUI and place it in a number of libraries
  • Separate data storage/retrieval from the generation so you can re-use the storage library
  • Plan for multiple programs that can exchange data i.e
    • System generation that delivers data to chargen
    • Library data that can be used for equipment
  • Do the GUI last and as a separat layer using Facade patterns etc. That way you can replace it with something else easily
  • Remember the Model-View-Controller concept!!
  • Use JAVA 1.6 or better(2). Unlike C++/QC you don't need to recompile for each target platform (Platforms in case you target this OS[/url)
    [*] Get somebody on the team that understands usability. Follow usability guidelines!


(1) Effective Java, Code Complete, Head First Design Patterns, Java Swing etc.
(2) Yes, the Church of Jobs gets left behind. I am an Atheist so that's okay for me
(3) A lot of people don't and end up with slow, cluncy software. Learn the tricks and details not just the general overview
 
Be Careful Of Development Dogma!

But if one still wants to toggle the project:

  • Use an object oriented language
  • Use proper design patterns and read up on best practice(1)
  • Understand the platform you use(3)
  • Write the logic totally independent from the GUI and place it in a number of libraries
  • Separate data storage/retrieval from the generation so you can re-use the storage library
  • Plan for multiple programs that can exchange data i.e
    • System generation that delivers data to chargen
    • Library data that can be used for equipment
  • Do the GUI last and as a separate layer using Facade patterns etc. That way you can replace it with something else easily
  • Remember the Model-View-Controller concept!!
  • Use JAVA 1.6 or better(2). Unlike C++/QC you don't need to recompile for each target platform (Platforms in case you target this OS[/url)
    [*] Get somebody on the team that understands usability. Follow usability guidelines!


(1) Effective Java, Code Complete, Head First Design Patterns, Java Swing etc.
(2) Yes, the Church of Jobs gets left behind. I am an Atheist so that's okay for me
(3) A lot of people don't and end up with slow, clunky software. Learn the tricks and details not just the general overview


I take specific issue with the two items highlighted in color. An object-oriented language is a tool that assumes a certain paradigm for code development, and that's not necessarily how any particular programmer was trained. You use the tool that works best for you, whether that tool is painted in the latest and greatest color or not. (I never could wrap my brain around OO, and to this day fail to see why it is inherently better than any other code/data model. I was brought up to believe that a strict separation of code and data was a good idea, except in those cases - like parsing decision trees - where code WAS data, and for that we had LISP. To me, the more important part of the modern GUI paradigm is the event-driven programming, which I've done in the past, before OO was a buzzword.)

As far as using the Java environment... something that is cross-platform, and reasonably consistent across those platforms, is certainly a good idea. Something that has those virtues and doesn't require recompiling for every target is even better. But prescribing the environment is falling into a similar trap to prescribing a methodology, a language, or a data model: It may not be the best tool for you, or it may not be the best tool for the job.

Most of the rest isn't unreasonable, though much of it can be debated, on much the same grounds. The short form is... don't fall into the trap of thinking that the current thinking, or the thinking that you were trained in as Received Wisdom, is the best/only way to do the job. In every industry, there are going to be fads, and ... some of them might not be best in the long run. Be familiar with as many techniques, tools, and paradigms as you can, and judge for yourself which is best for you and for your project.

That said, there is a key omission...

I cannot stress strongly enough that the first thing that you need to do in software development is to clearly define your goals. If you do not have a clear idea of what you want to do, then it's not going to matter how good your tools are, or how skilled you are, or what paradigm you use; your result is going to come out muddled at best and unusable in the more normal case. I've been there. Many times. Both on personal projects, and on projects where defining the goal was someone else's responsibility. (In fact, I'm still there to some extent, with Freelance Traveller. And that's not even a software project in the sense under discussion.)

It's cliché that programmers hate writing the non-code documents that a project needs - but those documents need to be written, because they define the project. After you've done that, take those documents to the users, and go over them with them. Then go back and redo the documents. Repeat. When you go through a discussion cycle with the users and don't end up making changes to the design documents, freeze the design documents. If you don't, you're setting yourself up for "mission creep". If you're lucky, you won't write a line of code for a month. If you're not - which is the normal state of affairs - you won't write a line of code for three months or more. But when you do finally write code, you'll have a clear idea of what you're writing, and you'll write better code because of it.

Even if you're not doing this for users, but only for your own entertainment or education, do the design documents anyway. It's good practice (in both senses), and it helps you get clear in your own head what your want out of the project.
 
After you've done that, take those documents to the users, and go over them with them. Then go back and redo the documents. Repeat. When you go through a discussion cycle with the users and don't end up making changes to the design documents, freeze the design documents. If you don't, you're setting yourself up for "mission creep". If you're lucky, you won't write a line of code for a month. If you're not - which is the normal state of affairs - you won't write a line of code for three months or more. But when you do finally write code, you'll have a clear idea of what you're writing, and you'll write better code because of it.

This paragraph omitted, in my experience, is the single biggest reason for dev failures if the goal is clearly known. It accounts for cost overruns and end user complaints in a very large measure.
 
Having programmed in half a dozend languages (including C/C++/C++ with MFC, VB, Fortran) and under more than one paradigm the choices of OO and JAVA don't come as a lark but from 20+ years of experience. This is so far the combination that allows best code reuse and easiest change of GUI including the GUI technology (I.e SWING->Web based/HTML->SOA)

Oh and MVC is event driven ever since it was introduced in Smalltalk (That is purely message driven). And Patterns are not linked to programming languages either.

Oh and I did not miss the specification part, I just put it in the first part of the message:

Give them clean specifications what you want
 
OO

I think the key here is where he says he has not wrapped his head around OO and then goes on against it.

I was also in that same boat. Old school programmer confronted by OO. It was REALLY hard for me to understand OO also!!!!! Just go for it and in a good language like Python. You will get it quickly enough!

The point about event driven VS normal programming is a great case for OO. You can make one Class that is for the GUI code and another that is for the Traveller code. The two will only meet in a third part that is used to bring the parts together. It is really a much easier and bug free way to program and that is why it is the current (20 years or so now?) "fad".

Basically OO is taking your data types and designing them and tightly grouping code to each data group. Maybe this link will help you! Really not using something because you don't understand it, is a poor way to go IMOHO.

http://www.voidspace.org.uk/python/articles/OOP.shtml

I really dislike Java. It is true that it would be a good choice but the best?? Really it is not much more that an C++ with garbage collection and a compiled machine to keep you from having to compile for each type of system after you write your program.

From some web page: "Python has no particular weaknesses: It's a great language for beginners, it's a great language for large projects and teamwork, and it enjoys a breathtaking array of convenient accessories. Python is the one language with which we feel safe in recommending for all situations. It's the market leader in several areas outside the United States. It's a good, clean language, and many important applications have already been written with Python. Greatest liability: Tkinter is slow for some applications."

Python is 5 to 10 times more concise that Java leading to faster development times and less errors! It has dynamic typing. You never need to compile and you get to type a LOT less do to its concise nature. It runs much slower but with modern computers and also because the Traveller program does not need speed, Java's speed is not needed. Also within a year or so, python will be almost as fast as Java. Many fewer bugs, much faster development times, and very readable code leads to my conclusion that Python is much better than Java for this programs need.

I agree with everything else that was said. I must say that coming across as THE expert with THE RIGHT WAY is a bit annoying! Donating fact based ideas and help is much nicer.

BTW one of the most important steps for the programming team is picking out the right tools for them to use. I know with my big project that I had to go back and change my picks about 3 times in a year because my choices had been bad. This lead to relearning the tools 3 times and wasting a LOT of time. Such is the process of learning. I ended up with Blender 3d, Gimp, Python (C or C++ to should I ever need the speed but I have not yet) Panda3d, postgreSQL, and Alchemy as my main tools for writing my MMORPG. To this day I am very happy with my choices. I do wish that I could combine Panda3d and pyQT!!!!!!

PyQT is a wonderful tool but you have to pay for it, if you want to sell your program but if you plan on staying open source then it is free.
 
Last edited:
But if one still wants to toggle the project:
<snip>

Generally good points, except for the one about Java. This is quickly sliding into “my language is better than your language”, personally my vote is for C#.NET ... but I recognise that that is an opinion based on my own experiences, YMMV.

On the subject of OO: I too grew up with the idea of strict separation of code and data (being a COBOL programmer for many years). But now I am a firm convert to OO. It took a while for me to finally “get it”, and I still occasionally fall back on old ways of thinking from time to time, but I do think it is a superior paradigm for dealing with complexity. (I admit the terminology used does sometimes make the subject somewhat opaque for beginners, it certainly caused me some problems.) But to those not using OO yet I’d say it’s certainly worth another look.

But I think robject said it best ...
write in the idioms you are most familiar with, and just go ahead and do it. Be as considerate as you are comfortable with; but the main thing is to produce something useful for yourself -- if you find it useful, others will too.
 
Care to post why you think C#net is the way to go? I know that making it web based is one good way to go because everyone can use it without problem. On the other hand web based stuff can be a real pain to write.

+1 for write in the style and lang you know. I can say from experience that open source programs are mostly written by one person. The helpful crowds of programmers will not show up until the project is finished and popular. Then, you might get some help for version 2.
 
C# or VB.NET are both nice languages (Did some test-clients in VB.NET for the WiMo 5/6/6.5 smartphones). The reason I did not recommend them is:

  • They are restricted to Windows if you want to use current .NET versions(1)(2)
  • You need to buy the Visual Studio for Mobile platforms except WiMo7(3)
  • You miss out on some great platforms and frameworks(4)


(1) Mono is restricted to .NET2.0 or lower currently
(2) With the changes in Novell it remains to be seen what happens to Mono
(3) WiMo7 is supported by VS Express but that needs additional skills in Silverlight
(4) Android being the first among them.
 
Last edited:
I really dislike Java. It is true that it would be a good choice but the best?? Really it is not much more that an C++ with garbage collection and a compiled machine to keep you from having to compile for each type of system after you write your program.

JAVA is much more than the language. The main difference to C++ is the frameworks that exist and take over a lot of work. Look at Wicket (for AJAX-enabled Web-Applications) as one example. Reducing JAVA to "C++ with Garbage collection" clearly misses the mark (Besides you can have Garbage Collection libs with C++, they replace the base malloc/free calls)

From some web page: "Python has no particular weaknesses: It's a great language for beginners, it's a great language for large projects and teamwork, and it enjoys a breathtaking array of convenient accessories. Python is the one language with which we feel safe in recommending for all situations. It's the market leader in several areas outside the United States. It's a good, clean language, and many important applications have already been written with Python. Greatest liability: Tkinter is slow for some applications."

Python is 5 to 10 times more concise that Java leading to faster development times and less errors! It has dynamic typing. You never need to compile and you get to type a LOT less do to its concise nature. It runs much slower but with modern computers and also because the Traveller program does not need speed, Java's speed is not needed. Also within a year or so, python will be almost as fast as Java. Many fewer bugs, much faster development times, and very readable code leads to my conclusion that Python is much better than Java for this programs need.

Speed is of limited interest but can be important if you want to support mobile devices. And quite a few Smartphones support either JAVA ME or Android these days while few (IIRC only the Nokia Maemo/MeeGo units) support Python

Dynamic typing (and the lack of a compiler) can lead to "interesting" effects since there is no type checking before the program runs. Some like it, some don't

I agree with everything else that was said. I must say that coming across as THE expert with THE RIGHT WAY is a bit annoying! Donating fact based ideas and help is much nicer.

Well, I DO program for a living since 1987 and have amassed quite a bit of knowledge about programming tools and languages. I may not be THE expert but I am AN expert. I don't make recommendations lightly or based on "fanboy" issues nor am I fixed to JAVA (I currently work in both Delphi and JAVA i.e).

If you need more details/information - ask
 
Last edited:
JAVA is much more than the language. The main difference to C++ is the frameworks that exist and take over a lot of work. Look at Wicket (for AJAX-enabled Web-Applications) as one example. Reducing JAVA to "C++ with Garbage collection" clearly misses the mark (Besides you can have Garbage Collection libs with C++, they replace the base malloc/free calls)

I admit to having very limited JAVA experience due to the fact that after a month of it I started to feel like puking. On the other hand I don't see where a framework is any better than something like Panda3d for Python or C libraries like ODE. I would love to here your explanation about that.

http://www.panda3d.org/ (even calls itself a framework! I never noticed that before)
http://www.ode.org/

Speed is of limited interest but can be important if you want to support mobile devices. And quite a few Smartphones support either JAVA ME or Android these days while few (IIRC only the Nokia Maemo/MeeGo units) support Python

I have not heard if we are going after that market or not here. If we are then Java might be a better answer on the other hand Python will likely be supported on all phones within a year or so unless blocked by the maker. Also even there, I don't think speed is an issue with something like a RPG program. I mean, I even wrote them on my C64 and now days Cell Phones play doom with ease.

Dynamic typing (and the lack of a compiler) can lead to "interesting" effects since there is no type checking before the program runs. Some like it, some don't

Yes (Not that I have EVER had a problem with it), but Python is proven to have less bugs and to be developed faster that other languages. That is hard to beat.

Well, I DO program for a living since 1987 and have amassed quite a bit of knowledge about programming tools and languages. I may not be THE expert but I am AN expert. I don't make recommendations lightly or based on "fanboy" issues nor am I fixed to JAVA (I currently work in both Delphi and JAVA i.e).

If you need more details/information - ask

Got you beat. LOL, 1982. Started as a pro with C64 6502 assembly and of course C64 Basic programming. I had full page ads in compute! and compute Gazet (SP?).

My question is, how much time do you have with Python development? It is hard to say which is better, if you have not learned both to an equal level (yes, my JAVA skills are lacking but not absent).
 
About as much as you have with Java. Looked at it since it was one of the languages availabel for the Nokia N770. Did not like it. (I also did some PHP and PERL and currently some ECMAScript). Besides I don't like the use of TK for the GUI (Did TCL/TK for the "Graphical Programming" course during university)

As for the "faster development" - guess that depends on your experience with a language. I come from the C->C++->Java route (With Modula-2 as a sideshow(1)) when it comes to Java.

Any links to show the "less errors" part? Python is considered a solid language and has all the benefits (and problems) of an interpreter. But "less errors" (In the sense of "internal/language" errors)?


Cell phones/Smart phones are IMHO a market one should look at. The current generation has good screen size (800x480 in a HTC Desire or Nexus) and decend memory/processing power. And they are "always there" boxes since they are telephone/navigation system/notepad/calculator all rolled in one already. Won't work for all stuff but I can see quite a few apps there:

  • NPC database for the referee
  • Library data (Maybe with an LCARS "screen")
  • Character storage (Char + Background)(2)
  • Character generator and NPC generator should work
  • Nugget repository (For adventures, store the scenes and GM comment)



(1) Official training language on german universities back then
(2) I have long used text files on a WiMo 5 smartphone (HTC Athena) for that. Never forget a char sheet again :)
 
About as much as you have with Java. Looked at it since it was one of the languages availabel for the Nokia N770. Did not like it. (I also did some PHP and PERL and currently some ECMAScript). Besides I don't like the use of TK for the GUI (Did TCL/TK for the "Graphical Programming" course during university)

For the GUI stuff I use pyQT. I don't think you can get much better than that!
Python grows on you. I found it hard to use at first because you must program in a different style that what I was used to from basic, assemble, and C.

I have programmed in a lot of languages. 6502 Assemly, many forms of basic in cluding visual, python, C, C++, PHP, forth, Prolog, JAVA, pascal, (just a VERY little bit of modulus 2), LOGO, perl, java script, that is all I can think of off the top of my head. LOVED prolog! To bad it is not very useful.

As for the "faster development" - guess that depends on your experience with a language. I come from the C->C++->Java route (With Modula-2 as a sideshow(1)) when it comes to Java.

Naturally to some degree but some languages are just better than others and often they have one task that they are great at. Prolog comes to mind or logo or forth. I think for general programming Python is best when speed is not an issue.

Any links to show the "less errors" part? Python is considered a solid language and has all the benefits (and problems) of an interpreter. But "less errors" (In the sense of "internal/language" errors)?

http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf
To sum up this link. Java takes 2 times as long for the same results and ends up with 2 times the lines of code. I would see this as meaning a python programmer can do 2 times as much as a JAVA programmer with the same bug rate per HOUR for both. So half as many bugs per hour.

Best I could find so far. My info comes from a book of all things. :-)
Page 4, first chapter of the book. Learning Python by O'Reilly.


Cell phones/Smart phones are IMHO a market one should look at. The current generation has good screen size (800x480 in a HTC Desire or Nexus) and decend memory/processing power. And they are "always there" boxes since they are telephone/navigation system/notepad/calculator all rolled in one already. Won't work for all stuff but I can see quite a few apps there:

You very well might be right there. I don't use cell phones and I have never looked into programming them. I know that QT works on phones though.

  • NPC database for the referee
  • Library data (Maybe with an LCARS "screen")
  • Character storage (Char + Background)(2)
  • Character generator and NPC generator should work
  • Nugget repository (For adventures, store the scenes and GM comment)

I can see that. So for me the question is, can python do that on cell phones and my answer is that I don't know. I could easily see this being a cloud app as well!
 
Last edited:
From memory:

Used commercially

  • Fortran 77 (Siemens SIECOM and PC)
  • Siemens R/M assembler
  • STEP-5 for SPS
  • C (Quick-C, Turbo-C/PC, MS-Visual Studio + MFC, MS C/C++ on OS/2, C-Compiler on SCO Unix)
  • JAVA since JDK 1.2 (Applications, Applets, ME/Mobile, J2EE/EJB and Web/Wicket or STRUTS and Java in the Database)
  • PHP (IIRC PHP 4 and/or 5)
  • Visual Basic Versions 3,4,6 and the VBA versions in Office
  • VB.NET on .NET 2.0
  • PL/SQL and Transact/SQL
  • Clipper (A dBase GUI add-on/dBase based programming language)
  • Delphi 2007
  • ECMAScript
  • UNIX BASH and Windows BATCH

And all the "non-programming" stuff like UML, Database diagrams, writing specifications etc.

Privat use including education

  • 6502 assembler (C64)
  • 68000 assembler (Atari Mega ST4)
  • PET 2001 and CMB 8032 basic
  • C64 basic including quite a few add-ons
  • Omicron Basic (ST)
  • Modula-2 (Logitech M2 and a Atari free variant)
  • Pascal (Turbo and the one from DataBecker on the C64)
  • Turbo-C on the Atari and DataBecker C on the C64
  • Scheme
  • A bit of smalltalk
  • TCL and the TK add-on
  • ADA just in case I ever have to re-program an ICBM

Programmed on C64, ATARI TOS/GEM, WiMo 5/6/6.5 and the Java ME on a Motorola Timeport, MS-DOS since 2.x, Windows since 3.1, OS/2 1.x and 2.x, SOLARIS (since it was SUN-OS), SCO XENIX and UNIX, SICOM and S5 process control units, VMS and even got a bit of CP/M 3 and CP/M 86. Currently working up on Android.

=============================

Some books I can recommend:

  • Algorithms and Data Structures (in Modula-2) for a solid introduction
  • Code Complete 2. Edition (Practice of software design)
  • The Mytical Man Month (Large projects and their pitfals)
  • The Art of Computer Programming (All three books)
  • Effective Java 2nd Ed (Java tips and tricks)
  • Head First Design Patterns
  • O'Reiley "Swing" (For fast/stable JAVA applications)
  • Unix Power Tools
 
Any links to show the "less errors" part? Python is considered a solid language and has all the benefits (and problems) of an interpreter. But "less errors" (In the sense of "internal/language" errors)?

http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf
To sum up this link. Java takes 2 times as long for the same results and ends up with 2 times the lines of code. I would see this as meaning a python programmer can do 2 times as much as a JAVA programmer with the same bug rate per HOUR for both. So half as many bugs per hour.

Best I could find so far. My info comes from a book of all things. :-)
Page 4, first chapter of the book. Learning Python by O'Reilly.

Come time (or a Nokia N9) I'll have to take another look at Python since Nokia is to cheap to licence JAVA/ME.

You very well might be right there. I don't use cell phones and I have never looked into programming them. I know that QT works on phones though.


I can see that. So for me the question is, can python do that on cell phones and my answer is that I don't know. I could easily see this being a cloud app as well!

Well to my best of knowledge a "native" Python only exists for the Nokia MAEMO/MEEGO platform. ASE for Android seems to go in that direction but I admit scripting languages are not to my liking.

As for clouds, well if you go to a Web-Application/Web-Service (And that's what a cloud ultimately delivers) than the output platform does not matter (much). Give it a decend-sized display and it works. One could even use that apple thingy(1).

The main benefit of Clouds is that you don't have to host your own server. For privat users the offers are currently "free" so if one does the app as a "ready to deploy" package for say the Google App-Engine (Currently the cheapest option for privat persons IIRC)



(1)held in the right hand since you need a connection to use Webapps. As an alternate add the 23rd use for a condom
 
Care to post why you think C#net is the way to go? I know that making it web based is one good way to go because everyone can use it without problem. On the other hand web based stuff can be a real pain to write.

I think there is a misconception there: C#.NET is not specifically web development. In .NET you can do web development, or winform development, or back-end server development, or mobile development …

I have a number of years professional experience doing winform development in C#.NET. I only recently started doing web development in .NET as well (and yes web based stuff can be a pain). Universe2, which is now half finished, is very much a winform application, and is written in C#.NET.

C#.NET is the way to go for me because I know it. If you know Python then that would be the way to go for you. YMMV.
 
Anything .NET automatically excludes Mac and Linux; both of which are disporoportionately high presence amongst gamers. It's unportable code, and while close to C++, it's well more than just a recompile away. Further, .net is not happy under WINE, either.

JAVA or python are both excellent languages. Both have an interpreter requirement, tho.

C++ with good organization is the best bet for multiple-platform no-other-install-needed choices, but does mean recompiles after recode of the windowing code, unless certain cross-platform windowing libraries are used.
 
Anything .NET automatically excludes Mac and Linux; both of which are disporoportionately high presence amongst gamers. It's unportable code, and while close to C++, it's well more than just a recompile away. Further, .net is not happy under WINE, either.

JAVA or python are both excellent languages. Both have an interpreter requirement, tho.

C++ with good organization is the best bet for multiple-platform no-other-install-needed choices, but does mean recompiles after recode of the windowing code, unless certain cross-platform windowing libraries are used.

Even than you have to recompile for each operation system and sometimes for each variant of the OS. And you get problems like "use dynamic linking" (small code but you risk missing dll) or "static linking" (huge programs).

If you want to include the CoJ that the best bet is something that also runs there, restricting the choice to

Python 2.3.0
Java 1.5
Mono / .NET 2.0
gcc and QT

and praying that the nut<<<apple at the top does not suddenly decide something of the above is "evil" and forbidden.
 
Some thoughts on the stuff:

  • Build multiple small tools that can exchange data like
    • System generation to build home systems
    • (Sub)sector mapping tool (Replace maps, Travell planing, use data from above)
    • Character/NPC database (For GM and players)
    • Trade tool
    • Ships manifest tool
    • Library data
    • Equipment data (Maybe with data sheet view like DGP did in the Travellers Digest)
    • Character generation (Using System generation, library data, equipment data)
  • Use the same Look/Feel and GUI guidelines for all programs
  • Allow for printing
  • Allow for generic (XML) data export/import

Storage Library

  • Low level library
  • Define an interface towards the tools for data storage
  • Implements an Interface for the "save" method so you can change the file/storage handling
  • Output should be XML for use in non-related programs

General Data Library

  • Contains classes to represent the results of the various tools
  • Allows to incorporate data from one tool in another
  • Basic objects with no logic
  • Uses another library for storage/retrieval

Business Libraries

  • One for each tool
  • Implements the methods but not the GUI
  • Exports results with the two above libraries
  • Implements additional data classes if necessary
 
Some thoughts on the stuff:

  • Build multiple small tools that can exchange data like
    • System generation to build home systems
    • (Sub)sector mapping tool (Replace maps, Travell planing, use data from above)
    • Character/NPC database (For GM and players)
    • Trade tool
    • Ships manifest tool
    • Library data
    • Equipment data (Maybe with data sheet view like DGP did in the Travellers Digest)
    • Character generation (Using System generation, library data, equipment data)
  • Use the same Look/Feel and GUI guidelines for all programs
  • Allow for printing
  • Allow for generic (XML) data export/import

Storage Library

  • Low level library
  • Define an interface towards the tools for data storage
  • Implements an Interface for the "save" method so you can change the file/storage handling
  • Output should be XML for use in non-related programs

General Data Library

  • Contains classes to represent the results of the various tools
  • Allows to incorporate data from one tool in another
  • Basic objects with no logic
  • Uses another library for storage/retrieval

Business Libraries

  • One for each tool
  • Implements the methods but not the GUI
  • Exports results with the two above libraries
  • Implements additional data classes if necessary

I mostly agree with all this. On the other hand if the lead goes with Python then most of what is listed here is already written in the libraries. I think the idea of many small tools that all read and write XML is a great and very important idea.

I would add one thing to the list that is likely the most important. We need to find or make a style that all the programs share. We should pick a few colors and only use those colors in all the GUI elements. Here is an example of that using the Star Trek style. I would suggest the colors come from the LBBs; Black, blood red, etc. Also a font must be pick and hopefully one that is unique to the programs. Also the shapes and placements of the stuff must be designed to keep a flow through all the little programs.

http://adamlevermore.com/2010/08/30/10-great-fonts-for-retro-design/

http://www.youtube.com/watch?v=2vOvDFxn76g&feature=player_embedded#!

PS Python books for programmers. Also, if you have not looked at python in a while you might want to take a look at python 3, it has changed quite a bit.
basic (for programmers not beginners)
http://diveintopython.org/ a great way to learn the language quickly.
Expert. This book was a real challenge for me and I learned a lot.
http://www.artima.com/weblogs/viewpost.jsp?thread=240415
Naturally, read the manual at the Python web site.

PPS If we keep the tools small then we can each work in the lang we like provided we have an XML standard that we share. Down side is that we will end up doing a lot of the same coding over and over in each lang.
 
Totally agree on the "one style/face/colors/fonts" concept. Basically pulling the same trick MS did with Office that "looks the same" for Word/Excel/PPoint.

Finding the right combination will take some experimentation. And they might depend a bit on the general target platform(s). The font must be availabel on all platforms and remain readabel on them, colors must also work. Stuff to play around/do some prototype GUIs.

With the basic libraries I am envisioning something a bit past "write this class to XML". The library would IMHO have a method "writeCharacter(thisCharacter,thisId)" and then handle file generation on the file system (That can be quite different for i.e mobile platforms). Basically a wrapper around the Mapper that is provided by the libraries (In JAVA the mapper would be Castor, JAXB etc) providing the additional functionality.

When building the GUI the size should be kept low. Many Netbooks (like the Lenovo 10-3) and the low end tablet/convertible (Asus MT101, S10-3t) have a 1024x600 screen size. And these are the Windows XP/Windows 7 system one would quite likey find at a gaming table since they are small, cheap, silent and have a long battery life.

I would settle for one language to share code as much as possible. Group projects/Non commercial project must plan for loosing developers for a number of reasons. Having one language gives better chances for the remaining members to take up the work.

With that in mind: Agree on a coding style and naming conventions. And if the language supports integral documentation (i.e like JavaDocs) use them.

Build test cases. Test driven development might not be doabel but when having multiple developers a set of tests that check the external interfaces are extremly useful.

Use a source code control system. Can be as simple as MS Source Safe, will more likely be SVN or GIT. A continous integration system like HUDSON is nice but not a must. Automated build scripts OTOH are a must IMHO. Can be as simple as good ole make or as complex as Maven

Set up a task list system like JIRA or Bugzilla. That way you can keep track of open issues, known bugs etc.
 
Back
Top