05 Jul, 2011, Rarva.Riendf wrote in the 1st comment:
Votes: 0
Some skills takes some round of lags, life crafting as an example.
Of course when you are alone, you are stuck by the action and cannot do anything else before you finish.
But you could be grouped and your leader start to move, you could be summoned from the place you were using a forge and many many other cases.

How do YOU handle it: you forbid the char to move ? You make evey action that need a delay to be performed to be in an event and kill the event in the process ? (you were forging an item, that takes time, how do you interrupt it: object follows you, stays in the forge and melt ?)

Everthing is possible to do, from the realistic choice to the suspend of disbielief one, I just dont know what would player expect in the most case.
As an example on my mud track has some lag,so if a player follow someone while tracking he will lose the tracks if his track lag is more than the move lag (this one is variable).
Crafting as an example is time consuming, but a player would still want to be able to follow his group while crafting, and not sit in a room alone. (even if it is not really realistic)


So how do you deal with it ?
05 Jul, 2011, Tonitrus wrote in the 2nd comment:
Votes: 0
Don't use lag, use timers.

(edit: Timers can be easily paused and resumed, or conditional. Lag is unpleasant in any event.)
05 Jul, 2011, Rarva.Riendf wrote in the 3rd comment:
Votes: 0
Tonitrus said:
Don't use lag, use timers.

(edit: Timers can be easily paused and resumed, or conditional. Lag is unpleasant in any event.)

I can use both, for different things ( I use lag for spells and skills, timed event for crafting bombs) different goals.
The question, whatever you are using: what do you do when the char is moved by an exterior force.
05 Jul, 2011, Tonitrus wrote in the 4th comment:
Votes: 0
Rarva.Riendf said:
I can use both, for different things ( I use lag for spells and skills, timed event for crafting bombs) different goals.
The question, whatever you are using: what do you do when the char is moved by an exterior force.


If the timers are conditional, it doesn't matter whether the character moved on his own or was moved by someone else. If he has to be in his forge to work on his sword, when he leaves the forge, the timer will pause. If you can't have conditional timers, just pause it anytime the character isn't in the right place. Then it doesn't matter if he moved or if someone else moved him.
05 Jul, 2011, Rarva.Riendf wrote in the 5th comment:
Votes: 0
Of let me rephrase:this is not about what you can do but what you actually do….maybe this will be clearer stated this way.
06 Jul, 2011, Scandum wrote in the 6th comment:
Votes: 0
I'd handle it the same way I'd handle combat.
06 Jul, 2011, Rarva.Riendf wrote in the 7th comment:
Votes: 0
Scandum said:
I'd handle it the same way I'd handle combat.

And that would mean ? In ROM you just block input as long as the previous command lags you (Though I could change it as I support event as well, it is just a matter of choice). But blocking input from the player does not mean you block input from others.
What do YOU do as an example when a player starts an action that should be realistically done without moving, and his group leader decide to move ?
Interrupt it ? Make the player stay in place ?

It is a gameplay question, not a 'you should use timer instead of lag, or put condition in your timer etc…I can do it all, I am just wondering what the player think about it, as I dont really care if people are crafting while moving, even if does not make any sense.

Example:someone is starting to plant a bomb, let say it should take 3 rounds, if he is summonded, what would you do.
Plant the bomb in the first room, Plant the bomb in the new room, not plant the bomb ?
06 Jul, 2011, David Haley wrote in the 8th comment:
Votes: 0
Blocking input is a terrible solution – it's a hack to implement delay in processing commands. It messes up all kinds of things. You can have the exact same effect without actually blocking input, and that gives you better functionality anyhow like allowing the player to interrupt a queued up sequence of commands.

There are a few questions here, technical and design. Do you want a character to interrupt their activity if the group leader moves? Well, that's really a design decision. Maybe you don't want the group leader to be able to move the group if somebody is performing a long action? Maybe you want to have them force an override and interrupt the action? What if the action is something that can't really be interrupted, like being in the middle of a spell or something else that absorbs the person?

If you don't care about people doing things like crafting when moving, then why ask? Make your life easier…
Personally I would consider those situations to be interruptions that require you to start over and do not result in the action doing whatever it's supposed to do (in your example, the bomb would not be planted at all, unless there are separate actions for planting it, starting the timer, whatever).

The technical questions here are to make sure that you're careful with who is referencing what data and cleaning that up if a character is moved. If a character is involved in some kind of timed event referencing a room and some other characters, you need to be sure that all that gets cleaned up.
06 Jul, 2011, KaVir wrote in the 9th comment:
Votes: 0
Rarva.Riendf said:
In ROM you just block input as long as the previous command lags you

That's the standard Diku approach, the infamous WAIT_STATE. Replacing it with some sort of cooldown timer system would have two main benefits:

1) Actions could be executed after the delay rather than before it, allowing them to be interrupted, cancelled or delayed, and:

