
Minecase – A distributed Minecraft server in .NET Core - JasonWang1027
https://github.com/dotnetGame/MineCase
======
iMarv
Looking into the issues: "Add multiplayer support" The only reason I see
running a minecraft server is to play multiplayer, so I guess there still is a
lot of work to do.

~~~
derimagia
"World Persistence" too. Although to me it's pretty useless without mod
support which would be very difficult to do since Forge/Mods are all java
obviously.

But a neat side project. Wish them luck.

~~~
jasenmh
Since it's distributed, maybe mods can be handled as microservices. Then it
wouldn't matter the source language.

------
breakingcups
For an incomplete list of open (and closed) source alternative Minecraft
servers, see: [http://wiki.vg/Server_List](http://wiki.vg/Server_List)

------
lennoff
How exactly is this distributed? The readme isn't really useful...

~~~
diggan
I'm not a .Net developer but:

> MineCase is a cross-platform, distributed Minecraft server application
> developed using .NET Core that uses the Orleans framework.

Orleans seems to be what makes this distributed I think, following the trail
leads me to:
[https://dotnet.github.io/orleans/](https://dotnet.github.io/orleans/)

> Orleans is a framework that provides a straightforward approach to building
> distributed high-scale computing applications, without the need to learn and
> apply complex concurrency or other scaling patterns. It was created by
> Microsoft Research and designed for use in the cloud.

~~~
lwansbrough
I can elaborate a little further having extensive experience with Orleans:

\- Various parts of this Minecraft server have been built as Grains

\- Grains are basically class instances which are activated (instantiated)
somewhere in a network

\- Orleans has a very clean interface which allows one to use a class instance
in regular code as though the instance were stored in local memory. In
reality, the class instance may be instantiated on a different machine in the
cluster.

\- Orleans clusters are generally controlled/private, though I suppose there's
nothing stopping someone from building an open network of Orleans silos. That
means the distributed aspect of this project is in regards to how the code
behaves within a datacenter, in most cases.

This seems to be an exploration of how to build game infrastructure using
Orleans. Microsoft has done this with the Halo franchise in their most recent
games (Halo 4 + Halo 5.) Seems to work pretty well. On a fast network you can
operate on distributed instances of just about anything and have sub-
millisecond response times. Mind you, that'll depend greatly on what work is
being done.

------
ganzuul
How distributed are we talking? Could it be distributed over fast internet
connections or does it take a data center?

~~~
JasonWang1027
It needs quite fast network between distributed servers in clusters. A
distributed database, MongoDB, is used to store Minecraft terrain and
entities.

~~~
Cyberdog
So what is the benefit for distributing this data?

I haven't played multiplayer MC in quite a while, but from what I can
remember, lag could be a bummer, so I could see how being able to connect to a
low-lag "local" server and yet still play alongside players from around the
world with their own low-lag connections would be nice. Yet if someone places
a block on the ground and it still takes a couple seconds for that block
placement to be distributed to my local server's Mongo instance and sent to
me, I don't know how much the user experience is really improved for anyone.

~~~
JasonWang1027
The placed block isn't synchronized to MongoDB immediately. Chunks data is
stored in memory, while some players nearby.

