Thanks deoxxa for taking the time for answering our questions and keeping us updated on what is going on. I read the change notes a couple times of day and do a little dance every small update :smile.gif:
Thanks deoxxa for taking the time for answering our questions and keeping us updated on what is going on. I read the change notes a couple times of day and do a little dance every small update :smile.gif:
No problem, I'll keep an eye on this thread for more questions.
Quote from nossr50 »
How are you reverse engineering the MC server?
I'm curious as it sounds pretty cool that you are able to do it.
There's a bunch of awesome guys in #mcc who've written up great docs on the MC protocol and workings, check out http://mc.kev009.com/wiki/Main_Page if you want to take a look-see.
Rollback Post to RevisionRollBack
A high performance, modular Minecraft SMP server written in c++ - download it today!
I have it compiled (only in debug mode) on Windows 7.
Since there is no map generation, I copied over a map generated with the regular minecraft server. It seems to be quite glitchy though and if you move more than a few blocks, it tries accessing files that don't exist.
I imagine it has mostly to do with the map I am loading.
I am big into C++, currently learning socket programming myself. Maybe I can contribute in some way - need a forum on that website of yours!
EDIT:
Oh ya, I can't compile in Release mode because of linker errors for unresolved externals: gzread, gzwrite, gzclose and gzopen. Might have something to do with zlib library I downloaded...
Since there is no map generation, I copied over a map generated with the regular minecraft server. It seems to be quite glitchy though and if you move more than a few blocks, it tries accessing files that don't exist.
I imagine it has mostly to do with the map I am loading.
Yeah that's what happens if the chunks aren't there to read. I suggest testing it out with a flatland map.
Quote from nicklozon »
I am big into C++, currently learning socket programming myself. Maybe I can contribute in some way - need a forum on that website of yours!
Feel free to fork the project on github and get coding! We're more than happy to merge changes in if they're useful :smile.gif:.
Quote from nicklozon »
Oh ya, I can't compile in Release mode because of linker errors for unresolved externals: gzread, gzwrite, gzclose and gzopen. Might have something to do with zlib library I downloaded...
I'll pass this and your workaround on to Fador, I'm pretty sure he takes care of the Windows project file things (I don't even run a Windows box anymore so I can't test it D:).
Rollback Post to RevisionRollBack
A high performance, modular Minecraft SMP server written in c++ - download it today!
I'm not completely sure what hMod is (a mod for the java server I presume?), but once we get the scripting working Cuboid shouldn't be too hard to implement. We're going to have a plugin system for things like external scripting, additional functionality, etc. One of the default plugins will be a Lua plugin, so people will be able to write their own mods fairly easily. The plan is to eventually support more languages as well (python, perl, what have you) through more plugins.
hMod/hey0 is "the" mod which actually injects additional server side commands through player chat message (starts with /). As I understand it, hMod provides 3rd party (should it be 4th party?) modding through other commands and hMod APIs. Cuboid is one of them which requires hMod to run.
Since your server is open source, injection is not needed if someone wants to add new features. However a proper plugin/mod support is always welcome.
Ah. hey0's mod. I can say 100% for sure that we will never, ever support that. It's nothing against the mod, it's just that it's technically infeasible. As far as I understand it, it's actually a modified version of the java server which loads additional classes at runtime. Loading mods designed for it into mineserver would be like trying to swap the wheels from a bicycle onto a boat: they simply won't fit anywhere and even if they did, they wouldn't be very useful without what would essentially be a reimplementation anyway. I plan to implement a few of the more popular mods in Lua and/or c++ once the systems are in place, so hopefully that'll spur some other people to do the same.
Rollback Post to RevisionRollBack
A high performance, modular Minecraft SMP server written in c++ - download it today!
I think people like Hey0 because of the plugin support. But you guys gotta know this will have plugin support and some more. I'm sure it will have hooks if that is the correct term for everything. I can see the first couple weeks being slower but over time I can see this C++ being more popular then Hey0 easily and then over time it might take over minecraft_server.jar
I got the server compiled on a PPC Mac running OS10.5.8
I had to first get the packages with MacPorts using
$ sudo port install zlib
and
$ sudo port install libevent
Then I had to change the include directories in the Makefile to /opt/local/lib for the libraries and /opt/local/include for the header files.
Otherwise straight forward.
But.
Then when I attempted to run the server, I got this error message, "Error, spawn pos not found from world/level.dat!" I tried copying a world folder from an existing map into the /src directory, but that also didn't work. Any ideas?
---Edit---
Nevermind, I didn't set the path correctly in /src/config.cfg. The server launches properly now. Unfortunately now I am getting a Segmentation fault on the server when a client attempts to connect :-/
Can I make a suggestion? You said you plan to add mod support, so it would be a big +1 if it's implemented in the same way that hey0s is. This way the plugins for hey0s mod could be more easily ported to the C++ server, as C++ and Java share some pretty similar codes.
Hey0s mods are very straightforward actually. It's just a class where you setup a bunch of hooks to listeners for game events (this is kind of a standard for any game modification based om hooks actually).
No, not at all. This one is open, so mods won't have to make all that extra workaround to do what they want. And they'll have the capability to do whatever they want, to modify whatever. So.. no porting of hey0's nor it's plugins. It'll be so easy (easier) to make it from scratch that it'd make no sense to "port" hey0s xD
Let's say I make a nice plugin that I want to share with others. As far as I understand, you're pretty much telling that everyone who wants the plugin needs to take the code that I wrote, modify the original code, and recompile it. Firstly, that's time consuming. Secondly, in order to apply that plugin, the server will needed to be stopped, which I don't think the admins would like to do. Lastly, and more importantly, newbies will have a hard figuring out what to do, since compilation, especially in C++, isn't so simple and straightforward. So, having some sort of plugin implementation system in this program along with ported plugins will only be a benefit for everyone.
@wjykk yeah, he said that a plugin system is coming (check the github)
btw, @any of the devs with a windows box. Any compiled binaries to show those of us who can't wait but can't dl mingw + VS08 SDK (400mb+) ? :biggrin.gif:
rafaelinux, because of the constant changing code, it would make doing release builds hard, and if a release was built and put up for download there would be hundreds of bug reports which developers are already aware of, making life even harder.
As for the plugin system, personally I'm debating implementing a plugin system which allows dll/so imports meaning someone can make libraries to handle Lua, Java, Python, etc. Or write a plugin using directly as a DLL using C, C++, C#, VB.NET, etc.
As others have mentioned hMod is critical for our SMP server, as we run about 48 plugins currently! If those all need to be rewritten, I guess any switch is never going to happen. I understand you can't plug Java into C++, but if it would be possible to make a plugin layer that makes porting those plugins easy for the developers, that'd be huge!
You said you plan to add mod support, so it would be a big +1 if it's implemented in the same way that hey0s is
I'm just going to say this to make it clear: we will not officially support a hey0 compatibility layer or anything of the like. In saying that however, there's nothing stopping someone from writing some kind of glue code once the system is in place. We just won't officially have anything to do with it as it'd be a horrible thing to maintain.
Quote from Joymo »
we run about 48 plugins currently!
:|
Quote from Joymo »
I understand you can't plug Java into C++, but if it would be possible to make a plugin layer that makes porting those plugins easy for the developers, that'd be huge!
That's the plan. The end result will be roughly the same, but without a lot of the hackery required to make some of the more advanced stuff in hMod work. Also the developers won't be required to use java for everything, widening the market significantly.
Quote from JayRocknWeezy »
Is it alright to say we will have game modes similar to gmod?
Not 100% sure what you mean here. Elaborate?
Quote from wjykk »
As far as I understand, you're pretty much telling that everyone who wants the plugin needs to take the code that I wrote, modify the original code, and recompile it.
Right now? Yes. When we have the plugin interface up and running? No.
Quote from wjykk »
in order to apply that plugin, the server will needed to be stopped
I don't think that's unreasonable. It only takes a few seconds to restart the application and it's not like you'd be testing mods on a live server anyway, right?
Quote from cuzincuz »
Unfortunately now I am getting a Segmentation fault on the server when a client attempts to connect :-/
If that's not fixed yet, could you run it under gdb (`gdb ./mineserver`) and file an issue on github, pasting the relevant debug data?
Rollback Post to RevisionRollBack
A high performance, modular Minecraft SMP server written in c++ - download it today!
Check out my Let's Play Series:
I'm curious as it sounds pretty cool that you are able to do it.
No problem, I'll keep an eye on this thread for more questions.
There's a bunch of awesome guys in #mcc who've written up great docs on the MC protocol and workings, check out http://mc.kev009.com/wiki/Main_Page if you want to take a look-see.
A high performance, modular Minecraft SMP server written in c++ - download it today!
I have it compiled (only in debug mode) on Windows 7.
Since there is no map generation, I copied over a map generated with the regular minecraft server. It seems to be quite glitchy though and if you move more than a few blocks, it tries accessing files that don't exist.
I imagine it has mostly to do with the map I am loading.
I am big into C++, currently learning socket programming myself. Maybe I can contribute in some way - need a forum on that website of yours!
EDIT:
Oh ya, I can't compile in Release mode because of linker errors for unresolved externals: gzread, gzwrite, gzclose and gzopen. Might have something to do with zlib library I downloaded...
Also, perlin.cpp:82 has an ambiguous call, I just casted the first parameter to pow() to a double.
EDIT: After these changes I was able to compile it using the command line, although I had to modify the given command line quite a bit to work:
cl /I C:\Temp\zlib\include /I C:\Temp\libevent\ /I C:\Temp\libevent\WIN32-Code /I C:\Temp\libevent\include /W3 /WX- /O2 /D WIN32 /D NDEBUG /D _CRT_SECURE_NO_WARNINGS /EHsc src/*.cpp zlibwapi.lib libevent.lib Ws2_32.lib /link /OUT:mineserver.exe /LIBPATH:C:\Temp\zlib\lib /LIBPATH:C:\Temp\libevent /LIBPATH:C:\Temp\zlibwin\dll32
I run this from a BAT file in the root of my mineserver folder where /src is found, hence why i do src/*.cpp
Yeah that's what happens if the chunks aren't there to read. I suggest testing it out with a flatland map.
Feel free to fork the project on github and get coding! We're more than happy to merge changes in if they're useful :smile.gif:.
I'll pass this and your workaround on to Fador, I'm pretty sure he takes care of the Windows project file things (I don't even run a Windows box anymore so I can't test it D:).
A high performance, modular Minecraft SMP server written in c++ - download it today!
hMod/hey0 is "the" mod which actually injects additional server side commands through player chat message (starts with /). As I understand it, hMod provides 3rd party (should it be 4th party?) modding through other commands and hMod APIs. Cuboid is one of them which requires hMod to run.
Since your server is open source, injection is not needed if someone wants to add new features. However a proper plugin/mod support is always welcome.
Ah. hey0's mod. I can say 100% for sure that we will never, ever support that. It's nothing against the mod, it's just that it's technically infeasible. As far as I understand it, it's actually a modified version of the java server which loads additional classes at runtime. Loading mods designed for it into mineserver would be like trying to swap the wheels from a bicycle onto a boat: they simply won't fit anywhere and even if they did, they wouldn't be very useful without what would essentially be a reimplementation anyway. I plan to implement a few of the more popular mods in Lua and/or c++ once the systems are in place, so hopefully that'll spur some other people to do the same.
A high performance, modular Minecraft SMP server written in c++ - download it today!
Check out my Let's Play Series:
I had to first get the packages with MacPorts using
$ sudo port install zlib
and
$ sudo port install libevent
Then I had to change the include directories in the Makefile to /opt/local/lib for the libraries and /opt/local/include for the header files.
Otherwise straight forward.
But.
Then when I attempted to run the server, I got this error message, "Error, spawn pos not found from world/level.dat!" I tried copying a world folder from an existing map into the /src directory, but that also didn't work. Any ideas?
---Edit---
Nevermind, I didn't set the path correctly in /src/config.cfg. The server launches properly now. Unfortunately now I am getting a Segmentation fault on the server when a client attempts to connect :-/
Can I make a suggestion? You said you plan to add mod support, so it would be a big +1 if it's implemented in the same way that hey0s is. This way the plugins for hey0s mod could be more easily ported to the C++ server, as C++ and Java share some pretty similar codes.
Hey0s mods are very straightforward actually. It's just a class where you setup a bunch of hooks to listeners for game events (this is kind of a standard for any game modification based om hooks actually).
Fergo
btw, @any of the devs with a windows box. Any compiled binaries to show those of us who can't wait but can't dl mingw + VS08 SDK (400mb+) ? :biggrin.gif:
As for the plugin system, personally I'm debating implementing a plugin system which allows dll/so imports meaning someone can make libraries to handle Lua, Java, Python, etc. Or write a plugin using directly as a DLL using C, C++, C#, VB.NET, etc.
As others have mentioned hMod is critical for our SMP server, as we run about 48 plugins currently! If those all need to be rewritten, I guess any switch is never going to happen. I understand you can't plug Java into C++, but if it would be possible to make a plugin layer that makes porting those plugins easy for the developers, that'd be huge!
We actively participate in the MC SMP global bannning system. Join up!
I'm just going to say this to make it clear: we will not officially support a hey0 compatibility layer or anything of the like. In saying that however, there's nothing stopping someone from writing some kind of glue code once the system is in place. We just won't officially have anything to do with it as it'd be a horrible thing to maintain.
:|
That's the plan. The end result will be roughly the same, but without a lot of the hackery required to make some of the more advanced stuff in hMod work. Also the developers won't be required to use java for everything, widening the market significantly.
Not 100% sure what you mean here. Elaborate?
Right now? Yes. When we have the plugin interface up and running? No.
I don't think that's unreasonable. It only takes a few seconds to restart the application and it's not like you'd be testing mods on a live server anyway, right?
If that's not fixed yet, could you run it under gdb (`gdb ./mineserver`) and file an issue on github, pasting the relevant debug data?
A high performance, modular Minecraft SMP server written in c++ - download it today!