Thursday, May 28, 2009

BOTW #2

So apparently there is a bug that sometimes causes people to repeat what they last said when they start a morph. I ran into this in testing, made a change, and couldn't reproduce it. (Remember folks, make a reproducible test case before you "fix" the bug.) Unfortunately the bugs I'm getting don't really help me reproduce things. All I've got is that it sometimes happens. What I really need is a 100% reproducible example.

Saturday, May 23, 2009

Poison

Poison isn't fun. The big problem with it is fighters are generally the ones that have the major defenses against poison, such as troilus and detha. One unlucky shot can mean a healer is poisoned for over an hour. And mystics? Forget it. The only thing that makes it bearable is that you can easily get rid of it by falling, but that isn't fun, just a nuisance.

So how should poison work in my ideal world?

1) It should reach full potency and reduce its effect much faster. Anything close to an hour duration is unacceptable for a "debuff" effect.

2) It should affect all classes more or less equally.

3) It should make things exciting rather than just be a hassle.

The solution? Well I don't have it solidified yet. But in terms how how to reach all points

1) This is just stat tweaking. Speed things way up. Preferably have it reach full potency quickly, stick there for a little while, and then rapidly dwindle. And I'd need to change the effect of potions so they're still useful.

2) There are a few ways to do this, but I don't want to reveal how the current system works. But I've considered having Awaria help out on the healer side. As well as generally tweaking the formula so it is more fair to all classes.

3) #1 already achieves this to some degree. The idea is the effect should be really worrisome during one fight, but after that fight is over you'll probably be fine. Potions might need to be reworked to provide resistance since using a potion in the middle of a fight definitely counts as a hassle.

I'd also like to remove falling as an option for getting rid of poison, but hopefully with the changes you wouldn't usually want to fall. I just don't think you should be rewarded for falling. When phasing in the new system I might keep the falling behavior until everything gets set and remove it when I'm sure the system won't make poison unbearable.

I plan to introduce poison resistance bonuses to people who have trained to make antivenoms. This doesn't fit any specific poison related goals, but it is something I generally like to do with trade skills. Just to give them some real combat related effectiveness to encourage real people to train them.

Sunday, May 17, 2009

Bug of the Week #1

Someone reports that poisoning seems a lot more common. That comes from the changes mentioned below that I introduced when the Ash Island expansion was released that changed poison snakes to correctly identify when they've hit someone. A lot of changes were made a few months back that went in the other direction, where snakes were poisoning whenever they swung at a player regardless in certain situations. As a result of all the changes poison might be a bit more prevalent overall.

Although...

Runnerup bug: There was a bug that a creature on Ash Island wasn't working as intended anymore. It was a little muddled so I didn't quite understand the problem, but brief testing shows something is indeed wrong although not necessarily what the bug thought was wrong. Both snakes and these creatures use the same elements of the script which changed to increase poisonings, so it is possible there is something else going on. Although the bug for the creature on Ash seems to be that the effect isn't triggering properly, not that it is triggering too much.

Update: The runner-up bug is fixed now. It has nothing to do with my changes, it was in an entirely different script. As far as the more frequent poisoning, maybe some areas need to be tweaked. Whenever I fix long standing bugs I have to realize that all the areas designed in the past 5 years were tweaked and balanced based on that buggy behavior, so I'll keep on eye on it. Although hopefully I can get the energy together to rework poison, which requires a rebalance of all areas with poison anyway.

Monday, May 11, 2009

To Do

Any posts with a "todo" tag are generally notes to myself. Things I've thought of doing, but don't have the time or inclination to do. They let me get my thoughts down so I don't forget, and also give readers an idea of what I've been thinking of so they can say complain about theoretical changes as well as actual ones. (When I have readers, that is. You have to use google to find me now.)

Random Ranger Changes

1) Last Hits

