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!

NeoMS v90 source

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

Since I'm no longer going to work with developments in this source, this is the right time to release it.

This is a v90 emulator written in Java and based on the monolithic source Lithium.

What works?


  • Evans with minor skill bugs.
  • Dualblades(GMS like from level 1 to 20, small skill glitches)
  • Aran(quests from level 10 to 70 are pretty gms like)
  • 50% Scrolls
  • Cash shop works
  • Mesos bags works.
  • Maple Point coins work
  • Expand inventory works
  • Merchants
  • Boats works
  • Cubes work
  • Vegas scrolls work like GMS
  • Gachapon
  • Havana Boss
  • Horntail
  • Zakum Quest should work
  • Papulatus
  • Source uses 1 handler class per packet.
  • Mount quest
  • View all char option works
  • Localhost should support Windows 8 and Windows 10(not tested).
  • Source code uses maven structure
  • Included source code for neoms.dll which was used to patch some stuff in the localhost ex: not closing the game when opening the voting page using the website packet

I already posted about this source in this topic:
http://forum.ragezone.com/f431/maple-story-orion-v90-1105582/

How to compile it:


  1. Install a mysql server and run the script backup.sql in sql folder.
  2. Install JDK 8.
  3. Download and Install Apache Maven:
  4. Run the command: mvn clean package -DskipTests on project root folder
  5. The built jar file will be inside the dist folder.
  6. Run the script start.bat inside the root folder.
  7. If you want to import on eclipse, you can use use the "Import as maven project" and then run the main class Start. Just don't forget to add the necessary JVM properties.



Accessing the game:

You can run the localhost included in dist folder using localhost.exe <ip> <port>

Using the NeoMS.dll.

If you ever need to edit something in the provided localhost using this external dll.

Edit your localhost and search for the string 'dinput8', change it for a name that you want with the exactly length of 7 characters and then save it. Put the dll inside your maple story folder with the name you provided in your localhost and run the game.




Note:
You will see random npcs around the town's.
In order to fix this you have to edit your Map.wz using HaCreator and then remove the npcs and also update the xml files in wz folder.
Pirate skills seens glitched.

How to contribute?

I created a branch called develop which will be used for development. If you want to push your code, please open a pull request to develop branch and then I will review and merge into master.

What's next?

I'm available for private server developments in case you need a java developer. Besides the current position that I have working on a v83 server, I'm going to start working on the v40 GMS BETA(or any other lower version).


Source:
 
Last edited:
Newbie Spellweaver
Joined
Sep 11, 2016
Messages
59
Reaction score
81
This is a v90 emulator written in Java and based on the monolith source Lithium.

based on the monolith source Lithium
Monolith - a large and impersonal political, corporate, or social structure regarded as intractably indivisible and uniform.

What works?


  • Evans
  • Dualblades(GMS like from level 1 to 20, some small skill glitches)
  • Aran(quests from level 10 to 70 are pretty gms like)
  • 50% Scrolls
  • Cash shop works
  • Mesos bags works.
  • Maple Point coins work
  • Expand inventory works
  • Merchants
  • Boats works
  • Cubes work
  • Vegas scrolls work like GMS
  • Gachapon
  • Havana Boss
  • Horntail
  • Zakum Quest should work
  • Papulatus
  • Mount quest

So basically the basic features of MapleStory + some quests?

  • Source code uses maven structure

What is "maven structure"? Are you trying to say you created a maven project instead of a java project which the only difference is a pom file and how you add dependencies?


How to compile it:


  1. Install a mysql server and run the script backup.sql in sql folder.
  2. Install JDK 8.
  3. Download and Install Apache Maven:
  4. Run the command: mvn clean package -DskipTests
  5. The built jar file will be inside the dist folder.
  6. Run the script start.bat inside the root folder.

I can shorten that for you since the title says "how to compile it":
1. Open your chosen IDE
2. Open Project (You only have to click the directory)
3. Compile


Note:
You will see random npcs around the town's.
In order to fix this you have to edit your Map.wz using RaCreator and then remove the npcs and also update the xml files in wz folder.

RaCreator
Can you link me to RaCreator?
Also, this sounds like a source problem and not a wz problem.

Source:

Can you explain why you have multiple dependencies that you don't actually use? I checked your pom and you have netty + log4j + slf4j. You don't use netty anywhere in your source and you don't need 2 different logger dependencies.

But the kicker and best part of this:
M7P4kp2 - NeoMS v90 source - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
based on the monolith source Lithium
Monolith - a large and impersonal political, corporate, or social structure regarded as intractably indivisible and uniform.

Monolithic, everything runs on same JVM, which is a bad thing.


