Sunday, January 25, 2009

The Name Game

When Publish 57 notes came out, I got a few flames over the names of some of the new stealable items. Which frankly I accept because to be honest, I wasn't fond of some of the names either. So why didn't I change them? Well, I couldn't come up with something better. Yup, it's that simple!

Naming things or characters is probably one of the worse design challenges for me. First of all, I will think about a totally cool name in French but that sounds unbelievably cheesy in English. I also like the names to actually mean something and be relevant to the item/character they will be attached to. This translates as a lot of time spent searching name databases or trying to make up names that sound badass.

What actually got me posting this was watching our new flock of EMs going through the pain of trying to name their EM and RP characters. Some of them were ICQing me, banging their heads on the wall saying how they had spent hours/days just trying to come up with "the right name". And I could totally relate to that pain because every time I write a new quest or create a new item/reward, I go through that same headache.

Added to this is the fact that many players have a Ph D in nitpicking and will eat you alive for naming things the wrong way. I wish I could remember the details of a case a few years back where a certain resource used for crafting was the source of major flaming. Turns out the Dev had named it the wrong part of whatever the resource came from and players gave him hell saying this is not what is used to make this. This other part is! I thought it was silly to fuss over that, but that stayed in the back of my head.

While I don't believe in allowing ourselves to be bullied into basing content on fear of flames, I do believe that gaming can have educational value. People memorize the names of their "cool" items in game and it's well worth putting a little extra effort in appropriately naming stuff.

And so when I added the resource to the cocoa tree, I ended up spending quite a bit of time reading up on chocolate fabrication and cocoa trees to find an appropriate name for the resource and what it would look like. Same for the appearance of the tree itself. Ditto with the spider webs from the Halloween event. I didn't want to just plop a web deed as loot, that seemed a little lame. But paying a visit to my best friend wikipedia, I learned about gossamer and spinnerets and the rest is history.

Sometimes though, the names have hidden meanings, are meant to give people a smirk or are little winks winks. In UO, you will from time to time run into known characters such as the famous Barton who became legendary thanks to a very bratty Atlantic player. Many of you also ran into slimes named "a j wilson" after a game critic that had given UO bad reviews. Some are a bit more subtle, such as the Warren, the upset ghost (specter) of Ultima Underworld (Stygian Abyss) which was a wink wink to producer Warren Spector.

The problem is how much time spent picking names is justifiable? If you're half as picky as I am, an hour can have gone by and you're still nowhere near having found a suitable name, especially for characters. I shudder at the thought of ever trying to come up with a name for a baby! So sometime, when you see a lame name in any game, know that there are 3 probable reasons: a) the author has bad taste, b) the author gave up trying to come up with something l337, c) you have bad taste :P

Sunday, January 18, 2009

Comments

When programming, one of the things teachers always tell their students is the importance of commenting what you are doing. Some people would get utterly pissed for losing points for not commenting enough a script that was otherwise perfectly functional. As I only had a few scripting classes as part of the game design curriculum, I didn't realized the importance of those couple lines until now.

Designing in UO is very different than other games I've been on. Here we're jacks of all trades. We do world building, designing, decorating, storytelling and a heck of a lot of scripting. In fact close to 3/4 of our work is writing code. Problem is, this isn't like a console game where you normally have the engineers assigned to handle all the coding on specific levels and where once the game ships, that's it nobody messes with the code anymore (aside from a possible patch or two). In a MMO, and especially UO, it's not because you worked on this code today that someone else won't be using it next week or in 5 months from now. And as new content gets added or modified, properly commenting scripts takes a whole new meaning.

Ten months ago (dang has it really been that long?!) when I started on the UO team, I didn't have a whole lot of scripting experience. So this has definitely been quite a learning process. As such, I relied heavily on the work of my predecessors not only as inspiration but also as an educational tool. It's not just about how they did it, but often why they did it this way instead of that way.

What would really make me cry is opening a script with 1500 lines of code, not a single comment, funky variable names that mean nothing and function names that are even more meaningless. I will have to leave my opinion about naming conventions to another post, because I have quite a bit to say about that!

Luckily for me, there were also quite a few scripts that were little gems of comments. "This function does this". "I've handled it this way instead of that way (which would have seemingly been the logical way) because (insert reason here)". Or simple things like "this script is being attached to (...) by (...) and does (...)". And "I'm returning an integer instead of the object because (...)" or "I've added this block here to deal with an exploit where players (...)". Yes, this last part I've seen in plenty of scripts!!!

