<!-- begin site header -->
<div id=

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - xoft

Pages: 1 [2] 3
Development / Re: Plugin API vulnerabilities
« on: March 11, 2011, 01:00:29 pm »
Such an approach will make porting MineServer to use threads painful. (And I DO HOPE that MS will get multithreaded, eventually)

How about using this set of functions instead?
Code: [Select]
void getMapDataBlock(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * dest);
void setMapDataBlock(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * src);
void getMapDataMeta(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * dest);
void setMapDataMeta(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * src);
void getMapDataSkylight(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * dest);
void setMapDataSkylight(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * src);
void getMapDataBlocklight(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * dest);
void setMapDataBlocklight(int xmin, int xmax, int ymin, int ymax, int zmin, int zmax, unsigned char * src);

This would be safe (as long as the passed pointers are correct and of correct size), could be made thread-safe easily, would allow plugins be able not to care about chunks / internal storage methods. The underlying implementation would handle all the details regarding chunks (and later multithreadlocks). Also it doesn't seem to suffer from issues inherent with locks and it is efficient enough.

Development / Re: Unified building
« on: March 08, 2011, 10:59:11 am »
mineserver doesn't have this dir:
Code: [Select]
+ include_directories(${PROJECT_SOURCE_DIR}/include)

The include dir comes from Fador's MSVC build pack (libnoise, libevent and libcurses headers in $/include, respective libs in $/lib), which is needed for any MSVC build, not only for 2010 (and is in fact compatible with MSVC 2008, I'm using that for building).
If there's someone skilled in CMake, they might add a check for this "dependency"

i'm curious if we need winmm.lib at all, can you check w/o it plz?
Code: [Select]
+ link_libraries(ws2_32.lib winmm.lib)it sounds weird to be dependent on multimedia library :P

winmm.lib is needed for high-precision timer (function timeGetTime() ) - my linker was complaining about that function missing, luckily I remembered it's part of MM library.
It should be pretty straightforward to rewrite that part of code not to use WinMM (it's only timing information for logging purposes, after all).

Support / Re: Different interfaces
« on: March 06, 2011, 09:55:22 pm »
MineServer does listen on all available interfaces ( by default. It does list IPs in the console, but those are only for info, I just verified now that all interfaces do work.

You can limit the interfaces by editting config.cfg item "net.ip"

Development / Re: Plugins need to check if they are loaded?
« on: March 06, 2011, 01:20:36 pm »
I'm just trying to make up some reasons that could be behind this, don't take me too seriously ;)

There might be a scenario when actually loading a plugin twice would affect the way the plugin acts. For example a plugin that adds a bot that it controls may add another bot when loaded for the second time. Or a logging plugin might get loaded several times, each time with a different configuration (output file, verbosity, ...)

Development / Re: Unified building
« on: March 06, 2011, 01:11:44 pm »
... it shoud be left to the end user ...

Exactly. And that's why something like CMake is great - it can create Visual Studio projects for people with Visual Studio, or Code::Blocks workspace for those in love with Code::Blocks. Eclipsists will get their Eclipse projects as well. And the list goes on. And in the meantime, the developers only need to change one "super-project" when they add / remove / rename a file and the change gets into all the generated project files.

I have to say I was first sceptic about using CMake, seeing that the primary source of information on the system was a book they were too happy to sell. But I can see the benefit and having actually edited the CMake project, I think it's worth it.

Development / Re: Unified building
« on: March 06, 2011, 02:53:27 am »
As I wrote in another post, using a BAT file to compile using MSVC is a very bad idea - you'll miss all the debugging info, runtime warnings, such as unassigned variables, asserts etc. It is good enough if you want to compile MS for yourself; it's useless if you want to develop. A project file is the only way to go.

I managed to fix up CMakeLists.txt for use with MSVC2008 - now it generates proper project files for the main exe and the plugins; though the output paths may still need some tweaking ($/files/Debug, $/files/Release). Since I'm not yet friends with Git, I'll try attaching a diff file to this thread so that anyone interested can try and review it.

I think CMakeLists is well suited for MineServer, it seems simple enough that even I managed to learn to hack it within a few hours, and it's being done already, more or less.

On a similar note, the wiki needs serious care with windows compiling. If my CMakeLists patch (or a derivative that works) gets into the main source tree, I can write something up.

Development / Re: Unified building
« on: March 06, 2011, 12:57:54 am »
I second this request, as I'm using the (officially unsupported) VS2008 Express to build MineServer and it keeps getting more and more difficult with each source update.

Alas, the CMake files are broken at the moment, at least for windows / msvc builds and I have yet to find a fix. Down to the last linker error ;)

