Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

GMS Like v62 source.

Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
Hi.

I'm currently working as a Java developer in RL and recently i decided to improve LeaderMS source.


Features:


  • Removed RMI.
  • Apache maven to manage the build.
  • Fully compatible with Java 8.
  • Working nashorn scripting engine.
  • Scripting Engine debug mode. You can change your scripts without restarting your server.
  • Fully working project from eclipse, with debugger and so on.
  • Removed most crap in LeaderMS source.
  • Quite stable


Working features:

GM Like ellinia to orbis boat.
Ludibridium elevator.
2x exp cards works.



I still have a lot of stuff to fix :(


Maybe i will release the source in the feature.
 
Last edited:
Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
1. why remove rmi in the first place? like who the duck made that dumb mistake from the beginning? was it Ducking kevin? i dont see what's wrong with rmi, interoperability is Ducking great and makes your server more dynamic so why remove it? the static "world" class is stupid as duck
2. you were always able to edit scripts without restarting server, as they're not complied upon server start
3. why wouldn't the project work with eclipse? you're not making sense, eclipse is just the ide
4. ok
 
not a programmer
Joined
Mar 30, 2015
Messages
532
Reaction score
62
1. why remove rmi in the first place?
so you can run everything on 1 pc and still use hotswapping

Also if you are making a development thread, post a link to your source code, or come up with a very good reason why you won't post it. Else don't bother making a development thread.
Development threads you post screenshots and details, not the source code.

How do you hotswap using only a single JVM? Especially since these servers are usually designed to know nothing about the past runs except for what is saved in the database.
I mean to run server as debug inside IDE with dcevm/jrebel/etc so you can make changes and see results without restarting the server as much.
 
Last edited:
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
1. why remove rmi in the first place? like who the duck made that dumb mistake from the beginning? was it Ducking kevin? i dont see what's wrong with rmi, interoperability is Ducking great and makes your server more dynamic so why remove it? the static "world" class is stupid as duck
2. you were always able to edit scripts without restarting server, as they're not complied upon server start
3. why wouldn't the project work with eclipse? you're not making sense, eclipse is just the ide
4. ok


1-) I don't need RMI since I'm not going to use it for more than 200 players at once. In addiction i dont used any sort of "static class".

I just removed the remote calls and replaced with local invokes, in the same JVM.

In order to generate a release package, i just type mvn clean package and my jar will be production ready.

2-) Yes, because each file is loaded at startup and added in some sort of cache after server execution.
3-) My project uses a actual maven structure, which makes the build really easy.

This is how my project looks like:

br1337 - GMS Like v62 source. - RaGEZONE Forums
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
If you are a Java dev in "RL" and are certified, don't recode one, just make a new one from scratch.

It's too complex and requires a lot of time and i think i dont have enough knowledge for this, lol.

Working with Java EE stack is really easy compared to creating a server and dealing with criptography, file parsing and packets.
 
BloopBloop
Joined
Aug 9, 2012
Messages
892
Reaction score
275
It's too complex and requires a lot of time and i think i dont have enough knowledge for this, lol.

What is your definition of "java dev in RL"? From your reply you don't seems to be a "java deff in RL".

Mind explaining your points, if my assumption is wrong:
1.) Not enough knowledge: The amount of knowledge you need for a ms server is barely nothing. The only knowledge you need is the knowledge about sockets and databases. The encryption for example can be ripped of some source,maybe organize it a little more and then you have to never look at it again.
2.) To complex: How can this be to complex? There are enough resources available,even the official server files.

Also if you are making a development thread, post a link to your source code, or come up with a very good reason why you won't post it. Else don't bother making a development thread.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
It's too complex and requires a lot of time and i think i dont have enough knowledge for this, lol.

Working with Java EE stack is really easy compared to creating a server and dealing with criptography, file parsing and packets.

Writing a source from scratch is not complex at all. It takes a lot of time if you do not know what you are doing (obviously), but if you are a "Java Developer In RL", then writing a source should be easy.

I've went over it before, it doesn't take too many steps to build your source. Rather than trying to fix one up and change everything, just start one from scratch. You won't have to go through the trouble of fixing all your handlers and such after removing RMI and etc.

