D&D Character Sheet

This is an idea page for the D&D Character Sheet program being developed by Tristan in C#.

Contents

Motivation

There are a large number of character sheet programs for D&D 3rd edition, but none that I have found are intended to be used concurrently by everyone at a game session. This project aims to create a character sheet program that allows interoperability between all players of a campaign. It is also intended to be flexible and assume very little knowledge of anything more than the basic D&D rules so that people who play rule variations or don't strictly obey certain rules can reflect this on their character sheets. The power of the 3rd edition ruleset is that it is flexible, and so it seems like a character sheet that takes away this flexibility is not doing its job.

Interoperability

Even though communication between different character sheet clients was the driving force of this project, it is actually the aspect that will be implemented second. Reasons for this choice are in the following section. After a flexible character sheet has been implemented, these features will be worked on:

Note that security is not anywhere on this list. It may be implemented in the very final stages of the project, but is a very low priority. If you don't trust the people you are playing with, chances are you're playing with the wrong people. This program is meant to be used in a LAN setting, not across the country.

Flexibility

Flexibility is the most important property being considered at every level of program creation. Everything auto-calculable is done through equations read in at program run-time. These dictate what values update when a user changes a different value and how they update. The equation expression language used for these equations can be found at the main equation language topic.

All of these options and changed default values are going to be saved with characters rather than the program. It seems that most of these changes are due to new feats, races, or classes not mentioned in any of the handbooks (or at least not integrated with the program).

Code Architecture

Main Article: Code Architecture

The program is being written in C# using WinForms for the GUI. There are several reasons for this, one of which is that I first used C# over the summer and decided I really like the language :) Besides this, most of the people I play D&D with use Windows, and I would rather use a native GUI for its target audience than make everyone install GTK+ on their computers. .NET 2.0 is very likely to be on all Windows computers (although not certain). It will remain .NET 2.0 compatible so that it works under Linux via the Mono project. As the Mono project develops, this design decision may too. I have also considered writing a separate GUI in GTK#, but this will come after a majority of the original program features have been developed, if at all.

Since I'm writing this as much to teach myself about good coding practices as anything else, I'm trying to abstract parts of the program away from each other wherever possible. This would be a good practice anyway, since this is a somewhat extensive project.

Saving/Loading Information

The save files are going to be all XML, with the possible exception of the global configuration file. It seems more reasonable to have that in a standard "variable=value" type format so that it can be edited more easily by users.

Check out current intended file formats on the save file information page.

Progress

A large portion of the character sheet form for the UI is complete. Still to be implemented:

The program is set up to read in nearly everything from configuration files; so far, it reads in the attribute descriptions and expressions for how to calculate variables based on other variables. The expression parser libraries have been completed (both the string version and the math version); each is missing a few functions that I want those editing these expressions to be able to use, and neither has been really heavily debugged, but they do currently work for most equations. Characters can be saved and loaded; unfortunately, all these things happen for static text files right now, you can't save to two different locations, since right now I'm just trying to get the basic functionality working. The rest will all come when I get configuration files all set up.

I am currently working on implementing the skills section; it sorta works, there's a lot of loose ends and cleanup to do before it's finished though. After this I want to do a general cleanup of the code, catch a lot more edge cases in everything I've written, and set everything up to use configuration files (which will allow the code to work cross-platform without recompiling, finally!) before I move on to spell lists. I also need to figure out what happens when the program loads (Default characters to load? Make a new blank sheet? etc).

Retrieved from "http://upl.cs.wisc.edu/mediawiki/index.php/D%26D_Character_Sheet"

Personal tools
Log in