So basically the basic features of MapleStory + some quests?

Do we have another source v90 like this?

What is "maven structure"? Are you trying to say you created a maven project instead of a java project which the only difference is a pom file and how you add dependencies?

This is a more "professional" way of controlling your java project build.

I can shorten that for you since the title says "how to compile it"
You don't know what a real maven project looks like. Have you ever worked with Java development? Good luck doing that on your Linux server that compiles automatically your code directly from master using a Dev ops solution like Team City or Jenkins.

Can you explain why you have multiple dependencies that you don't actually use? I checked your pom and you have netty + log4j + slf4j. You don't use netty anywhere in your source and you don't need 2 different logger dependencies.

I was going to migrate to apache mina to netty and replace the current logging feature with a sf4j solution.
Regarding the logging dependencies, log4j2 is one thing and sf4j is another thing.

"But the kicker and best part of this:"
What's the problem, it's just the read me. Who cares? If you are not satisfied with the read.me, please open a pull request.
 
Last edited:
Newbie Spellweaver
Joined
Aug 6, 2014
Messages
56
Reaction score
42
I would have liked to see some real modularization of the source. Also, do you have any changelog for the work you've done? It seems a little odd to use Github to host your code, but not actually use it to track commits and issues. Those would be helpful to give people context into what was done and how. If you do not have private github repositories, you could've used Gitlab or bitbucket.
Ideally, instead of saying, "Dualblades(GMS like from level 1 to 20, some small skill glitches)" we would know which skills are glitched and how they're glitched.

People don't have an incentive to use your source without a more granular idea of what works and what doesn't. Maybe you can talk about some of the performance improvements you've made (if any)? Code cleanup? Ideally you would link to commits with these things, but since you cannot, maybe add some more documentation?

Of course, you don't have to do any of these things, but I'm not sure if there's a strong reason to use your source, and generally when you release software you want people to use it, right?
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
I would have liked to see some real modularization of the source. Also, do you have any changelog for the work you've done? It seems a little odd to use Github to host your code, but not actually use it to track commits and issues. Those would be helpful to give people context into what was done and how. If you do not have private github repositories, you could've used Gitlab or bitbucket.
Ideally, instead of saying, "Dualblades(GMS like from level 1 to 20, some small skill glitches)" we would know which skills are glitched and how they're glitched.

People don't have an incentive to use your source without a more granular idea of what works and what doesn't. Maybe you can talk about some of the performance improvements you've made (if any)? Code cleanup? Ideally you would link to commits with these things, but since you cannot, maybe add some more documentation?

Of course, you don't have to do any of these things, but I'm not sure if there's a strong reason to use your source, and generally when you release software you want people to use it, right?

I do have a private repo indeed, but there are some stuff there that i'm not releasing right now.

I tried to break the source in maven modules, but I quit the development right after that.
Edit: I gave up when I found some circular references between the packages.

My original idea was to break the monster into 3 parts: login, world and channel and keep the comunication/migration between them using REST.



You can find a small change log here:
http://forum.ragezone.com/f431/maple-story-orion-v90-1105582/



Yeah, what he said.

How is the performance? Not going crazy on memory usage is it? @Eric has so much trouble with his v90 memory usage.
Well, I was able to keep the server running for more than 1 week with only 1GB of RAM.
 
Custom Title Activated
Loyal Member
Joined
Mar 14, 2010
Messages
5,363
Reaction score
1,343
I do have a private repo indeed, but there are some stuff there that i'm not releasing right now.

I tried to break the source in maven modules, but I quit the development right after that.

You can find a small change log here:
http://forum.ragezone.com/f431/maple-story-orion-v90-1105582/




Well, I was able to keep the server running for more than 1 week with only 1GB of RAM.

I can leave a server up on 1 gb for a very long time also if nobody is on it, so I'll take that as no known better performance
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
I can leave a server up on 1 gb for a very long time also if nobody is on it, so I'll take that as no known better performance
I had like 5 people on at once, but never like 50.
I was able to run with 5~8 players for on a aws EC2 micro instance.
 
Newbie Spellweaver
Joined
Sep 11, 2016
Messages
59
Reaction score
81
Monolithic, everything runs on same JVM, which is a bad thing.

Depends on the project I suppose. It kills the ability to scale between multiple servers but there is not too many downsides besides that. (At least regarding this source)


Do we have another source v90 like this?

This looks no different than any other v90 released.


This is a more "professional" way of controlling your java project build.

Completely bias to the person or team working on the project.


You don't know what a real maven project looks like. Have you ever worked with Java development? Good luck doing that on your Linux server that compiles automatically your code directly from master using a Dev ops solution like Team City or Jenkins.