You cannot begin to imagine how invaluable those little comments are even for yourself. I go back on some of the earlier scripts I wrote and if not for my own comments I would be asking myself why the heck I did it this way. It saves so much time to not just sit there trying to figure out the logic. It can also spare others the pain you went through trying to figure out how something works next time around. By this I mean you tried to get something to work for days/weeks and finally realized that passing this type of variable will not work because the value is actually assigned elsewhere and totally bypasses what you are doing. Adding a one-liner comment saying: "note that this variable is handled by included script/function (insert name here)" will make you very popular with the next person to fiddle in this script.

On a side note, while you should always be professional in the comments you write in your scripts, some humor in good taste is never a bad idea. I like stumbling on the random comment that will make me smile, smirk or flat out lol. Speedman had a cute one that was more of a John Steinbeck wink, wink in the mace and shield glasses script where the first comment line read "Of Mace and Men". In one the Champ Spawn scripts, rather than giving one of the functions a bland "choose random players to give the scroll to", the comment was along the lines of "now the fun of picking some lucky dogs". In one of the buff scripts, the function where the buff was actually given to the player had "Beef me up, Scotty!" as a comment. Another that made me giggle (because I have a really silly sense of humor) was the "Ph4t L3wT, gImM3!gImM3!" comment where the reward was being generated on a boss monster.

In short, you should always comment your work. It shouldn't be a novel. One or two lines is usually more than plenty for a block of code. But it will do wonders for you and the people who will need to go into stuff you've done, especially if you had to handle something in a non-traditional way. The occasional smart humor is plus. Just remember that moderation is always in good taste!

Monday, January 12, 2009

Troubled Waters

I was having a heated debate with a friend of mine regarding the quality (or lack thereof) of recently released MMOs, upcoming ones, expected expansions and so on. It was interesting seeing how our opinions differ now that I'm on the inside compared to how similar they were when I was on the outside.

The fact is a number of new MMOs have failed despite a strong start and a lot of hype. Some expansions failed to deliver on revenues and player retention while other games have postponed themselves into oblivion. You have to ask yourself why do we always seem to miss our deadlines? Why do we cut corners or deliver stuff (too often) sub par or not to the level of reasonable expectations? Is it bad management? Incompetence? Cluelessness? Carelessness? Some dumb suit/corporate noob making decisions on stuff he doesn't know jack about?

Sometimes, it is indeed a bit of a mix of all of the above. But in truth, most of the time it's just that shit happens. Every time you think you've got a smooth sail ahead, you end up running into a freaking iceberg. If you're lucky, the iceberg just grazed your ship and with some paint you cover the scratches and you're as good as new. But often times, you hit it head on and next thing you know, you're taking water from every side. Fight hard as you may, sometimes there's just not enough escape boats. That's when you hear of games closing and projects being canceled. There was just no saving it. It was taking too much water and you have to make the decision: do we cut our losses and save who/what we can, or do we all go down with the ship?

Some other times, the ship doesn't sink despite a mighty blow. The crew will work around the clock, pull every trick imaginable, do whatever it takes to see that it reaches the shore. It will be banged up, battered and look like crap, but it will have made it. Was it worth saving though? What's the point of a cruise ship that no one will set foot on? I mean, you could take another year and pull the whole fixer upper but are there any funds left to do that? How about the crew? After weathering such a bad storm, a few people will think twice about setting another foot on that deck. And if despite all that you manage to pull through, there is the real possibility that by the time you're finally ready to launch, your potential customers will say "bah, the whole cruise ship deal is so last year!" Too bad you were wallowing neck deep in troubled waters then.

There are never any certainties in game development. Sometimes things simply go your way. You've got wind in your sails and everything is a joy ride. Other times, it's just one squall after the other. As a "sailor" myself, I can empathize with crews who have seen their own ships go down or are struggling to keep it afloat. I know how much blood, sweat and tears gets poured into it.

Whenever you start a journey, you can never know how far it will take you. The (must see!!) miniseries From the Earth to the Moon is a fine example of what game development can be like. Obviously, the series isn't about video games, but it shows how many unexpected hurdles you need to overcome during development process. How even the tiniest mathematical error can cause major setbacks. And that at times, only a near catastrophe can give you that much needed second wind.

I'm blessed to be part of an amazing crew, with a captain I respect and a ship I love. She has withstood her fair share of storms and God only how many more await us ahead. But I have good faith that she and we will take each other home safely.