1. Server acceptors and Channels. You need to create a server acceptor, bind your login/world/channels, and handle how your session's are activated.
2. Encryption/Decryption. You need AES-OFB and Shanda encryption ciphers working. Now that you have server acceptors, you can build Decoder/Encoders to read in/send out packets. You can also just copy it from Odin if you don't want to do the cryptography from scratch.
3. Databases. SQL is very easy and you have all the resources online to learn how to use MySQL (or use something better that you want to use; I personally stick with MariaDB and just use MySQL). You got encryptions down, you got databases down, now you can work on handlers.
4. XML Parsing. Parsing an XML isn't hard at all, if you are a Java Developer, you should know FileIO especially in Java. You can reference an OdinMS source or just copy this as well if you don't want to improve it (which you should!)
5. Structure. You'll need to structure your source. You will need a World Server, a Center, and a Game (Channel). A Center will control your Worlds which will control your Channels (for the use of multi-worlds and such). You will need Fields, Field Objects, Users, ClientSockets, etc. Constructing the basics here really isn't hard at all..
6. Packets and handlers. Complex? Not at all. They are actually quite simple. Learn them and reference Odin, IDA, whatever. With the resources available here you can replicate what the official game developers have been doing and do it better.

Anyway, Agreed Hilia, but good luck with this I guess.
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
What is your definition of "java dev in RL"? From your reply you don't seems to be a "java deff in RL".

Mind explaining your points, if my assumption is wrong:
1.) Not enough knowledge: The amount of knowledge you need for a ms server is barely nothing. The only knowledge you need is the knowledge about sockets and databases. The encryption for example can be ripped of some source,maybe organize it a little more and then you have to never look at it again.
2.) To complex: How can this be to complex? There are enough resources available,even the official server files.

Also if you are making a development thread, post a link to your source code, or come up with a very good reason why you won't post it. Else don't bother making a development thread.


1-) Working with frameworks like Spring, Hibernate and other enterprise frameworks is really easy compared to server development.
2-) Its not complex as writing a compiler, but it still takes some time, which i currently dont have.
3-) Its just a project for fun, lol.


If i wish to post the source code i will probably post in releases and not here.



Writing a source from scratch is not complex at all. It takes a lot of time if you do not know what you are doing (obviously), but if you are a "Java Developer In RL", then writing a source should be easy.

I've went over it before, it doesn't take too many steps to build your source. Rather than trying to fix one up and change everything, just start one from scratch. You won't have to go through the trouble of fixing all your handlers and such after removing RMI and etc.

1. Server acceptors and Channels. You need to create a server acceptor, bind your login/world/channels, and handle how your session's are activated.
2. Encryption/Decryption. You need AES-OFB and Shanda encryption ciphers working. Now that you have server acceptors, you can build Decoder/Encoders to read in/send out packets. You can also just copy it from Odin if you don't want to do the cryptography from scratch.
3. Databases. SQL is very easy and you have all the resources online to learn how to use MySQL (or use something better that you want to use; I personally stick with MariaDB and just use MySQL). You got encryptions down, you got databases down, now you can work on handlers.
4. XML Parsing. Parsing an XML isn't hard at all, if you are a Java Developer, you should know FileIO especially in Java. You can reference an OdinMS source or just copy this as well if you don't want to improve it (which you should!)
5. Structure. You'll need to structure your source. You will need a World Server, a Center, and a Game (Channel). A Center will control your Worlds which will control your Channels (for the use of multi-worlds and such). You will need Fields, Field Objects, Users, ClientSockets, etc. Constructing the basics here really isn't hard at all..
6. Packets and handlers. Complex? Not at all. They are actually quite simple. Learn them and reference Odin, IDA, whatever. With the resources available here you can replicate what the official game developers have been doing and do it better.

Anyway, Agreed @Hilia, but good luck with this I guess.
Of course that writing a v62 private server should be easy, you have all the resources in the internet.

2-) I dont know this part, but only the basic.
3-) This is easy, but i prefer MongoDB, xD.
4-) XML parsing is easy in Java.
5-) Single responsability principle, do one thing and well done.
6-) This is a really nice pattern that i like in OdinMS source.

Creating a source from scrach should be really challenging, i wish i had some time to work on that.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
Or maybe just let him do what he has stated he wants to do in the OP post? What do you expect him to gain from abandoing what he's having fun with right now to instead start something that is way too much work?

On Topic: Good luck with your dev and don't listen to people on this forum unless they have say something that can actually contribute to your dev, it's not worth your time.
 
