Anyone interested in working on a hobby project to build a Minecraft PE server? I am relatively new to Elixir, but from what I understand about its core functions, I think it would be well suited to working as a server for Minecraft PE.
I figure a project like this might help me understand the game (my kids can’t get enough of) a little better as well as improve my Elixir skills. If you have experience with sending and receiving UDP packets with Elixir even better…
I did some quick tests last night with receiving the broadcast from clients that are looking for servers and that got me excitited… This is a hobby project with no time constraints in mind and no dedicated time for it, just something to tinker on…
I couldn’t find any other pocket edition servers written in elixir, I did find some vague references to some written in erlang,
Here is a link to the best reference for the Pocket Minecraft Protocol I could find - there might be others.
I actually built a Minecraft (original, the pocket edition one really badly needs to die off) server in Erlang years ago. It ran really well, though I needed to slave out my terrain generation functions to C++ for speed reasons, plus having every ‘entity’ be a process was so nice. ^.^
It was not Minecraft-complete, like the mobs acted entirely differently and such, but you could do all the basic Minecraft things. It was just a simple project that I built up over a free day for fun, but it is entirely doable and I’d say go for it (even if it is the crappy PE edition). ^.^
(I wrote my server before even the nether existed, but I implemented ‘world changing’ by swapping chunks as the player did stuff, it was quite an awesome method that I wish MC used ^.^)
About the Pocket Edition dying off, I’m not sure thats going to happen considering its the most popular platform for the game… If you haven’t played it for years, most of the features from minecraft are now available in pocket edition.
A few questions if you don’t mind…
Which library did you use for network communication? Did you write your own terrain generation? If so, were there any particular algorithms that got you started on that?
Dang near unmoddable without using the internal and remarkable slow command blocks or so, so you cannot do anything truly impressive.
Did not run on Linux (last I checked at least) and as I run on linux that is a non-starter pretty immediately.
The general MC community has become amazingly hostile the last few years, which is why I have left it since (I was… pretty big in the MC community up to about 2 years ago).
I still play MC, though it’s mostly the GT6 mod (which is not possible to even implement it in PE last I checked) and ones that complement it, with a few friends and my wife. Though lately we’ve been playing far more Factorio. >.>
Ask away, this was a long time ago but I remember it pretty clearly. I might have it on bitbucket or it might be on my old SVN server if I can find it in my box of hard drives again… ^.^;
Standard TCP stack built into the OTP. It was perfectly sufficient for it. I had a processor via {active, once} to receive information and dispatch it to the appropriate actors to handle specific things like chunk information updating or player state and validation or so. And to send data, well that was rather haphazardly scattered around to be honest… ^.^;
Yep. I’ve made a number of games that use noise algorithms in the past so I was quite comfortable with it by that point.
Standard noise. I used part of libnoise on the C++ side along with a lot of SSE calls to speed it up as much as I could (it got pretty dang fast) though I started by writing a noise generator in Erlang itself, that was… slow… And I optimized it as much as I could along with help on the erlang mailing list. ^.^;
If you have questions about generating good terrain with noise, feel free to ask about details. I did not do it the MC way, which has a LOT of post-processing after the initial noise generation, but rather I tried to bake it all into the noise generation directly so I did not have to store unchanged chunks (a DETS file per ‘region’, though regions did not exist at the time in normal MC).
I’m not an expert with Elixir but I know a bit about game servers ^^, this is my attempt to create a Dofus server with Elixir a few months ago (I just begin with the language at this time so don’t expect something well implemented hahaha) https://github.com/WolfDan/Dofux
Looks like a really interesting project, just send me a message I would like to help
Between juggling the day job, family and renovating our house, I am going to get limited time on this. I will play with it when I can, but it will be very slow going. If anyone else wants to take the lead on this who has more spare time - feel free…
Judging by the people who replied via PM who have more low-level programming knowledge than me - which from all accounts sounds like it will be required - and those that have already written their own game servers, I am probably not even the best lead for this idea…