Networking Solution / Advice

I’ve been reading a lot lately about networking solutions and of course, I see everyone else is asking for advice here, so why not… here’s my post asking for advice.

I’m using Unity Free. I do not need to use a free networking solution. I do know how to program, so it doesn’t have to be some ‘plug and pray’ solution.

Game Premise: Realm of the Mad God + Complexity + More RPG + Prettier + MUD influences (aka Bullet-hell Shooter MMO RPG MUD) Lots of projectiles, players dodging, creatures.

My issue is when I think of the current setup for Unity’s Scene structure. This is the current setup:

Scene1: login/selection/etc. screen,
Scene2: Shared nexus/recall area
Scene3: Vault/storage
Scene4: Instanced World
Scene5: Instanced Dungeon

Requirements: authoritative, fast, scalable, supports webplayer (yes, I realize webplayer is more/less coming to an end soon, but… hopefully there will be some replacement), documentation (can’t stress this enough… I hate coding ‘blindly’ trying to figure everything out), support (as in, it gets fixed if there are issues, added features as Unity improves if possible)

Note: recently upgraded to Unity 4.3 and changed everything to use Box2D physics

My problem is wrapping my brain around the instanced dungeons/worlds. A client will have a dungeon. Authoritative server says, yep, it’s here, it’s the layout, etc. etc. They do their things. A second dungeon instance is created. Unity cannot run two scenes at once, correct? So a second server instance of Unity would be needed to be spawned for that, or some very fancy coding to make things not interact with each other…?

I’ve read about trying to have multiple worlds / instances in the same scene and frankly, it sounds messy beyond belief.

I’ve been looking at uLink/UnityPark and I think that’s how they handle it. I recently found you can run Unity in batch-mode with no graphics, and with an empty project it clocks in at 42 mb on my machine. So, assuming it doesn’t get too much larger since there would be no textures/music… that’s like 100 instances for 4GB? Very bad estimate, just thinking out loud.

So then I’m thinking a non-Unity networking solution might be the way to go, as handling multiple scenes at once would be much, much more easier (instances of world-type classes, etc.) however, making it authoritative and also writing all the other gobblygook would just… add months to development time. The authoritative part should be easier now with Box2D as it’s actually accessible to the layman, but…

Not entirely sure. I looked at PUN a bit, but it’s not authoritative… I could try to integrated Box2D with it I suppose. My rigidbodies do nothing (no mass, etc. they just drive the physics of bullets moving and colliding) so that’s not a big deal.

Lidgren - Seems I’d have to do a lot of work with it, but seems plausible. Needs Box2D.

PNet - Not sure, would have to integrate Box2D

SlimNET - last I saw, his license was either insane or not for commercial use, not to mention almost no documentation from what I saw, so I skipped checking it out further.

uLink/UnityPark looks promising, but before I delve into the 30 day trial and code my brains out to see what I can accomplish… some thoughts / advice from others would be greatly appreciated.

Update: More reading has been done. ElectroServer looks promising too.

uLink is your best bet. It’s the easiest to use, and the 30 day-thing only applies to new builds you export, not the editor. You can mess around with it for as long as you want.

You’ll want uZone for the instance thing. It’s kind of what it was made for: starting and stopping server builds. You can’t run two scenes at once (that’s a good thing, because it probably wouldn’t end well), and hosting both the zone and the dungeon in the same scene is a REALLY bad idea, so using two different builds is pretty much the only option.
How it works is you have two server builds, one for the zone and one for the dungeon, and when you enter the dungeon, uZone starts that second server build, and uLink poops you into the new server.

+1 for uLink

Awesome, I’ll check out uLink. I was torn between it and ElectroServer (as I know Java fairly well too) but being able to work things in Unity, even if there is additional overhead for running Unity… just sounds like 15 less headaches.

Thanks for the advice/input/responses Mr.MMORPG and Meltdown. Especially the part about clarifying the 30 day trial. Excellent.