(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
Good luck and have fun even though I agree with just about every post above. I noticed myself that starting from scratch is the best move. But if you are afraid of doing so right now, then don't. I wanted to know more things before I started too :)

Just a side note: Fraysa's argument of "eclipse just being an IDE" still holds up since "because i actually use maven to easy structure the project" certainly isn't a eclipse only thing. You can use maven in multiple IDE's. (thank god cuz maven is awesome)
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
Good luck and have fun even though I agree with just about every post above. I noticed myself that starting from scratch is the best move. But if you are afraid of doing so right now, then don't. I wanted to know more things before I started too :)

Just a side note: Fraysa's argument of "eclipse just being an IDE" still holds up since "because i actually use maven to easy structure the project" certainly isn't a eclipse only thing. You can use maven in multiple IDE's. (thank god cuz maven is awesome)

Well, the most used IDE's are Eclipse and Intelij.
Also, many other IDE's use eclipse components, like the Spring Ide, for example.

The reason i decided to use maven is because it really makes easy to structure the building process and i never use it from an IDE, just the command line.

I would start from scratch if i had time, but now i just want a working version.


If anyone want to try my server, the link of the beta server is at:
maplebr-microservices2.rhcloud.com/
 
Joined
Aug 10, 2008
Messages
858
Reaction score
516
so you can run everything on 1 pc and still use hotswapping


Development threads you post screenshots and details, not the source code.
How do you hotswap using only a single JVM? Especially since these servers are usually designed to know nothing about the past runs except for what is saved in the database.

Writing a source from scratch is not complex at all. It takes a lot of time if you do not know what you are doing (obviously), but if you are a "Java Developer In RL", then writing a source should be easy.

I've went over it before, it doesn't take too many steps to build your source. Rather than trying to fix one up and change everything, just start one from scratch. You won't have to go through the trouble of fixing all your handlers and such after removing RMI and etc.

1. Server acceptors and Channels. You need to create a server acceptor, bind your login/world/channels, and handle how your session's are activated.
2. Encryption/Decryption. You need AES-OFB and Shanda encryption ciphers working. Now that you have server acceptors, you can build Decoder/Encoders to read in/send out packets. You can also just copy it from Odin if you don't want to do the cryptography from scratch.
3. Databases. SQL is very easy and you have all the resources online to learn how to use MySQL (or use something better that you want to use; I personally stick with MariaDB and just use MySQL). You got encryptions down, you got databases down, now you can work on handlers.
4. XML Parsing. Parsing an XML isn't hard at all, if you are a Java Developer, you should know FileIO especially in Java. You can reference an OdinMS source or just copy this as well if you don't want to improve it (which you should!)
5. Structure. You'll need to structure your source. You will need a World Server, a Center, and a Game (Channel). A Center will control your Worlds which will control your Channels (for the use of multi-worlds and such). You will need Fields, Field Objects, Users, ClientSockets, etc. Constructing the basics here really isn't hard at all..
6. Packets and handlers. Complex? Not at all. They are actually quite simple. Learn them and reference Odin, IDA, whatever. With the resources available here you can replicate what the official game developers have been doing and do it better.

Anyway, Agreed Hilia, but good luck with this I guess.
1) This takes about 10 minutes to do if you're using something like Netty's Bootstrap and I don't think it's significant.
2) Easily done, just rip it from somewhere and some optimizations can be done for scaling if desired (generally one of the first things to do since it makes setup from your #1 easier due to protocol encoding/decoding setup without having to go back).
3) Designing a database can be a bit difficult if you're building from scratch. There is a lot of information you have to consider as you progress through creation. Without knowing everything about your target at a time, it's a lot harder than just saying "let's create a database" and having it magically appear.
4) Game data (mobs/maps/items/etc.) is fairly encompassing if you intend to do it correctly. There's not a lot of ways you can actually change this from how Odin did it aside from the backend (i.e. the actual holder of the information and how you load it).
5) Server architecture is actually one of the first considerations, but you will not get around having at least one "login" and "channel" server: these are the minimum requirements. I don't consider channel/"game server" specific objects as being original structure design. There's not an incredible amount of freedom with regards to how the game is supposed to work, so that's more about what happens behind the scenes to make the game function appear. Therefore, I think the latter portion is better defined as handling requirements rather than structural designation. Also, the handling requirements take probably the 2nd most amount of time behind packet debugging (designate this 5.5 for below).
6) This can actually be relatively challenging since you will eventually keep building on top of the packets you already have. As you adjust your packets and information they use, you will take more and more time to debug their functionality since they're usually the packets that are in deep phases of the game that require the most debugging. This can take the longest if you intend on having more functionality than what most public sources have. Note: this is assuming you are NOT using some sort of absolute reference (like BMS server files); and, even then it takes a bit of time to make sure your code works exactly with the packet information being sent out.

Ranking these in terms of time requirement (top being most and bottom being least):
#6
#5 .5
#3
#4
#5
#1
#2
 
Back
Top