- Add Review
- Subscribe
- Nominate
- Submit Media
- RSS
Dedicated Servers
- WolfCoder
- 05/28/2014 06:18 PM
- 2170 views
I have been wondering whether or not to add standardized networking to the RPG20XX engine. What? By standardized, it means that there is one dedicated server program someone can use to set up a Dedicated Server (like all other Dedicated Server games- Garry's Mod, Terraria, Minecraft, etc.).. except it will support any RPG 20XX game.
It works like this: a website hosts an RPG20XX server. It's just an RPG20XX server, it will handle any game using any RPG20XX engine (even modified ones as long as they support the protocol!). Each player connects their game to the server and can see a list of other users that are using the same game as each other. You can either host or join another user.
The player hosting the game has all the saved data for themselves and the other players. All the system events (common events, etc.) are run locally for each user. The host however runs all map events and sends only status information to everyone else.
The trust is mostly put on the host since they retain all save data and the true world state. Little bandwidth actually passes through the server since everyone has an entire copy of all the code for the game. For example, if someone examines the NPC, each player only needs to know that the player talked to an NPC. Each player can just execute the event locally to see the resulting action.
Commands will operate a tad differently. For example, if a player opens a chest and then a command is run where they get an item, the item is added to their inventory. Everyone else ignores the command since the event is directing itself at that player, but the host is keeping track of them. From the players' perspective, there was no network lag at all.
However, assume a player memory hacked their engine to give themselves an item. The host is unaware of this. That player later opens up their inventory and tries to use the item, or uses it in battle, or talks to an event that checks to see if they have the item. Everyone else sees the case where that player actually did not have the item. Since everyone will eventually reach the same state as far as personal status and items go if they play nicely, the host can see this action did not make sense and can then kick the offending player.
This doesn't stop normal bugs. A bug for one player is a bug for all granted they have the same version of game. Therefore, a checksum will be sent to everyone from the host to make sure everyone has an exact copy of the game. If not, players may get kicked due to inconsistent transaction state.
I'm still not sure whether or not I will implement this. I have the capability, I've made multiplayer environments many times before already. Despite the engine automatically handling a networked model for you, a particular game using it would still need to be designed with multiplayer in mind from the start.
It works like this: a website hosts an RPG20XX server. It's just an RPG20XX server, it will handle any game using any RPG20XX engine (even modified ones as long as they support the protocol!). Each player connects their game to the server and can see a list of other users that are using the same game as each other. You can either host or join another user.
The player hosting the game has all the saved data for themselves and the other players. All the system events (common events, etc.) are run locally for each user. The host however runs all map events and sends only status information to everyone else.
The trust is mostly put on the host since they retain all save data and the true world state. Little bandwidth actually passes through the server since everyone has an entire copy of all the code for the game. For example, if someone examines the NPC, each player only needs to know that the player talked to an NPC. Each player can just execute the event locally to see the resulting action.
Commands will operate a tad differently. For example, if a player opens a chest and then a command is run where they get an item, the item is added to their inventory. Everyone else ignores the command since the event is directing itself at that player, but the host is keeping track of them. From the players' perspective, there was no network lag at all.
However, assume a player memory hacked their engine to give themselves an item. The host is unaware of this. That player later opens up their inventory and tries to use the item, or uses it in battle, or talks to an event that checks to see if they have the item. Everyone else sees the case where that player actually did not have the item. Since everyone will eventually reach the same state as far as personal status and items go if they play nicely, the host can see this action did not make sense and can then kick the offending player.
This doesn't stop normal bugs. A bug for one player is a bug for all granted they have the same version of game. Therefore, a checksum will be sent to everyone from the host to make sure everyone has an exact copy of the game. If not, players may get kicked due to inconsistent transaction state.
I'm still not sure whether or not I will implement this. I have the capability, I've made multiplayer environments many times before already. Despite the engine automatically handling a networked model for you, a particular game using it would still need to be designed with multiplayer in mind from the start.
Posts
Pages:
1
I think a standard server is fine. Makes it more accessible to people with less experience at implementing this kind of stuff, while having the editor already with netplay features in mind (like, having the choice of "local/player variables" and "global/server variables", each of them visualized separately). I've always felt that the editor is the hardest part to accommodate to extra features in any RPG Maker (even with the so-called note tags in VX/A).
I have a little question! What if a game is not fully-multiplayer? Let's think on Pokémon as an example, or DarkSouls, where you battle or have a certain type of multiplayer interaction, limited to a place/activity. Is this included between the planned features for multiplayer support?
I have a little question! What if a game is not fully-multiplayer? Let's think on Pokémon as an example, or DarkSouls, where you battle or have a certain type of multiplayer interaction, limited to a place/activity. Is this included between the planned features for multiplayer support?
I said I wasn't sure if I was going to use multiplayer at all.
This system was designed for all cases of multiplayer as long as there aren't too many people. It is most important for it to be incredibly easy to use. Nobody is going to be making an MMO or even DarkSouls type multiplayer without enterprise level servers of their own. This feature is nice, but might be well beyond the scope of RPG20XX.
That's because you don't have the source code for the editor. I can write anything I want into the editor.
This system was designed for all cases of multiplayer as long as there aren't too many people. It is most important for it to be incredibly easy to use. Nobody is going to be making an MMO or even DarkSouls type multiplayer without enterprise level servers of their own. This feature is nice, but might be well beyond the scope of RPG20XX.
I've always felt that the editor is the hardest part to accommodate to extra features in any RPG Maker (even with the so-called note tags in VX/A).
That's because you don't have the source code for the editor. I can write anything I want into the editor.
I think it's an interesting concept for an RPG MAKER even if it won't handle many players at once. Worst case scenario, it's like Diablo III where 4 players join one game. Best case, someone has a good server of their own and hosts a fairly decent size game. Either way it adds something interesting.
..even if it won't handle many players at once.
Actually it could, all those whoever-knows-how-many-prototypes-by-now of LandTraveller could, my point is that you can't. Well, unless a sysadmin of a large server farm is reading this. In that case, it really could (there would be a 64-bit version of the server program so it could use RAM sizes in excess of 4GB).
Despite me considering moving LandTraveller to work off the RPG20XX engine (which would be a smart idea), it was doing way more over the network than a JRPG would need and yet I could go up to about 32 players before things started to cave in. These were done on your typical VPS hosts you can rent.
I would obviously host the first dedicated server under the landtraveller.com domain. There's actually a Garry's Mod server there right now. You'll have to use the legacy server browser and put in "landtraveller.com" as the domain (you don't need to type the IP address).
I want this feature to make a simple final fantasy type RPG where different people can control each party member in battle but each have an event to control on the maps. So everyone isn't sitting there watching 1 person walk around the map, waiting for the next battle.
It's a neat feature for sure, but I'll have to do networking differently.. somehow. It's the reason why LandTraveller had so many problems on Windows XP while both versions of RPG 20XX do not (well, single player LandTraveller worked just fine).
I'm mentioning it so early in RPG20XX's development because, if this feature is ever to be added, the decision must be made now.
If you try to implement multiplayer retroactively, you're going to have a bad time.
I'm mentioning it so early in RPG20XX's development because, if this feature is ever to be added, the decision must be made now.
If you try to implement multiplayer retroactively, you're going to have a bad time.
I don't see anything lost, and if done right and good, you've a lot to gain from this, and if it doesn't work too greatly, people just won't use that one aspect of it. I think you've more to gain than you can lose, by adding this.
Pages:
1