2) It would no longer feel like lag, and players could continue to use certain commands (such as 'who', 'score', 'chat', etc) during combat.

Rarva.Riendf said:
What do YOU do as an example when a player starts an action that should be realistically done without moving, and his group leader decide to move ? Interrupt it ? Make the player stay in place ?

If you're using WAIT_STATE than you can't interrupt it, because it's already happened. In that case I would suggest preventing the player from moving.

With a cooldown timer I would either pause the action (eg crafting an item) or cancel it (eg casting a ritual spell), depending on what sort of action it was.
06 Jul, 2011, Runter wrote in the 10th comment:
Votes: 0
I agree that replacing the classic wait state that diku uses with a timer suite of some kind would be a good decision. Don't let your technology drive your design. You at least need these options on the table.
06 Jul, 2011, Scandum wrote in the 11th comment:
Votes: 0
Rarva.Riendf said:
Example:someone is starting to plant a bomb, let say it should take 3 rounds, if he is summonded, what would you do.
Plant the bomb in the first room, Plant the bomb in the new room, not plant the bomb ?

I'd break it up in separate steps. First the player would place the bomb in the room. Next the player would arm the bomb. Next the player would camouflage or otherwise obscure the bomb, if needed. Depending on when the summon occurs the bomb would either be unarmed or in plain sight. Implementation wise you could go for the synergy route and add a generic method for hiding and camouflaging items, then all you need would be an arming routine. Regarding interruption, simply aborting the action is typically the easiest and most realistic.
06 Jul, 2011, Ssolvarain wrote in the 12th comment:
Votes: 0
KaVir said:
Rarva.Riendf said:
In ROM you just block input as long as the previous command lags you

That's the standard Diku approach, the infamous WAIT_STATE. Replacing it with some sort of cooldown timer system would have two main benefits:

1) Actions could be executed after the delay rather than before it, allowing them to be interrupted, cancelled or delayed, and:

2) It would no longer feel like lag, and players could continue to use certain commands (such as 'who', 'score', 'chat', etc) during combat.


End of Time went with something along those lines. It's nice, but you can't queue up commands if you're feeling particularly lazy.
06 Jul, 2011, KaVir wrote in the 13th comment:
Votes: 0
Ssolvarain said:
End of Time went with something along those lines. It's nice, but you can't queue up commands if you're feeling particularly lazy.

No reason why not - I let people queue up combat commands. They can even push commands to the front of the queue if they like.
06 Jul, 2011, Rarva.Riendf wrote in the 14th comment:
Votes: 0
Are all your action 'xxx times of preparation then act', or do you also have 'action now, lags later'

Again it is not about being stuck with ROM paradigm as I can now do both quite easily. I implemented event so my bombs could explode with a delay, and not just right after a char entered a room where there was one in.
I could just as well implement possibility to allow some commands even during the wait time.

I dunno if I am just used to it, but I actually like the simplicity of ROM:My action is done, I know that I am stuck for xx rounds depending on the action, but at least I did what I wanted to.
With a delayed action, I personnaly feel it is quite annoying to never know if it will be done or not. But that's only me.

What do you, and your players actually prefer? A mix of the two depending on context (wait_state for fighting commands but event for out of fight actions ) ? or everything in events ?

Considering the answers you pretty much all moved from the WAIT_STATE, but don't you have ANY skills that act right away but lags you after you did them ? And how do you do you deal with them then ? Ie:powerful skill kill mob, you should be lagged, but groupleader decide to move.

Part of the gameplay on AN (the mud I code for) is also to know that once a mage casted a particulary powerful spell, you should bash him and hit him while he is on the ground while recovering from the spell. Changing of pardigm in fight could really break a lot of thing.

That is also why I am mostly talking about out of fight context. If players (well if they actually do play once in a while and not only chat ;p) ask for it in fight as well the framework can provide it anyway.
06 Jul, 2011, Ssolvarain wrote in the 15th comment:
Votes: 0
KaVir said:
Ssolvarain said:
End of Time went with something along those lines. It's nice, but you can't queue up commands if you're feeling particularly lazy.

No reason why not - I let people queue up combat commands. They can even push commands to the front of the queue if they like.


Well, each action (aside from rounds of auto-attack) gives you a wait state. You're not allowed to enter any other commands that would create another wait state while already under one. Score, help files, who, ooc, etc. are all available.
07 Jul, 2011, Scandum wrote in the 16th comment:
Votes: 0
Ssolvarain said:
Well, each action (aside from rounds of auto-attack) gives you a wait state. You're not allowed to enter any other commands that would create another wait state while already under one. Score, help files, who, ooc, etc. are all available.

I think that's typically called a cooldown, though most games implement individual cooldowns for each ability, which forces players to use a variety of skills to maximize damage. Balance is a related implementation of the cooldown approach where the hands, feet, and other body parts have a cooldown before said body part can be used again.

