|Monday, July 7th, 2003|
4:50p - crafting vs. hunting
Notes to self:
How to balance crafting and hunting in MMORPGs? Make them both useful. Divide equipment into artificial levels - "basic", "good", "excellent", "rare", "ultrarare", and "ultimate". (Note: equipment level has no bearing on the character level using it, you could have a lv5 ultimate piece of equipment and a lv100 basic piece of equipment. equipment level is "how powerful this is for the person who's expected to be using it.") Crafting requires raw materials one level below the destination equipment level. Ultimate equipment can't be found - you have to find ultrarare raw materials and craft. Note that "ultrarare" is the "search for a week" stage. "Basic" can be bought from any shopkeeper, "good" can be bought at certain shopkeepers or found without much trouble (nobody's going to be crafting anything below "good"). Crafting level affects the character level and the equipment level you can make (how to balance? how to make it so low-level crafters aren't bored, but aren't overpowered? idea: set it up so that a totally twinked lv10 crafter can craft ultimate lv10 equipment, and probably good lv15/lv20 equipment.)
macroing can't be stopped, so roll with it, make it less useful. diminishing exp returns for doing the same thing over and over again consecutively? mimic human learning patterns? force the player to expand their bounds a little? applies only to noncombat characters? choices during construction that need to be player-chosen? just ignore the whole issue, it doesn't hurt anyone?
how to find recurring patterns: run lzw compression on their recent actions!
(sorry for the stream-of-consciousness thread. had to get some of this stuff written down. :P)
(comment on this)
the fun of custom windowing libraries:
I double-click someone's name on Trillian, and the chat window pops up and immediately vanishes again.
I try again. Same result. A few more times just for fun.
I finally figure out what's happening. It's popping up in exactly the right place for me to hit the "close" button. Now, Windows' built-in windowing libraries are smart enough to handle this correctly - the window will only close if you call a MouseDown event on the button (i.e. if you click it, rather than just happening to have the button down with the pointer over it), and the underlying window - the one I originally clicked on - would eat the MouseDown event before the window that's being created would have a chance to see it.
I don't honestly know which Trillian is screwing up on - it's possible that it's somehow passing the MouseDown event to the child window, and it's also possible that the window is merely noticing "oh, someone's holding the button down!" (Testing by dragging from the text window over the close box indicates that it's probably the former, but I don't know for certain, there are too many variables.) However, this is another of those "why did you reinvent the wheel?" situations.
Custom windowing libraries are 99% of the time Bad Mojo, as is skinnability. Sure, it's pretty, but it absolutely slaughters usability. How would it feel if every single program you used had different interface semantics - if "enter" on one program was the default option, but you had to use "space" on another, and they all had different positions and icons for the "minimize" "maximize" "close" buttons, and so on and so forth?
A lot of people don't know this, but both Windows and MacOS have *very* strict and detailed usability documents, going over everything from button placement to naming conventions, and there's a *reason* for this. (Interesting fact: MacOSX violates many of their usability documents and ignores others, as do many programs written for MacOSX. Of course, so do many programs for Windows, but the OS itself is extremely consistent in that case.)
Note that even if an interface *feels* like it's just as fast with the skin, that doesn't necessarily mean it is - studies have shown that humans are absolutely horrible at judging themselves on this, sometimes not noticing even a 50% productivity decrease.
You gotta love all the parts of CS that nobody notices.
(7 comments |comment on this)
Today's brilliant idea: A virus with an EULA.
When it installs, it pops up a dialog box saying "Agree to this EULA?" with the EULA a hyperlink to go to its EULA. (Which is something totally absurd that basically boils down to "we own your computer.") The dialog box only has an OK button, though you can, of course, click the close box. If you click the close box it makes a single change to the registry so it never tries to install again. If you click OK it starts spamming your grandmother with porn - but hey, you agreed to it!
I bet almost everyone would click OK.
(1 comment |comment on this)
I wish there was an equivalent to unary * that was either on the right side or had a higher precedence than .
(I suppose I could use [ 0 ], but that's just painful.)
current mood: syntactically ugly
(4 comments |comment on this)