Tuesday, May 25, 2010

Coding coding coding

I am building a turn-builder tool for a role-playing game called Midgard. Each turn has up to 30 actions. Each action has up to six values, and up to now a big problem has been players submitting turnsheets with tons of mistakes (values in the wrong fields, missing required values...). The turn-builder only shows you valid options for the choice you made in the first field, and then only valid options for what you chose in the second field, and so on, until you have enough valid stuff for the action to be ready to submit.

The second through sixth values for an action may need a text box, a number stepper, a picklist, a  combo box (that's a picklist where you can add something you don't find in the list), or a checkbox. That's a max of 3125 combinations of controls, and then sometimes the values are required and sometimes they are optional.

I need to say this from time to time to remind myself why I need to write so MANY lines of code. Thank you for listening.

Monday, May 17, 2010

Getting a useful view of a project

I am a big fan of mind mapping. I usually start working out what's going to be involved in a project in a mind-mapping tool like Mindomo. I have even tried to track a project (what is complete, who owns what needs to be done, how done is it) using a mind map...with pretty poor success. A mind map node doesn't know anything about the state of its children, except that they are there, so there was a lot of repetitive bookkeeping for me in updating how done things were.

I am working on a project right now for a great old turn-based game called Midgard. It's a sort of medieval-with-some-magic political-struggle game where you start out with a couple of friends and a couple hundred retainers and try to make something of yourself in a huge and often hostile world. You are asking, why play a game when I can get that at home for free, and it's a valid question. Which I can't really answer right now, but I will return to it in a future post.

Anyhow, one of the painful aspects of Midgard is entering your actions on the turn sheet in the correct syntax. You can use as many as 30 actions per turn, and each action can have as many as five arguments. "City - Warehouse - Load - [warehouse #] - [quantity] - [item]" and actions like it are very easy to set down in the wrong order.

So I am building the Midgard Turn Builder. Basically, what you choose as the first part of each action governs what the Turn Builder will let you choose or enter for all the other arguments. When this finally gets working, it should reduce blood pressure readings all across the player community, and probably cut the turn processing time dramatically.

I will post again about the Turn Builder as it develops (you are free to go visit now, but the turnsheet screen is only partially hooked up. Come back June 1), but right now I want to show you how I am keeping track of everything I have to do.

I started with a mind map, as is my wont. Here is what it looked like at an early stage:

All the little branches represented things I thought of and tried to organize by some sort of logical method. But how to track what was done, and what needed doing next?

I recently found Goalscape, and it is proving a huge help in tracking the project. Goalscape displays the project as circles within circles. The innermost circles are the general categories, and their 'children' are the tasks within those categories:
The parents know about the status of their children, so as you record progress on a child task, the parent task gets proportionately colored in.

See that orange little thing? I can zoom in on it and see all those little children in a readable way:


Looks like I have some work to do on the code that handles the action arguments!

There are features I am not using yet, because this is a one-person project; however, Goalscape lets you assign deadlines and task owners. It is a young tool, so I bet cool additions are coming soon.

If you have a tangled project, consider flattening it out with Goalscape.