Yeah I've never worked with Java Development or Maven. You caught me. When you have in your compile instructions: "run start.bat", one assumes immediately windows. Next time change it to start.sh
You don't see me saying "You've never even booted into a nix distro". Personal insults do not work sir.


I was going to migrate to apache mina to netty and replace the current logging feature with a sf4j solution.
Regarding the logging dependencies, log4j2 is one thing and sf4j is another thing.

Well you did not use netty so remove it from the pom. There's no need for two logging libraries so remove one of those as well.

What's the problem, it's just the read me. Who cares? If you are not satisfied with the read.me, please open a pull request.

I would take you up on that but you'll close my PR.
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
I can leave a server up on 1 gb for a very long time also if nobody is on it, so I'll take that as no known better performance

A source will never have the best performance with everything running on a single JVM, that's a fact.

I would say that the old odinMS architecture is still the best.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
I'd say that this makes my precious v90 look bad, but I can't complain considering it's just another OdinMS repack with some fixes and additions that never happened..the usual.

For starters, most of what you've listed generally works in most sources already, or are fixes/releases here on RaGEZONE. Not to mention, most of those things I can clearly recall being just fine in Tropik. Papalatus has worked since the start of Odin and it's MobStats have been implemented several years ago as well. Horntail and it's reactors, cubes, etc etc.

Is there a v90 like this? Maybe not available to the public, but I can assure you my v90 does in fact have all of this entirely. Also, 1GB of RAM is quite a lot, especially for a test server or even a small server. My v90 can run on less than 200MB for over a month with a small community of testers, you just have to manage memory yourself and focus more on performance. Oh, and for now I currently run on a single JVM myself, while I plan to change that in the future.

Personally, I would've preferred to see more things like a successful migrate to entirely Netty, maybe some encryption, Database, general handling, packets, data parsing, etc improved or updated throughout the source. You're working on Lithium, which had a lot of poor implementations from what I remember, and most releases typically always come with small game fixes and additions like this. However, you sound like you know what you're doing, so I was hoping for more core structure changes than gameplay fixes.
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
Depends on the project I suppose. It kills the ability to scale between multiple servers but there is not too many downsides besides that. (At least regarding this source)

Besides the fact that if someone attack your machine, everything will go down.

This looks no different than any other v90 released.
The only source is the oxysoft source, which was full of bugs and third person issues..

Completely bias to the person or team working on the project.

Most enterprise applications uses a maven/Ivy/graddle/ant structure.

.
Yeah I've never worked with Java Development or Maven. You caught me. When you have in your compile instructions: "run start.bat", one assumes immediately windows. Next time change it to start.sh You don't see me saying "You've never even booted into a nix distro". Personal insults do not work sir.

This is the shell that I use for another server:
java -d64 -Xms512m -Xmx4g -XX:+UseConcMarkSweepGC -jar -DBASE_FOLDER="" -Dlog4j.configurationFile=log4j2.xml game-SNAPSHOT.jar
There's no difference, in Linux you will just need to run it using nohup, lol.

.
Well you did not use netty so remove it from the pom. There's no need for two logging libraries so remove one of those as well.

Please open a pull request and I will be glad to apply it.



I'd say that this makes my precious v90 look bad, but I can't complain considering it's just another OdinMS repack with some fixes and additions that never happened..the usual.

For starters, most of what you've listed generally works in most sources already, or are fixes/releases here on RaGEZONE. Not to mention, most of those things I can clearly recall being just fine in Tropik. Papalatus has worked since the start of Odin and it's MobStats have been implemented several years ago as well. Horntail and it's reactors, cubes, etc etc.

Is there a v90 like this? Maybe not available to the public, but I can assure you my v90 does in fact have all of this entirely. Also, 1GB of RAM is quite a lot, especially for a test server or even a small server. My v90 can run on less than 200MB for over a month with a small community of testers, you just have to manage memory yourself and focus more on performance. Oh, and for now I currently run on a single JVM myself, while I plan to change that in the future.

Personally, I would've preferred to see more things like a successful migrate to entirely Netty, maybe some encryption, Database, general handling, packets, data parsing, etc improved or updated throughout the source. You're working on Lithium, which had a lot of poor implementations from what I remember, and most releases typically always come with small game fixes and additions like this. However, you sound like you know what you're doing, so I was hoping for more core structure changes than gameplay fixes.
I used tropik, which had so many bug's, for example, trade didnt work at all, third person movement had a lot of glitches, merchant also didnt work... I put almost all the static method packet handling of lithium inside a packet handler like the old odin architecture..
 
Newbie Spellweaver
Joined
Sep 11, 2016
Messages
59
Reaction score
81
Besides the fact that if someone attack your machine, everything will go down.

1. Get a firewall.
2. That is included in scalability (previously noted)

The only source is the oxysoft source, which was full of bugs and third person issues..

Pretty sure there are more than that released but I don't feel like searching.

Most enterprise applications uses a maven/Ivy/graddle/ant structure.

Again, it depends on the project team. Saying "oh he uses maven so its more professional" has no depth. Project teams use what works best for them, not because someone else uses it.

This is the shell that I use for another server:
java -d64 -Xms512m -Xmx4g -XX:+UseConcMarkSweepGC -jar -DBASE_FOLDER="" -Dlog4j.configurationFile=log4j2.xml game-SNAPSHOT.jar
There's no difference, in Linux you will just need to run it using nohup, lol.

Did I say anything about the script? No. I said you want to run start.bat as stated in your instructions which is a windows scripting engine yet you rebutted my instructions because they weren't friendly to a nix machine. Your instructions will not work on a nix machine so I didn't write a new instruction list for a nix machine.

Should I even bother asking why you are using ConcMarkSweep as your GC when you have better alternatives?
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
1. Get a firewall.
2. That is included in scalability (previously noted)



Pretty sure there are more than that released but I don't feel like searching.



Again, it depends on the project team. Saying "oh he uses maven so its more professional" has no depth. Project teams use what works best for them, not because someone else uses it.



Did I say anything about the script? No. I said you want to run start.bat as stated in your instructions which is a windows scripting engine yet you rebutted my instructions because they weren't friendly to a nix machine. Your instructions will not work on a nix machine so I didn't write a new instruction list for a nix machine.
Come on, if you know the basics of Linux you will be able to translate the bat to a Linux version, lol.

About the maven, I decided to use it because I have experience with it and it makes the development easier by providing a standard project structure and also the opportunity to easily control your artifacts.
 
Newbie Spellweaver
Joined
Sep 11, 2016
Messages
59
Reaction score
81
Come on, if you know the basics of Linux you will be able to translate the bat to a Linux version, lol.

You should assume 99% of the people in /f425/ do not know how to operate linux nor do they know how to convert a batch script to a shell script.

About the maven, I decided to use it because I have experience with it and it makes the development easier by providing a standard project structure and also the opportunity to easily control your artifacts.

My point proven.
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
I'd say that this makes my precious v90 look bad, but I can't complain considering it's just another OdinMS repack with some fixes and additions that never happened..the usual.

For starters, most of what you've listed generally works in most sources already, or are fixes/releases here on RaGEZONE. Not to mention, most of those things I can clearly recall being just fine in Tropik. Papalatus has worked since the start of Odin and it's MobStats have been implemented several years ago as well. Horntail and it's reactors, cubes, etc etc.

Is there a v90 like this? Maybe not available to the public, but I can assure you my v90 does in fact have all of this entirely. Also, 1GB of RAM is quite a lot, especially for a test server or even a small server. My v90 can run on less than 200MB for over a month with a small community of testers, you just have to manage memory yourself and focus more on performance. Oh, and for now I currently run on a single JVM myself, while I plan to change that in the future.

Personally, I would've preferred to see more things like a successful migrate to entirely Netty, maybe some encryption, Database, general handling, packets, data parsing, etc improved or updated throughout the source. You're working on Lithium, which had a lot of poor implementations from what I remember, and most releases typically always come with small game fixes and additions like this. However, you sound like you know what you're doing, so I was hoping for more core structure changes than gameplay fixes.
I focused more on gameplay than structural changes... I don't really have the time for changing the core.. The only core change was the change in the way the packets are handled.



You should assume 99% of the people in /f425/ do not know how to operate linux nor do they know how to convert a batch script to a shell script.

My point proven.

1-) They should learn. Should I do like the other guys then? Release the source and not release the database structure in order to prevent "leechers"?
2-) Tell me one big java project that does not uses maven. I will list a few that uses:







Eric

Are you going to release your v90 source?
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
I focused more on gameplay than structural changes... I don't really have the time for changing the core.. The only core change was the change in the way the packets are handled.

Eric

Are you going to release your v90 source?

