Minecraft on Haiku?


#1

Thanks to Hamish, I now have faith that maybe one day, simple things like this will be possible!

Just thought someone out there might like this and get inspired from it. Though the Minecraft launcher does run on Haiku through the OpenJDK port, it will not go past the login phase.

This is simply a post to encourage more great work like this and to show that with enough effort, anything is possible.


#2

You could try forcing Minecraft to run on llvmpipe or swrast on Linux to get an idea of what the maximum performance on Haiku could be without hardware acceleration.

But really Haiku probably needs hardware accelration for it to be usable enough. Software wise libjwgl at least needs to be ported… and probably a a few others.


#3

Wouldn’t it be sweet if Haiku could run Minecraft?! I would be bashing creepers heads in all day if that were true!!! I can understand why Haiku does not support hardware acceleration. As of this moment, there are few (if any) apps that run on Haiku that needs it. So hardware acceleration has a low priority. However it is hard to get new apps developed or ported to Haiku because they would require hardware acceleration! It is the old “chicken and the egg” problem.

Untill the gallium/nouveau project gets some legs under it and support more hardware, I see Haiku sporting full hardware acceleration a pipe dream:(. If I am mistaken, please let me know!


#4

I just checked and Minecraft can indeed run on LLVMpipe… it runs on swrast as well but its quite broken in my install as is i915g. i915 itself works great though getting aout 25-30fps whereas LLVMpipe gets about 10-15 with few flucuations in fps. Note that 10-15 FPS is about 1.5x-2x better than an Nvidia Geforce2 can muster just for reference. I would imagine I could limit fps and still be quite playable.

Its VERY playable on my i7 3630qm w/ 1600Mhz ram, its an 11.6in netbook with an i7 :smiley: NP6110 or W110ER depending on who you ask its very awesome and runs both Funtoo with E17 and Haiku great! The fan does kick in pretty loud though when running on LLVMpipe unlike either GPU (I have intel 4000HD I usually use, and also an Nvidia 650m that runs about 2x as fast with bumblebee/primus).

I did some further testing while writing this. To summarize.

LLVMpipe:
1.2Ghz 2 threads 2-3fps/4-5 windowed completely silent
2.4Ghz 1 thread 7-8 fps fullscreen this is fairly silent fan comes on intermitently
2.4Ghz 8 threads 10-14 fps fullscreen pretty loud fan constantly but its pretty responsive in game as well probably since minecraft itself is running faster.

I can go up to about 2Ghz silet with 8 threads and its running about 8-10fps I hear the fan very faintly… larger laptops probably won’t have any trouble running up to 2.2 Ghz I imagine without any fan.

To perform that test I just moved the driver libraries into a backup folder for while I tested LLVMpipe and I set the thread with LP_NUM_THREADS=8 java -jar minecraft.jar


#5

I fiddled around a bit with lwjgl tonight… Ant can be built with hamish’s openjdk… I copied it into /boot/apps/j2sdk-image and was able to build most of ljwgl. I think it just needs the Haiku specific code to be written for it to work but its mostly there should be easy for someone that knows what they are doing. Or not impossible for someone who doesn’t :smiley:

I definitly think this would be a perfect GSoC project if noone finishes it before this summer.

so to do all that… setup the paths right find dist-lite in build.xml of ant and remove test-jar I think it is so junit isn’t required (you’ll get into a circular dependancy problem there since junit is built with ant X.x )

then run ./build.sh

then copy the resulting binaries into /boot/apps/j2sdk-image/bin and lib

then for ljwgl run
ant generate-all
ant compile
ant compile_native

I think all that is missing is the native Haiku code for the last step! Hopefully that will get anyone interested kickstarted! I haven’t the time really with my job and real life I already spent to much time on this already :D!

Java and friends really need to be packaged as optional pacakges installing development tools with only zip files is a major pain… its fine for desktop applications but software like this needs install scripts and such.


#6

Since Java is (supposed to be) portable you can just use a pre-built junit jar to get around this.

–

I think porting lwjgl will be a little tricky. Our OpenJDK port is missing JAWT, which provides access to the back buffer of AWT components for JNI code. Furthermore implementing JAWT will be more difficult than normal because our AWT port is lightweight (the components are not distinct on the native side, they are all just drawn into the same BView). The OSX JDK7 port is also lightweight, so looking at how they solved it might help. This thread here may also be of interest for how they dealt with this in lwjgl:

http://lwjgl.org/forum/index.php/topic,4711.msg26128.html#msg26128

I don’t have time to work on this just now, but I’d be happy to assist anyone who does want to take a shot at it.


#7

I tried putting junit in the classpath but must have done something incorrectly. I did export JUNIT_HOME as well…

Thanks for the tips!


#8

So wait Hiaku has a version of Open JDK? I how ever dought it will work now, but it might. Can any one explain it so that a newb can understand it.


#11

we habe minetest running on haiku. it is not minecraft, but looks like it… a little bit :slight_smile:


#12

Awesome! I have played MineTest before, it’s actually not bad (though it doesn’t have as many features as Minecraft itself). If there’s a package for it in HaikuDepot, I’ll try it when I have internet on my Haiku system.


#13

Please don’t necropost it is poor netiquette . Thanks!

Minecraft might work on current software drivers if you download the .jar version of Minecraft… however it will work best once hardware drivers have been implemented.


#14

I got the java version of Minecraft started, just the launcher though. When I tried to start the game, it just opened a blank window.
The lack of 3D acceleration doesn’t help :slight_smile: