Pages:<< prev 1 next >>
#1 May 12, 2003 11:36 am
The Null Value
GroupAFKMud Team
Posts254
JoinedFeb 23, 2003
Well hello there!
I've recently had the pleasure of playing Alsherok for an extended period of time, and I realized something that has stuck through from SMAUG. The roundtime for skills also carries on to everything. What I mean is if you cast a spell that takes 10 seconds to recover from, then you can't enter a command for 10 seconds. This comes across to the player as 'lag'. In fact, there's a snippet that can 'add lag' to a player by increasing this counter.
My suggestion is to create a seperate skill roundtime counter. Keep the current one, as it is useful for other reasons, but put skill/spell roundtimes into a seperate counter. Also add messages informing the player of their situation.
Example:
>c somespell Zombie
You cast such and such spell on a Zombie!
(5 seconds recovery...)
>c somespell Zombie
You have not recovered. (2 seconds)
>
Ya see where I'm going? Rather then make it seem like lag. I'll be using this on my own MUD if I get a chance to change things.
Suggestions?
I've recently had the pleasure of playing Alsherok for an extended period of time, and I realized something that has stuck through from SMAUG. The roundtime for skills also carries on to everything. What I mean is if you cast a spell that takes 10 seconds to recover from, then you can't enter a command for 10 seconds. This comes across to the player as 'lag'. In fact, there's a snippet that can 'add lag' to a player by increasing this counter.
My suggestion is to create a seperate skill roundtime counter. Keep the current one, as it is useful for other reasons, but put skill/spell roundtimes into a seperate counter. Also add messages informing the player of their situation.
Example:
>c somespell Zombie
You cast such and such spell on a Zombie!
(5 seconds recovery...)
>c somespell Zombie
You have not recovered. (2 seconds)
>
Ya see where I'm going? Rather then make it seem like lag. I'll be using this on my own MUD if I get a chance to change things.
Suggestions?
#2 May 13, 2003 2:29 am
These form of "action" skills, allow a specific subset of command while executing another command. I created what I termed as an "action event" in FE which did this job, where a spell was cast and it lasted a good while... well depending on the energy you shoved into it. But during this execution you could still glance around, and perform some other simple actions, but moving and other more intensive actions were prohibited (admittedly it'd prolly be more interesting if I actually allowed them but they "broke" the existing action causing unpredictable results in the case of mid-cast). I have seen it done with other tasks such as picking a lock, you sit down and perform that, but can still glance around to make sure someone isn't going to rip your head off for trying to break into thier home or something But moving around is a definte not possible unless you want to stop the skill from progressing any longer.
You might want to look at grouping your commands internally (motion, observation etc..) and allow certain groupings during certain commands, and make it a ORed bitfield for the command specification (or a string of group names.. whichever you'd prefer).
Also, quick historical point, Smaug didn't invent the WAIT_STATE. Its been around for a LOOOOOOOONG time and you'll find it in most, if not all Diku derivs. While timer != 0 or something, then ignore any input/output processing whatsoever.
You might want to look at grouping your commands internally (motion, observation etc..) and allow certain groupings during certain commands, and make it a ORed bitfield for the command specification (or a string of group names.. whichever you'd prefer).
Also, quick historical point, Smaug didn't invent the WAIT_STATE. Its been around for a LOOOOOOOONG time and you'll find it in most, if not all Diku derivs. While timer != 0 or something, then ignore any input/output processing whatsoever.
#3 May 13, 2003 11:16 am
GroupAFKMud Team
Posts61
JoinedJan 1, 2002
I personally think it's a great idea to have seperate timers for seperate types of actions. If you dig down into it, it doesn't make sense for an accomplished mage to be so exhausted after casting a low level spell that he can't even look around or do much of anything for that matter, but neither does it make sense that a couple seconds after casting a high level spell that he hardly knows, he can do any other action he pleases. The same applies to all classes with their respective skills.
I also like Trax's idea of letting them break it if they like, but with unpredictable side effects such as fizzling, backfiring, something else happening (like it accidentally casting 'change sex' on them or something ;P)
But, to be truly useful, you would need a cascading timer that decreased as a player's level and/or their ability in said skill/spell increased.
I also think this should be used in battle. If I, as a mage, just cast a level 89 meteor swarm, I don't think I would be in any shape to be attacking full force or blocking as if I was well rested and hadn't just unleashed the heavens on some poor mob.
So, in all, there would be many considerations to be had before something like that could be fully implemented. But I think if it was well thought out and done correctly, it would be a very good addition to any game.
I also like Trax's idea of letting them break it if they like, but with unpredictable side effects such as fizzling, backfiring, something else happening (like it accidentally casting 'change sex' on them or something ;P)
But, to be truly useful, you would need a cascading timer that decreased as a player's level and/or their ability in said skill/spell increased.
I also think this should be used in battle. If I, as a mage, just cast a level 89 meteor swarm, I don't think I would be in any shape to be attacking full force or blocking as if I was well rested and hadn't just unleashed the heavens on some poor mob.
So, in all, there would be many considerations to be had before something like that could be fully implemented. But I think if it was well thought out and done correctly, it would be a very good addition to any game.
#4 May 13, 2003 1:49 pm
GroupMembers
Posts17
JoinedJan 30, 2003
Thinking this over, I think a good way to go about it would be to have the code read the level the player can learn the skill/spell at, divide that number by the player's actual level, then multiply that result by the "lag factor" of the skill/spell.
With this in place, let players learn any skill/spell at any level, but obviously the higher it is above them, the longer the lag, and if it is too far above them, it could take a long while to recover.
This also raises the problem of balance in the game, with a low level mage casting some nasty spell when he knows that one spell will win the combat for him (as in PvP), so to balance it, one idea would be to take the level of the skill above the player's level and divide their chance of success by that number. If a skill/spell is equal to or below the player's level, then do not divide.
This would mean that if a player devoted enough practice to it, they could use a skill/spell a bit above their level, but a level two player trying to use a skill 20 levels above them, even if they practiced it to 95%, would only have an actual 5% chance of success, so training too high of a skill would be pointless.
This system could be modified to fit your needs, but it should work pretty well, heck, now that I thought it up, I think I will begin coding it into my mud
Just remember though, pseudo-code is always easier...
With this in place, let players learn any skill/spell at any level, but obviously the higher it is above them, the longer the lag, and if it is too far above them, it could take a long while to recover.
This also raises the problem of balance in the game, with a low level mage casting some nasty spell when he knows that one spell will win the combat for him (as in PvP), so to balance it, one idea would be to take the level of the skill above the player's level and divide their chance of success by that number. If a skill/spell is equal to or below the player's level, then do not divide.
This would mean that if a player devoted enough practice to it, they could use a skill/spell a bit above their level, but a level two player trying to use a skill 20 levels above them, even if they practiced it to 95%, would only have an actual 5% chance of success, so training too high of a skill would be pointless.
This system could be modified to fit your needs, but it should work pretty well, heck, now that I thought it up, I think I will begin coding it into my mud
Just remember though, pseudo-code is always easier...
#5 May 13, 2003 3:41 pm
GroupAFKMud Team
Posts61
JoinedJan 1, 2002
Hmm...that's not a bad idea.
One other thing that might help with the balance part...I've played different places that handled skills in different ways. One of the best I've seen is when you use a skill that is non magic, you use up stamina...now that would put skills and spells on even ground as they would both have a "balance" to start with, your current spell points/stamina. Now...I propose to not only implement the division system for chances of success but also to multiply the amount of mana/stamina used by that so that it would use significantly more until you actually reach the "target level" of the skill/spell. So...if you actually DO manage to pull off the casting of a higher level spell or use a higher level skill, you will take a large hit to one of your stats, although reducing the chance of success to almost zero will take care of most of it, making sure that if they DO manage to pull it off, they can't do anything else afterwards will make sure that they only even try sparingly.
So to recap:
We have a good idea of not only changing timers but also with skill/spell level restrictions being lifted but enforced in other ways. So we'll take a low level trying to cast a high level spell. It's way too high so their chance is only 5%. Let's say that they manage to hit that 5% and cast the spell. They have just enough mana to cast the spell so it gets cast, BUT the timer has been tweaked and since it was such a high level, they can't do anything but look for the next 30 seconds...that should put a damper on things ;P
One other thing that might help with the balance part...I've played different places that handled skills in different ways. One of the best I've seen is when you use a skill that is non magic, you use up stamina...now that would put skills and spells on even ground as they would both have a "balance" to start with, your current spell points/stamina. Now...I propose to not only implement the division system for chances of success but also to multiply the amount of mana/stamina used by that so that it would use significantly more until you actually reach the "target level" of the skill/spell. So...if you actually DO manage to pull off the casting of a higher level spell or use a higher level skill, you will take a large hit to one of your stats, although reducing the chance of success to almost zero will take care of most of it, making sure that if they DO manage to pull it off, they can't do anything else afterwards will make sure that they only even try sparingly.
So to recap:
We have a good idea of not only changing timers but also with skill/spell level restrictions being lifted but enforced in other ways. So we'll take a low level trying to cast a high level spell. It's way too high so their chance is only 5%. Let's say that they manage to hit that 5% and cast the spell. They have just enough mana to cast the spell so it gets cast, BUT the timer has been tweaked and since it was such a high level, they can't do anything but look for the next 30 seconds...that should put a damper on things ;P
#6 May 13, 2003 11:58 pm
The Null Value
GroupAFKMud Team
Posts254
JoinedFeb 23, 2003
So to recap:
We have a good idea of not only changing timers but also with skill/spell level restrictions being lifted but enforced in other ways. So we'll take a low level trying to cast a high level spell. It's way too high so their chance is only 5%. Let's say that they manage to hit that 5% and cast the spell. They have just enough mana to cast the spell so it gets cast, BUT the timer has been tweaked and since it was such a high level, they can't do anything but look for the next 30 seconds...that should put a damper on things ;P
Ok, you just gave me an idea
I just pictured two things:
A low level (lets say level 10) Mage tries to cast a level 100 spell. The chance is so low, but this Mage gets lucky, or so he thinks. You see, that much energy would either knock you unconcious or kill you, being only level 10. So lets take this a step beyond... If you're within a 10 level range of the spell, ignore this. Otherwise, along with the small chance of casting, there's a forumla for how many hit points you lose when successful.
Second thing is a Warrior here. He tries to pull off the super level 100 flying kick, but he's only level 5. He completes it, but the sheer force of the skill rips every muscle in his body, causing massive internal injury. The player falls limp to the ground, near death.
The moral?
Along with the small chance of success, include damage to the player for being so low. You play with fire, you will get burnt. You play with something obviously too high, you pay the price... even if it is with your life.
#7 May 14, 2003 2:36 am
GroupMembers
Posts17
JoinedJan 30, 2003
sorry, but I have to disagree there. A level 10 mage who casts a level 100 spell, first off, probably wouldn't have the mana to do it, secondly has only a 1% chance of success, and third, has HUGE LAG whether they succeed or not, so they are already going to be getting whupped up on by anything else in the room.
As for your warrior theory, it just doesn't seem realistic, being a practitioner of martial arts myself, if I were to be imensly lucky and pull off a triple backflip kick (or whatever, yeah right), I was successful, I am not going to hurt myself, however, if there was a chance of damage for failing (with any skill, regardless of level), that might make more sense.
In other words, each skill (since not all would apply) should be considered for if failure should have some sort of effect, possibly based on how much you failed by, possibly not. Like frying yourself with a magic missile or triping over your own feet when you sweep...
I personally think the lag just for attempting a skill above your level alone is going to be painful enough, but each to their own...
As for your warrior theory, it just doesn't seem realistic, being a practitioner of martial arts myself, if I were to be imensly lucky and pull off a triple backflip kick (or whatever, yeah right), I was successful, I am not going to hurt myself, however, if there was a chance of damage for failing (with any skill, regardless of level), that might make more sense.
In other words, each skill (since not all would apply) should be considered for if failure should have some sort of effect, possibly based on how much you failed by, possibly not. Like frying yourself with a magic missile or triping over your own feet when you sweep...
I personally think the lag just for attempting a skill above your level alone is going to be painful enough, but each to their own...
#8 May 14, 2003 9:10 am
GroupAFKMud Team
Posts61
JoinedJan 1, 2002
As you said, to each their own. I do agree with that at least Everyone is going to have different ideas of what is realistic and what is not. However, that is the catch that seems to get most people. If you make it too realistic, what's the point of leaving real life to come play?
With the magic portion, I do partially agree. If you look at it in the light that, you studied a level 100 spell and you felt you were cool enough to cast it. Great. You made that slim % and were able to cast it. But, unfortunately for you, you weren't wise enough to be able to foresee protecting yourself from the backfire. Or maybe you were. I think whether they get hurt or not should be random itself. I also think that a failed attempt to cast the spell should also drain a very large amount of mana (or whatever your preferred term is) from the caster so that it's not something to be tried lightly in the middle of battle.
As for the warrior...I practiced martial arts for 10+ years. If I was stupid enough to try a triple backflip kick and managed to actually flip 3 times and kick each one...who's saying I could even land on my feet after that. The inertia alone needed to flip more than once in the air is great enough to injure you if you don't land right. But, if the game says you are successful in pulling it off, I don't think that you should be hurt, because that means I landed on my feet afterwards. I do, however, think that any warrior-type class that tries to pull of a move way above his level should be hurt if they fail. If you are not mentally and physically prepared to do difficult moves, you can easily hurt yourself in doing them.
But again, as you said, to each their own It's what makes all of the games different and fun in their own ways. That's why you are there to create these alternate realities. Do whatever you deem is appropriate and get feedback from people. That's generally the best solution...just don't listen to the whiny 8 year olds ;P
With the magic portion, I do partially agree. If you look at it in the light that, you studied a level 100 spell and you felt you were cool enough to cast it. Great. You made that slim % and were able to cast it. But, unfortunately for you, you weren't wise enough to be able to foresee protecting yourself from the backfire. Or maybe you were. I think whether they get hurt or not should be random itself. I also think that a failed attempt to cast the spell should also drain a very large amount of mana (or whatever your preferred term is) from the caster so that it's not something to be tried lightly in the middle of battle.
As for the warrior...I practiced martial arts for 10+ years. If I was stupid enough to try a triple backflip kick and managed to actually flip 3 times and kick each one...who's saying I could even land on my feet after that. The inertia alone needed to flip more than once in the air is great enough to injure you if you don't land right. But, if the game says you are successful in pulling it off, I don't think that you should be hurt, because that means I landed on my feet afterwards. I do, however, think that any warrior-type class that tries to pull of a move way above his level should be hurt if they fail. If you are not mentally and physically prepared to do difficult moves, you can easily hurt yourself in doing them.
But again, as you said, to each their own It's what makes all of the games different and fun in their own ways. That's why you are there to create these alternate realities. Do whatever you deem is appropriate and get feedback from people. That's generally the best solution...just don't listen to the whiny 8 year olds ;P
8 year old "Make everything give me lots more experience and gold!!!"
Me "No."
8 year old "I'm going to quit then!!!"
Me "Ok."
#9 May 14, 2003 9:20 am
The Null Value
GroupAFKMud Team
Posts254
JoinedFeb 23, 2003
Kinda missed most of it.
It'd be near impossible to pull it off anyways. As for spells... Your point on mana is correct, but not always. Without going into real life views of spirit and energy, the theory I have is if you were to try and put that much of your energy into something that big, and be that incredibly stupid to do so, your body would be too fatigued to even live. Your life energy would be drained.
Then again, I'm thinking about switching spells over to reflect this more overall. I think if you're a Cleric and you cast a life-giving spell, you should feel a drain on your own life. Same for heal spells, but not that much. (Meaning, you cast a percentage based heal spell, nothing felt. You cast a full heal spell, and the target was mortally wounded, you'd feel a prick of pain as you drain your own energy and donate it to the dying person.)
However this does seem all a bit overboard. It forced me into thinking about something else, though. Random 'fizzle' effects. I think someone suggested a 'backfire' fizzle type thing earlier. How do you 'fizzle' skills though?
And your note about martial arts... I know you can screw up a skill. LOL. I cut my hand wide open on a sword the first time I tried to wield one offensively against a training dummy in real life. I couldn't hold a sword in that hand for a week. Further, I still have the scar to show my stupidity. (Note: I've gotten better! *g*)
-- edit after reading CAM's post --
Well what I was thinking (though not wording right) is you DO pull it off, you manage to cause damage to the victim, but you wern't skilled enough to complete it without harm. Perhaps a percentage that you get 2 of the three kicks in, but the last one was off, thus your landing was botched. Ouch... that had to hurt.
It'd be near impossible to pull it off anyways. As for spells... Your point on mana is correct, but not always. Without going into real life views of spirit and energy, the theory I have is if you were to try and put that much of your energy into something that big, and be that incredibly stupid to do so, your body would be too fatigued to even live. Your life energy would be drained.
Then again, I'm thinking about switching spells over to reflect this more overall. I think if you're a Cleric and you cast a life-giving spell, you should feel a drain on your own life. Same for heal spells, but not that much. (Meaning, you cast a percentage based heal spell, nothing felt. You cast a full heal spell, and the target was mortally wounded, you'd feel a prick of pain as you drain your own energy and donate it to the dying person.)
However this does seem all a bit overboard. It forced me into thinking about something else, though. Random 'fizzle' effects. I think someone suggested a 'backfire' fizzle type thing earlier. How do you 'fizzle' skills though?
And your note about martial arts... I know you can screw up a skill. LOL. I cut my hand wide open on a sword the first time I tried to wield one offensively against a training dummy in real life. I couldn't hold a sword in that hand for a week. Further, I still have the scar to show my stupidity. (Note: I've gotten better! *g*)
-- edit after reading CAM's post --
Well what I was thinking (though not wording right) is you DO pull it off, you manage to cause damage to the victim, but you wern't skilled enough to complete it without harm. Perhaps a percentage that you get 2 of the three kicks in, but the last one was off, thus your landing was botched. Ouch... that had to hurt.
#10 May 15, 2003 6:20 am
As you said, to each their own. I do agree with that at least Everyone is going to have different ideas of what is realistic and what is not.
Reality is nothing, perception is everything.
No matter what the mouse thinks of it being right or wrong, the cat will still eat it if it wants
#11 May 15, 2003 3:33 pm
GroupMembers
Posts17
JoinedJan 30, 2003
Do not try and bend the spoon. That's impossible.
Instead, only try to realize the truth.
There is no spoon.
Then you will see that it is not the spoon that bends, it is only yourself.
red pill BOY!!!
sorry, guess what I saw at the movies?
Instead, only try to realize the truth.
There is no spoon.
Then you will see that it is not the spoon that bends, it is only yourself.
red pill BOY!!!
sorry, guess what I saw at the movies?
#12 Jun 3, 2003 2:57 pm
GroupMembers
Posts398
JoinedMar 8, 2005
The Sound of Music?
Yes, WAIT_STATE is in the good old DikuMUD Gamma code that my last game was based on (I'll even upload it someday, just so people can see how their grandparents played muds).
The idea that comes to mind for diminishing or removing this piece of arcana is to place commands into a priority queue instead of returning an error if the first command isn't done yet. Some LpMUD's do this.
> cast 'fireball' bozo
You begin muttering and flailing your arms about...
> hug bozo
You continue chanting, placing a small red pea in your palm.
(Your feelings will be shown in 5 seconds)
> kill bozo
You toss the red peat up into the air, and it glows!
(Your feelings will be shown in 2 second)
(Your attack will commence in 4 seconds)
> abort hug bozo
A fireball erupts from your hands, smashing into bozo, and
causing a great deal of confusion to the kids watching.
(hug aborted!)
(Your attack will commence in 1 second)
> smile
You HIT bozo with your empty hand... ok.
You smile in pleasure.
It's really the same idea, but instead of returning an error, you queue the command and get to it as the wait states for that command tick down. If you wanted to reorder your commands, you could do so (if commands to do that were created), and commands like tell/score/quit/etc could bypass the queue.
When the command is done, pull it off the queue and add it to your history buffer, then go do the next command (if any).
Oh, and the differing messages as you prepare and cast could be accomplished by having lists of messages tied to the current wait ticker.... if you wanted that level of detail.
Another idea would be to utilitze the event system and queue all the commands as future callbacks, but that's a bit less efficient in a system that wasn't designed with those concepts in mind.
Yes, WAIT_STATE is in the good old DikuMUD Gamma code that my last game was based on (I'll even upload it someday, just so people can see how their grandparents played muds).
The idea that comes to mind for diminishing or removing this piece of arcana is to place commands into a priority queue instead of returning an error if the first command isn't done yet. Some LpMUD's do this.
> cast 'fireball' bozo
You begin muttering and flailing your arms about...
> hug bozo
You continue chanting, placing a small red pea in your palm.
(Your feelings will be shown in 5 seconds)
> kill bozo
You toss the red peat up into the air, and it glows!
(Your feelings will be shown in 2 second)
(Your attack will commence in 4 seconds)
> abort hug bozo
A fireball erupts from your hands, smashing into bozo, and
causing a great deal of confusion to the kids watching.
(hug aborted!)
(Your attack will commence in 1 second)
> smile
You HIT bozo with your empty hand... ok.
You smile in pleasure.
It's really the same idea, but instead of returning an error, you queue the command and get to it as the wait states for that command tick down. If you wanted to reorder your commands, you could do so (if commands to do that were created), and commands like tell/score/quit/etc could bypass the queue.
When the command is done, pull it off the queue and add it to your history buffer, then go do the next command (if any).
Oh, and the differing messages as you prepare and cast could be accomplished by having lists of messages tied to the current wait ticker.... if you wanted that level of detail.
Another idea would be to utilitze the event system and queue all the commands as future callbacks, but that's a bit less efficient in a system that wasn't designed with those concepts in mind.
#13 Jun 3, 2003 9:13 pm
The Null Value
GroupAFKMud Team
Posts254
JoinedFeb 23, 2003
Nice thought, but too much for me.
While it makes roleplay sense that an action and an attack would both be affected by the other, it's just too complex. It's just not what I personally want in this game.
I do like the thought though.
While it makes roleplay sense that an action and an attack would both be affected by the other, it's just too complex. It's just not what I personally want in this game.
I do like the thought though.
#14 Jun 3, 2005 6:18 am
GroupMembers
Posts31
JoinedMay 30, 2005
A very workable system I've seen was on Gemstone3 which I played for 12 years. I'm currently slowly converting a smaugfuss codebase over to a similiar system. (Takes me a while since my experience is VB not C. Was going to convert the whole thing to VB just to see if I could but ended up starting to work it in C once I realized I could actually understand the language.)
1) A magic user couldn't use spells above their level. But with up to 3 different spell groups depending on class/profession this wasn't always a bad thing. My wizard could use 2 groups. Level 1 spells were Minor Shock and Elemental Defense. Considering the capability of the level 1 wizard and the creatures that they would hunt and the limited amount of manna available to use this worked out. The manna cost was the same at the spell level (ie level 1 spell = 1 manna, level 10 spell cost 10 manna)
2) Prior to casting a spell it had to be prepared. This roundtime had a base of 5 seconds and would decrease as your level above the spell level increased. This was a "soft" round time where you could still do amost anything such as change your stance (defensive posture) change the weapon in your hand, Leave the engagement, heckle, talk to others etc.
3) Once the spell was ready you had a set amount of time to cast it (think it was either 20 or 30 seconds...was usually too busy to let it run out). Once you cast it you had usually a base roundtime of 5 seconds plus other factors (encumberance etc). This was "hard" Roundtime. Couldn't do much during this time.
1) A magic user couldn't use spells above their level. But with up to 3 different spell groups depending on class/profession this wasn't always a bad thing. My wizard could use 2 groups. Level 1 spells were Minor Shock and Elemental Defense. Considering the capability of the level 1 wizard and the creatures that they would hunt and the limited amount of manna available to use this worked out. The manna cost was the same at the spell level (ie level 1 spell = 1 manna, level 10 spell cost 10 manna)
2) Prior to casting a spell it had to be prepared. This roundtime had a base of 5 seconds and would decrease as your level above the spell level increased. This was a "soft" round time where you could still do amost anything such as change your stance (defensive posture) change the weapon in your hand, Leave the engagement, heckle, talk to others etc.
3) Once the spell was ready you had a set amount of time to cast it (think it was either 20 or 30 seconds...was usually too busy to let it run out). Once you cast it you had usually a base roundtime of 5 seconds plus other factors (encumberance etc). This was "hard" Roundtime. Couldn't do much during this time.
Pages:<< prev 1 next >>