I would've started with structure changes rather than gameplay changes. It's one major thing in sources that not too many people ever touch, but it's also areas where most people are unfamiliar with or aren't sure how to improve. Starting with the switch to Netty, it's something that's easier to work with and would fix some issues, plus it has quite a few perks if I must say so myself. Packet readers and writers could always be switched to ByteBuf's from there, and you can entirely clean out all of tools.data.input/output and go down to just two nice clean files that do the same. You can rewrite your encoder and decoders and fix some issues there. You can rewrite AES from scratch instead of having to rely on Java's silly crypto and JCE requirement. You went back to Odin structure, I guess that works. While you converted back actual handlers, did you bother at all utilizing their data, or are you handling everything the same as all Odin sources seem to do? Handlers include so much more information than what is currently used. Have you updated any actual packets and rewrote them? Many packet structures and headers are wrong, especially in the public v90 sources. You have over 400 real packet operations both client and server related within the v90 client. Your average source only handles probably half of them, let alone with the full information. The database is still using the ancient MySQL drivers instead of switching to MariaDB, another thing that should have been changed. The whole structure of the database and it's use should also be changed. You should rewrite all of "DatabaseConnection", and utilize a library, something like HikariCP. You should also manage all of your database functions in their own desired files instead of scattering them all over the place. The actual database itself needs work, too. Then we have timer threads that should definitely be improved throughout the source and how they're used. Not to mention, MapleMap and MapleMonster should be almost entirely rewritten and made threadsafe. Then we have data parsing, which in Lithium is awful and slow. People still use XML parsing which in Odin is poor to begin with, and should be switched to binary loading so that you 120second XML load drops to half a second. There are many other improvements with things like scripting which is also lacking, etc etc. Instead of fixing common bugs with jobs and gameplay which is nice and all, major structure improvements would have been beautiful as an end result, and people could release little fixes for the rest.

As for releasing my source, I have debated over it for a while. It's something I've written from scratch and have spent the past three years working on, so if I am releasing it, it'll likely be a while from now. While my intentions for it were to make a server (hence DEV Remastered v90), my goal afterwards it seems is to release everything. Considering it's a Nexon replica, it's not only documented itself but also includes a lot of information that would further explain the overall structure of what Nexon is doing. Guess you'll have to wait and see ;)
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
I would've started with structure changes rather than gameplay changes. It's one major thing in sources that not too many people ever touch, but it's also areas where most people are unfamiliar with or aren't sure how to improve. Starting with the switch to Netty, it's something that's easier to work with and would fix some issues, plus it has quite a few perks if I must say so myself. Packet readers and writers could always be switched to ByteBuf's from there, and you can entirely clean out all of tools.data.input/output and go down to just two nice clean files that do the same. You can rewrite your encoder and decoders and fix some issues there. You can rewrite AES from scratch instead of having to rely on Java's silly crypto and JCE requirement. You went back to Odin structure, I guess that works. While you converted back actual handlers, did you bother at all utilizing their data, or are you handling everything the same as all Odin sources seem to do? Handlers include so much more information than what is currently used. Have you updated any actual packets and rewrote them? Many packet structures and headers are wrong, especially in the public v90 sources. You have over 400 real packet operations both client and server related within the v90 client. Your average source only handles probably half of them, let alone with the full information. The database is still using the ancient MySQL drivers instead of switching to MariaDB, another thing that should have been changed. The whole structure of the database and it's use should also be changed. You should rewrite all of "DatabaseConnection", and utilize a library, something like HikariCP. You should also manage all of your database functions in their own desired files instead of scattering them all over the place. The actual database itself needs work, too. Then we have timer threads that should definitely be improved throughout the source and how they're used. Not to mention, MapleMap and MapleMonster should be almost entirely rewritten and made threadsafe. Then we have data parsing, which in Lithium is awful and slow. People still use XML parsing which in Odin is poor to begin with, and should be switched to binary loading so that you 120second XML load drops to half a second. There are many other improvements with things like scripting which is also lacking, etc etc. Instead of fixing common bugs with jobs and gameplay which is nice and all, major structure improvements would have been beautiful as an end result, and people could release little fixes for the rest.

As for releasing my source, I have debated over it for a while. It's something I've written from scratch and have spent the past three years working on, so if I am releasing it, it'll likely be a while from now. While my intentions for it were to make a server (hence DEV Remastered v90), my goal afterwards it seems is to release everything. Considering it's a Nexon replica, it's not only documented itself but also includes a lot of information that would further explain the overall structure of what Nexon is doing. Guess you'll have to wait and see ;)
I would certainly do more If I had the time.

I think in this case, the monolith source is so bad written that writting from scratch would be the better choice since there's enougth public knowledge about Nexon backend architecture(and IDA of course).

You forgot to mention the transaction management.

Neverless, all the changes you explained are valid.
 
Mythic Archon
Joined
Jul 2, 2013
Messages
723
Reaction score
70
I likes so I leech. tyty senpai 4 src! Eric no give his v90 :(
 
Back
Top