Alternatively a weak cooldown can be created with rarely used abilities being more potent than those spammed repeatedly. The advantage in MUDs would be that spammy notification of cooldown expiries wouldn't be needed, and tiered or longer cooldowns can be used.
07 Jul, 2011, KaVir wrote in the 17th comment:
Votes: 0
Rarva.Riendf said:
Considering the answers you pretty much all moved from the WAIT_STATE, but don't you have ANY skills that act right away but lags you after you did them ?

There are a few situations in which the action occurs first - but there is no Diku-style WAIT_STATE "lag", just a delay of some sort:

If someone attacks you and you dodge, the dodge is immediate, but you have to wait a few seconds before you can dodge again (although you can still block or parry with your hands).

Berserker Rage activates immediately and lasts 30 seconds, but afterwards you're exhausted (and unable to rage again) for another 30 seconds.

When you eat some food you bite a mouthful immediately, but it takes a few seconds to chew and swallow before you can eat again.

Rarva.Riendf said:
And how do you do you deal with them then ? Ie:powerful skill kill mob, you should be lagged, but groupleader decide to move.

I don't have groups, but even if I did, I've no problem with players moving while dodging attacks, raging, or eating food.

Rarva.Riendf said:
Part of the gameplay on AN (the mud I code for) is also to know that once a mage casted a particulary powerful spell, you should bash him and hit him while he is on the ground while recovering from the spell.

But he still gets to cast it first, and instantly. Because WAIT_STATE is applied to the connection it's also possible to connect to the mud with a second session, enter your name and password, and then as soon as you've cast the spell with your first session you reconnect with your second and clear the WAIT_STATE. With a good connection and a decent script you could rush into a room, launch the spell, then run away again, before most people could even react.


Ssolvarain said:
Well, each action (aside from rounds of auto-attack) gives you a wait state. You're not allowed to enter any other commands that would create another wait state while already under one. Score, help files, who, ooc, etc. are all available

Well that's not really WAIT_STATE - it sounds more like the Avalon/IRE "balance" system.
07 Jul, 2011, Rarva.Riendf wrote in the 18th comment:
Votes: 0
Quote
But he still gets to cast it first, and instantly. Because WAIT_STATE is applied to the connection it's also possible to connect to the mud with a second session, enter your name and password, and then as soon as you've cast the spell with your first session you reconnect with your second and clear the WAIT_STATE. With a good connection and a decent script you could rush into a room, launch the spell, then run away again, before most people could even react.

Well nope he cannot. If he just break connection he is still logged, and if he reconnects he will get his past connection back. (so including his wait status)
And you cannot quit while in the wait_state cause this command is not interpreted if waiting.
So basically your scenario cannot work in my code.
07 Jul, 2011, KaVir wrote in the 19th comment:
Votes: 0
Rarva.Riendf said:
If he just break connection he is still logged, and if he reconnects he will get his past connection back.

If you drop your connection your character remains, but your connection data (DESCRIPTOR_DATA in Merc derivatives) is discarded. When you reconnect a new DESCRIPTOR_DATA is allocated and initialised, and linked to your old character. So it depends where the WAIT_STATE variable is stored. I just had a quick look at Merc, and it does seem to store it in the character - but I recall playing other muds where the WAIT_STATE didn't persist across connections, so perhaps it was changed.

It's still an annoying solution though, if it's blocking all input.
07 Jul, 2011, Famine wrote in the 20th comment:
Votes: 0
Rarva.Riendf said:
Scandum said:
I'd handle it the same way I'd handle combat.


Example:someone is starting to plant a bomb, let say it should take 3 rounds, if he is summonded, what would you do.
Plant the bomb in the first room, Plant the bomb in the new room, not plant the bomb ?


It's hard to follow you, but in my opinion I would declare the planting of the bomb is the setup phase of the ability. If you do any action in this phase, then that phase is interrupted. That includes if your group leader moves you or summons you. It makes no sense that the phase should continue in a room that you are not in at all because technically, a group leader could move you room-to-room allowing you to plan bombs on the move. That also means it depends on the abilities/commands you are doing too. Overall, most games do not allow you to do things that take time to do while moving unless it's something unique to that game, like casting spells while moving etc.

The same applies for spells on that note. I've played games where you can follow a group, but if you begin to cast a spell that takes 3 seconds to cast and then they move, the spell is interrupted because moving and spell casting is not possible by yourself. So why would you make it so that you can if you're following someone. Everyone would do it, making casters mini-gangs of drive-by fireball hurling machines.

On another note, I've never seen anyone become pissed or upset about being forcefully moved while doing an action with a WAIT_STATE. At least not to the staff, more or less to the person who moved them. If the state is super long, then sure people will want this to be lowered especially if it has to do with combat. But, the state itself should be interrupted (stopped completely) if it's a build up phase, or remain in place if it's a cooldown. Players have always accepted those 2 states as actions that are interrupted if you moved, or stay in place in the same condition in my experience.
0.0/22