Thursday, October 29

Plattforms for character generators

If you want to make a character generator for a game, there are a number of tools to use. Each of these have advantages and disadvantages, and I'll try to make a short summary here. I'll try to look at aspects like easy of use (as a developer), cross-plattform compability and what is required of the user.

Microsoft Excell

This is one of the major spreadsheet tools on the market. It's cell-like strukture and built in functions make self calculating character sheets easy to build. It's also fairly easy to deal with more advanced stuff (like turning a cell into a drop-down menu). However, after a while you run out of "out-of-the-box"-solutions, and that's when you have to come up with your own solutions. These can sometimes be both big and counterintuitive (time permitting, I'll see if I can write a post with some examples).

If you are into scripting, Excell so far has scripting possibilities (as long as you are using the Windows version. However, from what I've heard, that might change in the future).

Of course, for the user to use the Excell sheet, they need a copy of Excell. While MS Office is a rather widespread tool, it's not something to take for granted, and getting a copy isn't exactly sheep.

Google Spreadsheet

In it's suite Google Docs, Google also added a Spreadsheet tool, similar to Excell. Most of what I wrote above also applies to Google Spreadsheets. There are, however, some differences. The main one is of course that the latter is an online application. You can invite others to your application directly, and they can make a personal copy of the spreadsheet.

Google Spreadsheet is also slightly smaller than Excell. While it still has a whole heap of tools and functions, it's not as powerful as Excell. Also, it of course requires internet connecion to use.

As a side comment: There's also other alternatives when it comes to spreadsheets, like Open Office (free, both win, osx and linux), Numbers (a nifty little spreadsheet tool for osx) and Star Office. These are all usable, and have similar pros and cons as what I've written above.

Flash/ Flex/ Air

These three are basically different implementations of the same core technology (to the extent that Flex Builder changed name to Flash Builder in the latest edition).

When we think about Flash, we mostly think about annoying banners and ads on webb pages. However, Flash is so much more than that, and if you are fairly profficient in Actionscript, you can build advanced applications in a fairly short time.

Flex and Air are technologies that build on the Flash framework, but while Flash in itself (the software, that is) is aimed at multimedia and presentations, Flex and Air are more focused on Application Development.

The startup is a bit tougher in these tools, since you have to learn at least a little Actionscripting before you start. But if you master that, I'd say that Flash (etc) is a fairly good way to go, because you can develop applications for it rather quickly, it's compatibale with both Windows and osX, and as long as the user has Flash Player installed (most have, and it's free) anyone can use it.

Java and/or C#

If you have some programming experience, it might be worth looking into a more full fledged programming language like Java or C#. The advantage here is that many programming languages have pre-made functions and classes for dealing with lists and collections, something that is very usable when you are creating characters. Both Java and C# (and others) have graphical tools for laying out the GUI, which saves you a whole lot of typing (if you are not like me, and like writing the code for the GUI as well... ).

With Java, you can distribute your application to anyone with the Java Runtime Environment installed (which is fairly common), and it's cross-plattform compatible. Other languages, for instance C# is limited to one OS (Windows, in the case of C#).

Other scripting languages

There are a number of powerful scripting languages like Python or Ruby, and these can be downloaded free. However, they still require some programming knowledge (unless, of course, you are ready to learn a little coding). On the other hand, they are often very poweful, and you can achieve quite a lot with just a few lines of code. Unfortunately they are hard to make completely stand alone, and often the end user has to download the language package as well to run it. They also can be lacking in the GUI-area slightly.

Databases

One way to make a character build is to use a database enging like MS-Sql, MySql or Oracle. Some of these tools are free to download and use (Ms-SQL Express, various MySql tools) and there are a number of nifty little features and advantages you get from using a database.

However, relational database design can be quite tricky if you are not used to it, and a complex thing as a character generator can easy turn into 50-100 different tables to keep track of everything (speaking from experience. I once did a database-based character builder for Mutants and Masterminds).

Also, there is no easy way to distribute "just" a database, but instead you have to build a front end using something like Java, a scripting language or Flash.

Web-based

Using a database as above, and combine it with a scripting language like php is also a way to go. This, as well as the other tools, does require some knowledge of the following areas:

HTML+CSS
Database Design/ SQL
php (or similar)

However, as long as you got somewhere to put it (that is, a web-server), you can find all the tools for free, and distributing is easy (it's a webpage).

Summary

Creating a character generator does require some hard work (of course a bit depending on what game system you are using) and I wouldn't recommend anyone to do that as a starting project if they have no experience in a given tool. However, as long as you got the initial parts understood, a chargen is a great (if hard) way to increase your skill.

One of the main areas to look at in any given environment is how it deals with lists, because character generation is a whole lot about building lists by picking items from other lists.

No comments: