Interesting project, but as far as I know from my experience with Node, it's having an awful computational power because MU it's not a JavaScript based game or a web game.
I think it's good to replace the DataServer, ConnectServer and JoinServer with a Node app because these ones are being used at some certain specific moments defined, similar to a web API being called, and these don't require high computation. But for the GameServer, there's a total different story, and you probably saw a GameServer source code. Node JS is having many limitations, and the main loop is async, so non-blocking IO is applied here (e.g. a character will receive the position correctly and the other characters around your character aren't cause the performance was bad during the constant position update and other million things, and being async means it doesn't care in what order the things are arriving or are processed without having a processing index order or timestamp on send).
Anyway, would be interesting to see it, so good luck.
I'm sorry to say, but this smells like a little bit of ignorance.
it's having an awful computational power because MU it's not a JavaScript based game or a web game.
1. Awful computation? Please backup your claim with data, Node.js is perfectly capable of receiving millions of concurrent requests if optimize correctly. (There is actually proof to this, just Google a little bit)
2. What has to do that MU is not a JavaScript game? The client can be written in any language, and the backend can be written in a totally different language they dont need to be the same.
3. You really think Node.JS sole purpose is to be used for a web api? huh this statment just scream inexperience.
But for the GameServer, there's a total different story, and you probably saw a GameServer source code
Node.JS should be perfectly capable to handle k's of concurrent users, 10k or more easily, for what it's worth, I dont think any private server reaches those numbers. Yes, if you are speaking about 500k connections thats a different story. And that level, the language itself doesnt changes much (yes but) bigger changes that give you more bang for your buck for example:
Move your data storage closer your server, on the same host, same network, use an optimized sql store etc.
and the main loop is async
What's wrong with the main loop being async? As I told, Node.JS is very performant and more if you optimized, Most of the "busy" work on these type of games is actually not CPU work but waiting to send/retrieve data from a store (SQL, or whatever) (add latecncy if its not on the same host/network), thats where the main "work" is, retrieving and sending data the CPU has to wait, so its actually better to be async because instead of waiting to retrieve/send data you actually do other work.
performance was bad during the constant position update and other million things,
Repeat, why should performance be bad?
and being async means it doesn't care in what order the things are arriving or are processed without having a processing index order or timestamp on send).
Isn't that something you just can handle at the application level? You do it? Whats the big deal here. You can have a fifo queue where you add messages in order of arrival, and you process them in that same order, fifo, just one idea, there are plenty of ways.
This is a very interesting project, continue on it! the language choice is good which makes the project more accessible to other people as Node.JS is way more adopted.
Choosing a language should never be done alone because of peromance, a language is chosen because of many factors, of them performance, accesibility, knowledge, and many more. There is no "right" language, there are only tradeoffs.