View previous topic - View next topic |
Author |
Message |
Hajo Demon Hunter
Joined: 30 Sep 2003 Posts: 779 Location: Between chair and keyboard.
|
Posted: Mon Oct 29, 2007 8:33 pm Post subject: Moving 'through' other players. |
[quote] |
|
I'm facing a problem in my latest project. It's a multiplayer game and there are narrow passages. If one player decides to go AFK for whatever reason in such a passage, it is effectively blocked for everyone else. I'm looking for solutions and two came to my mind:
1) Design maps in a way that there are no "1 person wide only" passages.
2) Let players move 'through' other players if the next square behind or besides them is free.
The first one seems to still have problems though. Even wide passages can still be blocked by groups of people. And some maps just loose the right feel without narrow passages.
Moving 'through' other players looks better. The narrowest passages still appear to be 1 meter wide, graphically, so it's easy to imagine one can pass by another player with a bit of squeezing and pushing.
What do you think? Is it a good idea to let players pass other players this way?
|
|
Back to top |
|
|
BadMrBox Bringer of Apocalypse
Joined: 26 Jun 2002 Posts: 1022 Location: Dark Forest's of Sweden
|
Posted: Mon Oct 29, 2007 10:14 pm Post subject: |
[quote] |
|
Moving through the other players is the best way to go I would think. _________________
|
|
Back to top |
|
|
RampantCoyote Demon Hunter
Joined: 16 May 2006 Posts: 546 Location: Salt Lake City, Utah
|
Posted: Mon Oct 29, 2007 10:44 pm Post subject: |
[quote] |
|
Absolutely let them go through each other. I remember griefers doing this in EverQuest in Cazic Thule - some Ogre would sit down and block an escape route. Nothing is as frustrating. _________________ Tales of the Rampant Coyote - Old-School Game Developer talks Indie Games, RPGs, and the Games Biz
|
|
Back to top |
|
|
Hajo Demon Hunter
Joined: 30 Sep 2003 Posts: 779 Location: Between chair and keyboard.
|
Posted: Mon Oct 29, 2007 11:11 pm Post subject: |
[quote] |
|
Thanks for the feedback :) I'll do it this way then, and let players move 'through' other players.
|
|
Back to top |
|
|
Adam Mage
Joined: 30 Dec 2002 Posts: 416 Location: Australia
|
Posted: Tue Oct 30, 2007 10:51 am Post subject: |
[quote] |
|
Both of your methods would allow players to be dicks if they wanted to group together to block passageways. _________________ https://numbatlogic.com
|
|
Back to top |
|
|
Verious Mage
Joined: 06 Jan 2004 Posts: 409 Location: Online
|
Posted: Tue Oct 30, 2007 11:46 am Post subject: Re: Moving 'through' other players. |
[quote] |
|
Hajo wrote: | 2) Let players move 'through' other players if the next square behind or besides them is free. |
Most online (2D) games allows players to walk through one another at all times, but not through NPCs or enemies. Some games turn off this ability for players who turn on player-versus-player (PvP) mode to enhance the excitement level and allow for additional strategy.
Keep in mind, just checking the square after a player may not be sufficient, consider the following scenario:
##########
U >> OO
##########
# = Wall
O = Other player
U = Player character
>> = Direction of travel
Two players could effectively block a narrow passage.
|
|
Back to top |
|
|
Hajo Demon Hunter
Joined: 30 Sep 2003 Posts: 779 Location: Between chair and keyboard.
|
Posted: Tue Oct 30, 2007 1:35 pm Post subject: |
[quote] |
|
I noticed that too. I could recursivly apply the procedure until the chain ends, but I feel uncertain if that is good.
Right now I've decided to ignore this problem and go on with other tasks while now and then thinking about it.
|
|
Back to top |
|
|
DeveloperX 202192397
Joined: 04 May 2003 Posts: 1626 Location: Decatur, IL, USA
|
Posted: Wed Oct 31, 2007 4:23 pm Post subject: |
[quote] |
|
What I would do would be to simply push the other player that is in the way out of the way so that you may pass, and then push the other player back where he was located.
Something like an 'excuse me' command would be cool, that way you could walk up to players to talk, or say excuse me, and they move so that you may pass.
An example (using verious' graph)
# = Wall
A,B = Other player
U = Player character
>> = Direction of travel
The problematic situation:
##########
U >> AB
##########
Solution part 1:
You issue the 'excuse me' command to player A
who then moves behind you
##########
UAB
##########
to
##########
AUB
##########
Solution part 2:
You issue the 'excuse me' command to player B
who then moves behind you
##########
ABU
##########
Solution part 3:
Once you move two spaces away from the players, they will return
##########
AB__U
##########
to
##########
_AB_U
##########
I think that it would be effective.
Goodluck. _________________ Principal Software Architect
Rambling Indie Games, LLC
See my professional portfolio
Last edited by DeveloperX on Wed Oct 31, 2007 4:30 pm; edited 2 times in total
|
|
Back to top |
|
|
Hajo Demon Hunter
Joined: 30 Sep 2003 Posts: 779 Location: Between chair and keyboard.
|
Posted: Wed Oct 31, 2007 4:25 pm Post subject: |
[quote] |
|
That'd be cool indeed :)
Server would have to track who was pushed and place them back when their place becomes free again. But this could be handled.
|
|
Back to top |
|
|
DeveloperX 202192397
Joined: 04 May 2003 Posts: 1626 Location: Decatur, IL, USA
|
Posted: Wed Oct 31, 2007 4:34 pm Post subject: |
[quote] |
|
Hajo wrote: | That'd be cool indeed :)
Server would have to track who was pushed and place them back when their place becomes free again. But this could be handled. |
You could use a simple state machine to track the push.
While in the pushed state, you would check the space that it was at in the update routine for that player, and if it can move, you remove the pushed state from the state machine.
I'd be happy to help you code it, just let me know if you need anything. _________________ Principal Software Architect
Rambling Indie Games, LLC
See my professional portfolio
|
|
Back to top |
|
|
Hajo Demon Hunter
Joined: 30 Sep 2003 Posts: 779 Location: Between chair and keyboard.
|
Posted: Wed Oct 31, 2007 4:45 pm Post subject: |
[quote] |
|
Thank you for your offer DeveloperX :)
A state machine is nice, but doesn't fit too well into Sonnheim. Most of the server code is event driven. The most easy way would be to add a "move" type event for the pushed player with a delay of a few seconds, and a destination back to his original place.
The server checks the event queue regularly and once events are due they get executed. Execution can give a result code to put the event back into the queue with a new delay.
So the server would try to put the player back to his original position every few seconds until it succeeds. One could also set a limit on tries.
In a way the events are like state transitions, so your idea maybe fits better than I first thought, it just come with a bit of a disguise ;)
|
|
Back to top |
|
|
DeveloperX 202192397
Joined: 04 May 2003 Posts: 1626 Location: Decatur, IL, USA
|
|
Back to top |
|
|