Discussion / Interesting mods
« on: March 01, 2011, 06:10:48 pm »
I just came across this mod, and I think it is really creative and cool. I believe this could be made into a very nice MS plugin:

MineCraft Portal:

Just an idea

Development / Re: Roadmap/ToDo?
« on: February 28, 2011, 05:59:32 pm »
Furnaces still cause segfaults (see the bug #72 for a bit more info).

Last time I've checked (with beta 1.2), rclk on crafting table with a wooden pickaxe and closing the crafting window made the net comm fail a bit later - rclk on crafting table didn't do anything at all anymore and after a while (~ 3 - 15 sec) the server spew out gibberish in console and the player got disconnected.

edit: looked up and added bug number

Development / Re: Roadmap/ToDo?
« on: February 28, 2011, 01:59:15 pm »
I guess the main TODO for now is stabilizing the code, so that it doesn't segfault every now and then.
Then the next major TODO is to fix all networking code, some packet combinations seem to throw MS off and cause clients to disconnect.

Only then can anything else start.

Discussion / Re: no .com unless someone wins lotto
« on: February 25, 2011, 11:56:35 am »
I just went crazy ;D and registered , but their system is not completely online or whatever, so the domain doesn't work yet. I'll setup a redirect, too.

Development / World storage
« on: February 22, 2011, 08:52:20 pm »
Seems like Minecraft beat me to it (again ;)

I've been pondering for a few days now, that minecraft levels are really terribly stored (thousands of tiny files are really cumbersome, at least on Win).

So I thought MineServer could implement different world storage engines, from the current Beta-1.2-compatible to a monolithic-file or possibly even others. I'd especially very much like the monolithic file, that would be really great for transporting a world between computers or for backup.

Development / Cross-compiling for Popcorn Hour
« on: February 20, 2011, 12:57:02 am »
I tried cross-compiling mineserver for use in my popcorn hour (just as a test); however, I failed miserably. I guess the linux still doesn't like me. So I'm asking, are there any linux gurus who would point me in the right direction as to how crosscompiling works?

I got the toolchain needed, I managed to make it successfully, so I seem to have gcc, binutils et al available.
Then I tried compiling libevent, that seemed to work, although I'm not sure if it compiled using system gcc or the cross-gcc (how do I tell?)
Libnoise is problematic, it has no configure script, just a makefile, and I have no idea how to crosscompile that.
That means I didn't have a chance to actually try crosscompiling  mineserver at all :(

I'd appreciate any help on the issue.

SMP toolchain: (scroll down to SMP863x platform at the bottom)
Building the toolchain, crosscompiling libs: (I used Debian in a virtualbox, the only difference was using apt-get instead of yum)

Plugins / Re: The new Plugin API
« on: February 19, 2011, 10:43:11 pm »
On a second thought, generators might be handled as completely different "sort" of plugins - with their own registration and then integration. That would be much faster than looking events at runtime.

edit: fixed a typo

Off Topic / Re: Introduction, who are you?
« on: February 19, 2011, 08:53:28 pm »
Alright, why not, after all :)

I'm Mattes Dolak, generally known around the web as xoft.

I live in the heart of Europe, Czech republic.

There aren't many servers that I've touched, really; management is for the ordinary geeks, I prefer writing stuff :) I think I know my way around, though, I can setup a server for a (mineserver ;) lan party and I have a customised NAS at home and a regularly used remotedesktop server. Just the basics.

As for programming, I do it for living, so the experience should be good enough. I do mostly C/C++, some Delphi / Pascal, I used to do ASM, though not anymore. Since Linux seems to hate me, I'm tied to Windows. I consider myself an expert on WinAPI and rather experienced in socket programming, memory management, multithreading issues. I specialize in vector graphics, graph algorithms, communication protocols and code architecture design.

I speak Czech and English, understand German, can read (and understand a little) Russian.

Hmm, age? Dunno, it changes each year, who's to remember? Around 29, I think.

Other hobbies: ballroom dancing (waltz, slowfox, quickstep ;) , making music, bike riding and taking care of my two cats.

Pages: 1 [2] 3