I spent over six hours of my life on Thursday trying to modify one of the older utility scripts. I was initially pleased when I activated the script and saw the expected result, but I then grew perplexed when (upon further testing) saw variations in the results. Some results were just plain wrong, and other conditions had no results at all.
I laced the script with multiple lines of diagnostic code, and ran it again. And again. I was not annoyed so much in that the script was not working as I was with the seemingly randomness of the results: I could not predict the result nor could I see the pattern within what was happening. What the heck was going on with my beautiful script! At no time did I dread "I broke the script," as my additional code was working perfectly: it was the original code that appeared to be misbehaving. There was something larger happening that I was not seeing.
I turned to researching other scripts that had similar functionality. What were their scripts doing that mine was not doing? I could not see any differences, and my eyes began to tire from all of the reading. I was about to end my debugging session when I had a sudden realization; within the World Editor Tool there are some "script check boxes" (for want of a better description) which basically set behavior preferences for a script's interaction with the world. Did I have my check boxes checked?
Nope. I had left one check box unchecked. And after checking it, my script worked perfectly and predictably.
I had an idea for a cooperative quest where players would trade quest components amongst each other, but there is a major flaw with this concept: suppose that the participants are unwilling/unable to cooperate?
Suppose, for example, that the quest is to collect playing cards, and the goal is to redeem a poker hand of five cards. The catch is that every time that a player draws a card, they will always draw the same card. When Gremlins draws a card, then he will always draw the Jack of Clubs. When Moon Kitty draws a card, she will always draw the Queen of Hearts. When Super Chicken draws a card, he will always draw a Joker.
The easiest way to complete the quest is to collect five cards of the same value, and then cash them in for five-of-a-kind. Suppose that the quest reward payoff for five-of-a-kind was the experience equivalent to a dispatch, but something like a full house or a flush was worth the experience equivalent to a kill? Suppose that a straight flush was worth the experience equivalent of a vanquish?
The structure of the quest is one that encourages trading cards with the community, and the reward for the quest increases by having a variety of cards. Would you want to trade cards with others players to maximize the quest reward payoff? What happens if a quest participant refuses to trade?
While this is a rather broad (and exaggeratedly extreme) example of the quest, it has me thinking: even though there are greater benefits to cooperation, I should never assume that everyone is willing to cooperate within a cooperative quest.
As the development of my silly quest draws near its conclusion, I now turn my attention to modifying some of the existing world scripts to support this upcoming quest.
Even though I have plenty of experience in modifying scripts, I still grow a little nervous when shoe-horning new functionality into existing code. Many of the basic world scripts are over a decade in age (the script which I am currently modifying was created in December of 1998), and I am constantly concerned of outright breaking a script, or changing a script to a point where it inadvertently affects all of its dependent scripts. And I know that I am more cautious about breaking scripts than I need to be: our ServerGM has built a rock-solid system over the years which includes many failsafe systems, and the likelihood of tragedy happening is almost negligible.
I have my crowbar in hand, and I return to prying away some old lines of code to make room for new code. Making room is the easy part – it's the "make sure that nothing there gets bent out of place" which is harder.
Yesterday I spent some time running around in Puddleby, and bumped into a couple of GMs who happened to be online at the same time. After exchanging our greetings (which were largely just a bunch of juvenile insults: "Hey, I see that you're still ugly!"), one of the GMs and I fell into discussion about one of the larger projects which had been placed on the back burner.
While the details of project are unimportant, the point of my mentioning this is that I have been thinking about the project since my chat with the GM. In fact, I spent the better portion of this morning outlining the logic of the super quests. I have not compared my new notes to my old notes on this project, but I already know that the new ideas are better than whatever I had previously put to paper. This creativity excites me and drives my desire to redevelop this project.
I am in the process of competing my silly quest, and once that has been removed from the front burner, then I will have room to move this massive project forward from the back burner.
I went to a birthday party on Saturday. The party was basically "dine out at a local Mexican restaurant, drink some sangria and margaritas, and then play a round of indoor laser tag at a nearby gaming facility."
I had never played laser tag, but I have played nearly 2k hours of Team Fortress 2 – and that's almost like playing laser tag, right? I figured that I would be an instant expert at this game and that I would dominate the playing field.
PRO TIP: One's mediocre computer gaming skills does not translate well into real world settings. I had enough team-versus-team online gaming experience to check around corners and to watch my back when moving around the map, but boy-howdy I had zero gaming experience on dealing with swarming, screeching children. The kids' tactic was a basic wolf-pack "surround and pound the adults!" and as one of our base's few adult defenders, I got seriously pwn3d.
I had a blast (pardon the pun), and look forward to playing again soon. Although their RED team crushed my BLU team, I can boast that I had the high score for my team. That's right: I was able to out-gun the children on my team. Maybe my mediocre computer gaming skills accounted for something!
I have made a lot of progress on the scripts for my silly little quest. While I was unable to complete everything in time for the V726 deadline, I must say that, overall, I am pleased with the progress that I have been making on this project. Heck, I am pleased that I am making any progress on this project!
This evening was deadline evening, and I spent my evening assembling my content for V726. The materials which I submitted were for a couple of projects in development, and both were produced entirely by one helper. It will be a while before we see either of these new areas in game, but both of the new areas are shaping up to be ambitious projects.
I've been working away at a frivolous quest – one that I have been wanting to do for some while. The primary quest item is a "smart" item, and by "smart" I really mean "Zo smart", in that it has special data that it needs to track, kind of like how a healer's shirt is smart enough to remember how it's been dyed.
The nuts and bolts of the quest are working well enough, and I am trying to polish it so that it will be ready for V726. That means that I have only two days to complete debugging.
A new entry on my To Do list is a way of bringing mass experience to players. Now, before you start drying the corners of your salivating mouth, permit me to explain.
I have shared some thoughtson the CL experience system. The TL;DR summary is that experience is – with some exceptions – largely centered around combat and the non-fighter classes rely on the fighter classes for experience. I was inspired by another game to try an experiment by simplifying certain experience payouts: if a monster dies and you're there when it happens, then you get the experience payout.
While such an experience system is not new (Clan Lord already has a such payout system: it's called the Treasure Chest), I would like to apply this mass experience payout to boss monsters. I envision a system in which defeating the monster itself is an automatic slaughter so that the focus is to defeat the (ridiculously challenging) boss and not to "get a tag." Once defeated, a healthy reward is given to everyone within the area. And in addition to this mass payout, perhaps the monster boss will have a treasure chest, too!
The downside to this idea is that it still relies on the conquering of an opponent and does little in the way of addressing my prime concern of players being rewarded for simply doing their job. On the other hand, if all of the players do their respective jobs, then the Big Boss will get conquered, right?
A helper recently submitted some content to me. I could not open the file. I advised the helper to resend the material to me, but to compress the file before sending it. The helper obliged. I opened the file and imported the content. I found a mistake. I advised the helper to correct the mistake. The helper obliged, and sent the updated material to me. I found another mistake in the updated material. I advised the helper to correct the new mistake. The helper obliged, and sent the updated material to me. I could not open the file. I advised the helper to resend the material to me, but to compress the file before sending it. The helper obliged.
This is pretty much how the development process goes.
In between gaps of buggy coverage for Apple's live iPhone event, I spent time revisiting projects that I have not touched since May of this year. Most of my time spent was reviewing notes and procedures – lots of "this code is sloppy" and "this can be done more efficiently" and the occasional "whoa, I must have gotten dumber over the summer months because this is way too smart to be my code!" And this was all from reviewing just one project consisting of six core scripts!
One observation has been that NPCs don't really recognize Puddleby Knights outside of the Hall of Chivalry. Personally, I think that it would be cool to have an NPC say "Greetings, Sir Yappy," for all of my friends to hear. I would like to expand the acknowledgment of such organizations, and the NPCs seem like a good starting point. If I'm clever about it, I could expand that acknowledgment to associations. How cool would that be!