Tile based multi-user RPG possible?

Started by
23 comments, last by Legendre 12 years ago


Here's a screenshot of the old 2D RPG I was working on (but wasn't the lead developer), for example of what I'm talking about:
http://img3.imagesha...3471/sewer1.png



Are there any design logs, blogs, or demos still around? Looks like I can learn a lot from this.
Advertisement

Are there any design logs, blogs, or demos still around? Looks like I can learn a lot from this.

My point was that lots of space is blocked off by the terrain itself, even if you have 20 by 20 tile maps ("400 whole tiles! 25 users can fit easily into that!" -> Not when half of it is taken up by the walls and terrain, and all a griefer has to do is stand on the chokepoints).
That game doesn't implement the 'walk between tiles' thing I mentioned, though it does implement the pull/push method. Also, if two players walk onto the same tile at the same time, they both occupy that tile.

The game was discontinued - the forum is still up though, so you can kinda see some history there over four years. The design-related posts are hidden in a locked portion of the forums, so you can't get at that, but the map editor, script engine, and unfinished game world has been made available as a 'single player' version of the old online game. Source code is not available.
The game was an action-RPG, not a turn-based one, so I'm not sure how much it'll help you - plus, as mentioned, it's no longer 'online'. After the project collapsed, the lead developer released a single-player version for the 20 or so active players to mess around with.

I didn't program the game - I was an artist/mapmaker/scripter/community-manager/whatever-hat-was-needed, so don't ask about specific implementation details, because I don't know.

Also, if two players walk onto the same tile at the same time, they both occupy that tile.


So, 10 players could occupy 1 tile?

Question: How did the game display graphically that, for example, 10 players were on the same tile? And display who is in that tile?


The game was discontinued - the forum is still up though, so you can kinda see some history there over four years. The design-related posts are hidden in a locked portion of the forums, so you can't get at that, but the map editor, script engine, and unfinished game world has been made available as a 'single player' version of the old online game. Source code is not available.
The game was an action-RPG, not a turn-based one, so I'm not sure how much it'll help you - plus, as mentioned, it's no longer 'online'. After the project collapsed, the lead developer released a single-player version for the 20 or so active players to mess around with.


Thanks. It would have been nice to see the multi-player. Been checking out a lot of other games to learn stuff from them.
Have any of you guys played World of Warcraft (WoW)? (I have never played it :P)

I read that there is no player collision in WoW. That is, 10 players can stand on the same spot, and they'll all just mesh together.

Sounds like they would have the same concern I am having. For example: if a healer stands on a spot, and a warrior go stand on the same spot, is there a way to see or target the healer?

I am traveling at the moment and writing code on an old laptop. Else, I would just install the free WoW trial and see for myself.

Have any of you guys played World of Warcraft (WoW)? (I have never played it tongue.png)
You should. It's the same grinding as all MMOs, but Blizzard has managed to cram some very good game mechanics in there, particularly the interactions in player vs player combat.
I read that there is no player collision in WoW. That is, 10 players can stand on the same spot, and they'll all just mesh together.

Sounds like they would have the same concern I am having. For example: if a healer stands on a spot, and a warrior go stand on the same spot, is there a way to see or target the healer?[/quote]Players tend to naturally fan out instead of standing right on top of each other, so it's not usual that you have trouble clicking on what you want to target. That said, you can target anything in a cone in front of you by pressing tab; additional keypresses cycle through the possible targets. You can also directly target anyone in your own group via group portraits which are constantly visible, or hotkeys. This is enough to handle 99% of situations that actually occur in game.

Advanced players can also use a "focus" feature to mark a particular target (whether friendly or hostile) so they can immediately select that particular target again. And group leader may place visual markers, visible to the whole group, on particular enemies to help selecting them and to ease coordination ("okay, warrior delays the mob marked with skull, rogue disables the mob marked with crescent, all others kill the mob marked with star").

[quote name='Servant of the Lord' timestamp='1333326968' post='4927325']
Also, if two players walk onto the same tile at the same time, they both occupy that tile.


So, 10 players could occupy 1 tile?[/quote]
Theoretically, yes, in actuality, no: They have to move at nearly the exact same time onto the tile, otherwise if a player is 'already' on the tile, it treats that tile like a wall. Only if they move at the same time, do they both occupy the same tile - A bug, but such a harmless one we decided to leave it as is. At maximum, this would mean only players on the four adjacent tiles would have a chance to move at the same time, though it'd be hard to time all four at once (and maybe be even something players might attempt for fun when bored).

As a staff member, I could teleport players to me, or me to them, and so I sometimes for fun, when just messing around with the fanbase would teleport five or six players onto a single tile. I'd also sometimes teleport/spawn monsters ontop of my location for players to fight (we were really casual, since we had so few players, so I constantly ran 'events' to entertain people).

Question: How did the game display graphically that, for example, 10 players were on the same tile? And display who is in that tile?[/quote]
It'd just draw them on top of each other, sprites and names overlapping. Since it was an action-rpg, you don't 'select' people to attack, you just attack in that general direction.

Random thought: How are you storing players? This might be the source of your confusion.
There are two different ways that are occurring to me in this situation:
1) Each tile-struct on the map knows what player is on it.
2) Each player-struct knows what tile he is on.
(both methods are server-controlled)

If you go like this:
struct Tile
{
Image *image;
bool isWall;
Player *player; //If null, no player is on this tile, otherwise it's a pointer to the player.
Item *item; //If null, no item is on this tile, otherwise it's a pointer to the item.
Monster *monster; //If null, no monster is on this tile, otherwise it's a pointer to the monster.
}

Then yea, you'll have difficulty handling multiple players on a single tile.

But if you go like this:

struct Tile
{
Image *image;
bool isWall;
//No information about players, items, monsters, or anything. Just information about the tile, not what's ON the tile.
}

struct Player
{
int tileX, tileY; //The player-struct (controlled by the server) holds the location.
int strength, health, etc...;
};


Then you can just do this:
//Layers of tiles beneath the player.

MapLayers[0].Draw();
MapLayers[1].Draw();
MapLayers[2].Draw();

//Draw all the items on the map (beneath the player - the player walks over them).
MapItems.Draw();

//Draw all the monsters.
MapMonsters.Draw();

//Draw all the players. Nothing prevents more than one player from drawing over the same tile or being on the same location.
Players.Draw();

//Draw all the magic effects.
Effects.Draw();

//Layers of tiles drawn over the player (tree tops, roofs, etc...)
MapLayers[3].Draw();
MapLayers[4].Draw();
MapLayers[5].Draw();


Don't let the tiles of the map dictate what they can or cannot contain. Let the map itself, at a higher level, do that.
You may sometime in the future want five items to be on the same tile, and a monster ontop of that guarding the items.

Tiles don't need to know what players are ontop of them, since it doesn't change (or rarely changes) the behavior of the tile.
Players do need to know what tile they are on, since the tile might effect their (the player's) behavior (lava damage, slippery ice, wall, etc...).
I'm surprised nobody mentioned Ultima Online. It was fully tile-based. If something else was on a tile, you could move on the tile, but it would cost you a lot of stamina. Players on the same tile would get drawn on top of each other. If 2 players tried to move on the same tile, whoever moved there first moved and the other player didn't move. Movement speed depended on lag because everything was checked server-side instead of relying on the client like new MMORPGs.
Developer for Novus Dawn : a [s]Flash[/s] Unity Isometric Tactical RPG - Forums - Facebook - DevLog
I have an idea, which although does not allow infinite people in one tiel, it could if you want to.

The system i though (although it probably exists in some way already) is to divide the tile in X spots, let's say 10.

So, the tile is there, with 10 empy spots, when something or someone steps on that tile, it fills the first spot, if someone stops in the same tile, it would fill the second one. You can display whatever is filling the first spot or alternate between whats there and you have to make sure you make some interface to link to things in other spots.

Depending on some things, this could be a good idea to use, though i can't really grasp the memory use in large maps.

So, the tile is there, with 10 empy spots, when something or someone steps on that tile, it fills the first spot, if someone stops in the same tile, it would fill the second one. You can display whatever is filling the first spot or alternate between whats there and you have to make sure you make some interface to link to things in other spots.

That's a good idea. It could show one of the players, it doesn't matter who, and when you hover over the tile, that player shrinks back, and all the players on that tile shrink down to all become visible.
multipleplayersontile.png
If there are twenty or so characters, they'd get too small (unless the tile expanded vertically and horizontally to accommodate more), but for any number of players less than 10, it'd work fine.
Dwarf fortress solves this by blinking through the various sprites on a given tile, at least to show you what is there. If your interface supprts it, you could mouse-over the tile and then spiral-out a rotary menu or a push-out menu with all the sprites on that tile, allowing you to select which one individually. You could also use the scroll-wheel to cycle through the sprites as well.

This topic is closed to new replies.

Advertisement