• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Web New Server Structure

Status
Not open for further replies.
Joined
Aug 10, 2008
Messages
858
Reaction score
516
Zygon - New Server Structure - RaGEZONE Forums

Red Line = Calls Instance
Blue Line = Creates Instance

I've been thinking about a possibly better way to have the structure of server execution. Basically, this removes a World and Channel Server from being required and integrates Login into the Master Service, Worlds and Channels (servers) are now instances that hold significant data for execution instead of being executables and can be instantiated by the Login Server.

Channels still handle packets for interaction over a socket, but now they are individual entities bound by ports that hold sockets for data transportation from client to server and vice versa.

Master Server: Handles start-up and login working.

Cash Shop Instance: Only one instance is needed to be used by the whole server, since all World Instances will call it.

World Instance: Can be numerous, not limited to one. Holds channels and binds a Channel to the Cash Shop and other Channels as well as the MTS.

MTS Instance: A Single MTS Instance for the World Instance makes it so other world instances don't have access to the specific MTS Instance other than the world it was originally registered on.

Channel Instance: A Channel Instance holds player's online interaction with other players and the environment of Maple Story, holds a Maps Instance that can only be used for that particular Channel.

Maps Instance: The environment of Maple Story that handles player's true player interaction with others on a field basis as well as handle other entities of the game in general (NPCs, Etc.).


Thoughts or comments?
 
Newbie Spellweaver
Joined
Apr 5, 2009
Messages
5
Reaction score
0
wizet pliz help

---------- Post added at 04:58 PM ---------- Previous post was at 04:57 PM ----------

pliz help wizet!
 
Upvote 0
Junior Spellweaver
Joined
Feb 24, 2007
Messages
189
Reaction score
1
Zygon, that is a pretty nice structure, and you are right at certain parts, It's kind of like those blasted files I worked with a couple of months ago. Anyone who were interested in them, knows who I am.

but heres how those "Blasted Files" were really executed.

Master -> Holds Server List / Connection Info // GG Instance.
Login0 -> Connects to Master
Shop0-> Connects to Master, provides Interface for MTS and CashShop
World -> Connects to Master, spawns channel 1:1
Channel0-> Connects to World, spawns 1:2

but yeah, your method seems like it could work, to even out the lag on some big servers. Ex: 2000+ constant.

but we should implement fail-safes if that idea does go into plan. For example: if the Master shuts down abruptly, Send a server-wide warning, saying that Server is undergoing a server check. Please disconnect immediately, to save yourself from being rolled back. Especially if, the World server fails.
 
Last edited:
Upvote 0
Joined
Aug 10, 2008
Messages
858
Reaction score
516
Zygon, that is a pretty nice structure, and you are right at certain parts, It's kind of like those blasted files I worked with a couple of months ago. Anyone who were interested in them, knows who I am.

but heres how those "Blasted Files" were really executed.

Master -> Holds Server List / Connection Info // GG Instance.
Login0 -> Connects to Master
Shop0-> Connects to Master, provides Interface for MTS and CashShop
World -> Connects to Master, spawns channel 1:1
Channel0-> Connects to World, spawns 1:2

but yeah, your method seems like it could work, to even out the lag on some big servers. Ex: 2000+ constant.

but we should implement fail-safes if that idea does go into plan. For example: if the Master shuts down abruptly, Send a server-wide warning, saying that Server is undergoing a server check. Please disconnect immediately, to save yourself from being rolled back. Especially if, the World server fails.

An instance can't shut abruptly unless an Exception that requires the program to shutdown has occurred.

I'm talking about something like this:

World.java:
Code:
public class World {

	Channel[] set;

	private World() {}

	public World(Channel[] set) {
		this.set = set;
	}

	public Channel[] getChannelSet() {
		return this.set;
	}

	public int getRegisteredChannels() {
		return this.set.length;
	}

}

There isn't a server associated with a World object, it's main purpose is to hold Channel object data and to feed it to the login worker. The login worker will get how many World objects are registered so it can be ready to send a packet for login sequences. So actually the World objects will come before the Login Worker to avoid problems.

This same principle applies to Channel objects (except they get assigned with World Number and a socket to send packets back and forth to and from the client).
 
Upvote 0
Junior Spellweaver
Joined
Apr 4, 2008
Messages
157
Reaction score
11
rmi wasn't the best method (i'm not saying it's bad) but serp and matze originally said that they used rmi because it was simply the easier way of doing things (from a post on RZ where serp was flaunting OdinMS back in nov 08') rather then making odinms use tcp/ip
 
Last edited:
Upvote 0

Bye

Junior Spellweaver
Joined
Apr 6, 2009
Messages
133
Reaction score
6
I might be able to make this work for myself, Still learning the OdinMs structure :\.
 
Upvote 0
Smoke & Fly
Loyal Member
Joined
Apr 21, 2008
Messages
1,190
Reaction score
76
There are so many theories about the server usage and how to get it down. These theories don't get you anywhere, TBH.
I'd say good luck making it, make a dev thread or come back when you're done.
 
Upvote 0
Junior Spellweaver
Joined
Oct 5, 2008
Messages
105
Reaction score
16
Great. Now get this plan to work. kthx, PM me when you're done. Actually, it'll be better to seperate the master and login servers. You have no idea how much load the login server will take on a large server. Why don't we just copy Wizet's strucutre? WvsCenter -> WvsLogin & WvsGame (or was it WvsLogin -> WvsGame) & WvsShop and what not.
 
Upvote 0
Junior Spellweaver
Joined
Nov 14, 2008
Messages
142
Reaction score
59
rmi wasn't the best method (i'm not saying it's bad) but serp and matze originally said that they used rmi because it was simply the easier way of doing things (from a post on RZ where serp was flaunting OdinMS back in nov 08') rather then making odinms use tcp/ip

RMI is just a little slower than no RMI. However, like you said, RMI is a great tool that makes things a lot easier.
 
Upvote 0
Status
Not open for further replies.
Back
Top