- Joined
- Oct 4, 2007
- Messages
- 173
- Reaction score
- 74
Lol, about few hours ago i was looking at his github repos, but now 2 deleted, wtf?His repo is unavailable, but you can explore the code directly from npmjs:You must be registered to see links
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!Lol, about few hours ago i was looking at his github repos, but now 2 deleted, wtf?His repo is unavailable, but you can explore the code directly from npmjs:You must be registered to see links
I'm sorry to say, but this smells like a little bit of ignorance.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.
it's having an awful computational power because MU it's not a JavaScript based game or a web game.
web API
But for the GameServer, there's a total different story, and you probably saw a GameServer source code
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.and the main loop is async
Repeat, why should performance be bad?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).
I totally agree. Most of the time used in this case come from network latency rather than processor time. And for the async loop, a simple control using a stack would do. I've seen MMOs writen in Python, one of the slowest programming languages existing.I'm sorry to say, but this smells like a little bit of ignorance.
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.
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.
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.
Repeat, why should performance be bad?
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.
Yeah, Python is also TOTALLY capable. Let's not forget, Python or Node.JS is not "slow", they can be very performant. They are just slow compared to C or Assembly, but still for us humans it stil mind boggling fast.I totally agree. Most of the time used in this case come from network latency rather than processor time. And for the async loop, a simple control using a stack would do. I've seen MMOs writen in Python, one of the slowest programming languages existing.
Yeah, Python is also TOTALLY capable. Let's not forget, Python or Node.JS is not "slow", they can be very performant. They are just slow compared to C or Assembly, but still for us humans it stil mind boggling fast.