Archive for September, 2008

Help is updating to reflect your recent changes

Tuesday, September 23rd, 2008

I recently encountered this lovely dialog box while debugging something in Microsoft Visual Studio 2005. Visual Studio is an Integrated Development Environment (IDE) for Microsoft’s programming languages. In the 2005 version, when one is debugging and encounters an unhandled exception, Visual Studio will pop up a (not so) helpful context box that looks similar to the above image.

Since we have many exceptions that bubble up from our functions, they often have InnerExceptions that are wrapped inside of the current exception. Because the inner exception is usually where the important information about what actually went wrong is kept, I clicked on the prominent “Check the InnerException property for more information” link, expecting the InnerException to then be displayed.

But, instead of the InnerException, I was greeted with this dialog box:

Help is updating to reflect your recent changes

Well this is interesting. Apparently I have made recent changes to something that requires help to update itself. But, I didn’t want to go to help! I wanted to view the InnerException!

Too bad.

Notice that there is no “Cancel” button there? This is also very interesting because the “several minutes” that it is talking about was really 15-20 minutes. During this time, of course, Visual Studio was locked in an unusuable state.

Eventually, when help finishes doing whatever it is doing, a help page is displayed:

This is obviously not very helpful as it doesn’t tell me anything about what is wrong with my application, and I didn’t even want to be here in the first place! I just wasted 20 minutes out of my day!

Some things that are wrong with this:

  • The exception helper dialog box is unclear. It leads me to believe that clicking on a certain link will display the inner exception and does not indicate that it will instead display a help file. (I really needed to click the smaller link below under Actions titled “View Detail…”)
  • I had not made any recent changes. I had been programming or debugging for the last few hours, not making changes related to help files. This was really confusing. The accusatory tone (“your recent changes”) didn’t help matters either.
  • I did not want to be where I was, and there was no way out. The update dialog box had no “Cancel” button, no “Back” button, no “STOP RIGHT NOW AND LET ME OUT” option. To top it off, it used one of those “Infinite Progress Bars.” You know, the ones that don’t actually fill up as time goes on, but keep cycling back and forth.
  • I could not work during this process. Visual Studio was locked behind this dialog box, and because there was no way out, I could not continue working until it finished.
  • The help file was not helpful. Exceptions represent errors that occur during application execution? Seriously? This is ridiculous. I already know this, and it does not help me figure out what actually happened to my application.

RPG Stat and Leveling Systems

Thursday, September 11th, 2008

I have been thinking about RPG stat and leveling systems recently. It seems that most games use a few basic systems: Point Buy, Fixed Stats, and Random Stats. I will focus mostly on computer games, but this should apply to other games as well.

Point Buy

Point Buy is probably what most people are familiar with for computer RPG games. I am generalizing this a bit here though. The standard point buy system from Dungeons and Dragons is explained here.

Many computer games use a modified point buy system. If we generalize, there are two main parts to the point buy system:

  • The player has a pool of points to draw from
  • The may purchase stat points for his character using points from this pool

Fixed Stats

A fixed stats system is one that provides predetermined stat scores for characters. Many games start all characters out with 100 hit points, for example, or if the game has multiple classes, each class may start out with predetermined stats.

Random Stats

A random stats system is one in which the stat points are determined by some random factor. Dice may be rolled, or the computer may use a random number generator in some fashion. Often, limits or options are presented, such as being able to choose the higher of multiple numbers.

In The Game

Most computer games use a combination of these systems. A standard mixture is point buy on top of a fixed stat base. These can also be used during the game for character advancement as well. Not only can stats be improved, but skills and abilities can be selected as well. Other stat bonuses from equipment or skills are often included in the system as well.

Examples

These examples are just games that I am familiar with at the moment.

  • World of Warcraft — Uses a fixed stat system for characters (each class has set starting stats) with an emphasis on increasing stats with equipment and talents. Stats increase by a fixed amount when the character increases in level. Talents are selected using a point buy system. The character receives 1 talent point every level after 9 and talents cost 1 point to improve.
  • Diablo 2 — Uses a fixed stat base (each class has set starting stats) with a point buy system on top.  Each character receives 5 stat points and 1 skill point per level. Stats and skill cost 1 point each to improve. Some quests may grant stat or skill points as a reward.
  • On The Rain-Slick Precipice of Darkness (Penny Arcade Game) — Uses fixed stats throughout the game. Stats increase by a fixed amount when the character increases level. The player has almost no control over character stats. Some quests in the game will increase certain stats, however, but these values are fixed as well.

For me, it is interesting to look at these games and examine how the leveling systems affect my play. I enjoyed playing all of these quite a lot. If I rank these games based on amount of character customization, I find that the games with more customization options are games that I want to replay. I have almost no desire to play the Penny Arcade game again because I have already done almost everything. I do want to play more World of Warcraft, partially because there is a lot that I haven’t done (the game world is very large) but also because there are many ways that I can customize my character. Diablo 2, in contrast to WoW, has a much smaller game world, and I have explored almost all of it, but it also has a very high replay value because of amount of character customization that can be done.