I've been going through the code using some new tools we got a while back to detect combat actions (like "swung" "swung and missed") to fix up a lot of older code that used hacks and tricks to find the same information. Stuff like poisonous snakes and amedons are a lot more likely to actually poison you/set you on fire when they should because of the fixes. (It goes both ways, there were some false triggers as well as cases that didn't get caught.) It occurs to me that rangers probably need the same overhaul for their last hit detection. Right now I believe if two people hit a creature at the same time the chance of the ranger getting the last hit is 50/50. And I don't know what happens if Bloodmage damage over time spells kill a creature when a ranger was the last one to hit it. I think the ranger gets it, even if they hit it 15 seconds ago, but I'm not entirely sure.

So they're long overdue for a refactor that tries to assure that if they hit the creature on the same frame that the creature died, they get the last hit. I don't know how easy this is as there still might be some tricky guesswork and timing issues involved even with the new tools.

2) Growling

Rangers should "growl" when in a shape changed form. It gives them a special speech bubble, the text log shows up as "growls" instead of "says", and it sometimes makes a growling sound. This is probably a trivial change.

3) Tracking

Tracking could probably be improved in a few ways, but the most important is giving an actual reason for training to a longer duration. Some possible improvements include automatically switching to another monster of the same type if the monster you are tracking dies and/or automatically finding a new target whenever you or the monster switches snells.


Fighter Tests

When I took on Fighter Tests I intended to design 7th-10th circle because that was the minimum requirement to give everyone something to strive for. I thought it would be easy, after all you just have to tweak a few scripts and come up with 4 sets of 4 monsters from an already limited selection. It turns out that balanced tests at the correct difficulty level for a good progression are incredibly hard to design and the whole process took many hours more than I predicted.

I also think of circle tests as largely useless since they're incapable of fairly judging people. At best they just feel unfair, at worst they make people change their training styles to suit the test. So it is a lot of work for something that, even if done perfectly, is going to be flawed. It was pretty clear that 9th and 10th would not only be harder (since there were fewer monsters to choose from) but also affect fewer people, so I put those on hold until we had more monsters at that level. We have a lot more now. If I had been smart I'd have been designing the test while I designed the monsters so that I could design the perfect monsters for the test, put them in the world, then just release the test. But I'm not that smart. 9th and 10th circle tests are still just one of a few vague projects that I should do but don't really feel a motivation to finish.

Tuesday, May 5, 2009

Secrecy

I'm mixed on Clan Lord's secrecy "policy".

On one hand, surprise is a lot of fun. Knowing that something is coming tends to build up expectations which at best can be met. And often they aren't, even if what came is really neat. It could also reduce the effectiveness of plot elements. For example, if I announced there was a new healing item and I start some big story to introduce it, people will already know the end result. It makes things a lot less exciting.

On the other hand, anticipation can be fun too, and communication about development is a good way to gauge interest and take feedback from the community. Also, if I'm excited to tell you about an ability, it is probably something you're going to like. Sharing is a good way to encourage me to develop for the community, instead of just for myself.

Experimenting

I've been experimenting with new abilities. The idea is rapid prototyping with hopes of getting something fun, then working on balance or actually being useful later. The new Capture the Flag was an outlet for that experimentation as well as working with ideas that just don't work in a player vs. everything context.

Along those lines I was wondering if it would be easy to take direct control of monsters, using your mouse to control where it moves to. I figured the easiest way to test this was to patch it into the befriend AI and see if I could let the player control that monster instead of having it run off an AI. It worked wonderfully and I had a lot of fun just testing it. The best part (for me) was it didn't take much work. Kudos to RangerGM for really clearly written code.

It works surprisingly well: and you don't have to be still to use it (although you can). The monster will go to wherever your mouse is whether you are clicking or not. If you were to move the monster would move wherever you're moving, so they would tend to attack whatever you attacked, retreat when you retreated, and so on. But beyond that there are a lot of new tactics opened up which I'll leave for players to discover.

It can be a little weird. If you choose a menu selection, for example, your friend is going to run towards the north, and since I don't currently limit where you can tell the monster to go, it will keep going until it reaches that point, even though it is off your screen. You can always stop directly controlling the monster, of course.

I'm still considering the original ideas I had in mind that would use this technique. But I actually have to balance those and turn them into proper abilities. And that takes work.