Seriuosly interested, why is Node.js better suited as a gameserver than say C or Java ?
What exactly are you doing on the serverside? Is it an authorative setup or are you just passing position messages around (in which cases huge amounts of players wouldnt be suprising) ?
Did you reverse engineer minecrafts multiplayer protocol or is this an alternate implementation?
EDIT just looked it up and it seems like the minecraft network protocol is public, so no reverse engineering needed. It also looks like its not an authorative setup which could cause cheating problems in PvP enviroments down the line
Sure, Java or C will be much faster at any computational work. And I am no node.js fan-boi. But doing actual asynchronous local-file IO in C is non-trivial, and if their server is not CPU bound, there doesn't seem to be anything wrong with using node.js. Could you also use libuv from C? Sure.
The OP made too general of a statement because there are certain cases where V8 can preform better than the JVM; however, generally Java does seem to perform better (ignoring startup time).
Heh. Last time I checked v8 regexes were really fast, except their string builder was a disaster... it wrapped every piece of string as a js object (gc and everything).
Sounds familiar to Java's own string concatenation. In Java you use StringBuilder / Buffer to create larger strings from smaller ones; in Node you'd use Buffers, although I never dived too deep into those.
im not an expert but arent UDP Socket connections more like an fire and forget scenario which doesnt create alot of waiting ? Id think that game servers have to compute heavier stuff per tick and have to process all the incoming packets anyway so that waiting for IO isnt really an issue ?
It might make sense to have the game world updating and sending/recieving packets in different threads though, so is that were nodejs makes sense?
The network stuff is, yeah. But presumably you want your minecraft world to be durable, which means hitting disk. And you don't want your network stuff blocked behind that.
ok makes sense but i wouldnt write every change to the disk anyway. The server state can well be kept inside memory and only be saved once in a while, but nevertheless doing that in a different thread would make sense.
The protocol isn't public and Mojang has always refused to say anything about it. The protocol is RE'd by http://mcdevs.org/ which runs http://wiki.vg. There is no technical or otherwise limitation on authorization, they just haven't implemented it yet.
Cool, a distributed minecraft server. But where's the source, or something more technically meaty? "I made a distributed X and here's some screenshots" isn't that interesting alone.
I plan on open sourcing it and trying to foster a community of modding/contributions, but first I would like to clean up the code. Also, we want to figure out our business strategy.
It was going to use node.js; So far I have written my prototypes in CoffeeScript, but if I end up going through with my project it will likely be with vanilla JS. The premise of it wasn't for it to be a MMO.
You can imagine my surprise when I found out who purchased the domain and what projects you are working on, knowing that redstone.io was pretty much destined to be node.js and minecraft related.
Do you have any sort of permission or support from Mojang? It might not be a good idea to invest a substantial amount of time in "A Minecraft MMO" without this...
We emailed them for permission to make a custom server a while back, and they said it was ok. We haven't contacted them specifically about the MMO yet though.
When you made that comment, it was the middle of the night here. Everyone was online at USA after-work hours.
The reason the world was near-pristine was because I messed up the storage for this deployment, which made so every once in a while it would regenerate the chunks.
Please tell me you are going to opensource / release this, this would be so awesome for some Minecraft Related projects i'm doing ( Gigantic PVP & RPG Servers ) I just can't go >600 Players w/o lag on a decent E3 Series.
I've seen lots of work on alternate Minecraft servers; has anyone worked on an open Minecraft client (obviously not named "Minecraft" for trademark reasons, but compatible with the network protocol)?
Spout is working on a client as well as an open server, both are designed to be general purpose for voxel based games but have minecraft compatibility plugins: https://github.com/SpoutDev/Spout
That's one of the reasons I don't like Notch. This game is literally perfect for WebGL. The rendering done is minimal, the CPU work done is minimal, the textures are (or could be) tiny, and the code required would be tiny.
You don't like notch, who is one of the nicest and modest people in the world, because of a programming decision he made on his game and his product? You may disagree with a business decision, but saying you dislike someone personally because of it is a bit much.
Possibly because that's what Notch was comfortable with, it's a valid choice, and he built it and made big stacks of money instead of agonizing about what language to use on the grounds of whether people would think he was cool.
There are a couple projects in this direction (I looked into trying to make a bot at one point). Unfortunately, any names have slipped my memory at this point. But be assured, they exist.
What exactly are you doing on the serverside? Is it an authorative setup or are you just passing position messages around (in which cases huge amounts of players wouldnt be suprising) ?
Did you reverse engineer minecrafts multiplayer protocol or is this an alternate implementation?
EDIT just looked it up and it seems like the minecraft network protocol is public, so no reverse engineering needed. It also looks like its not an authorative setup which could cause cheating problems in PvP enviroments down the line