Croquet on Linux
Last updated at 11:12 pm UTC on 31 October 2006
Croquet 0.01 only contained a run-time for Windows. Here is how to make it run on Linux.
Please note that the official 3.4 VM already contains the patches as explained below. Please give it a try and report back!
Apparently you need this patch if you have GCC 3 the BFAV2 Archive. See 3239.html
How to install
Posted by Bert Freudenberg on Nov 8 2002
Additions made by Croquet on Linux on 13 Mar 2003
Build and install libffi if it is not on your system. You need both the lib and the headers in a place where Squeak's configure script can find it.
Unpack everything else into the same directory. That means, VPR's Croquet0.01.image, Ian's "platforms" directory, and my teasqueak patch (Squeak-3.2-5tea.diff) are all there.
Apply my patch. Delete and re-generate the "src" directory using VMMaker from the Croquet image. This will give you a new BitBlt plugin that's needed for Croquet. I chose to build all plugins internally, so I do not have to mess with various .so files.
Now that everything is in place, you should be able to run my script
The "-b" option tells it to build. If that fails, compile on your own as usual. You should check the configure log if both FFI and B3DAcceleration were indeed enabled. You now have a VM versioned "3.2-5tea", to distinguish it from the normal VM.
Before I forget: Rename Content/Mars/ to Content/mars/. Directory name handling is not yet case insensitive.
Now you should apply the content dir patch codecontent-276-linux.patch/code that will change some hard coded texture paths for Windows to relative ones for UNIX.
Fire up the Croquet image again, this time using the new VM. My teasqueak-3.2-5 script does this, too. File in the two change sets. One installs the OpenGL bindings (via FFI), one adds support for non-case-sensitive file operations. You need to enable these in the Preferences panel, "general" category, "caseInsensitiveFileNames". Save the image.
Drag the right Teapot morph out of the green area. Wait. If you get a lightblue window everything is fine. Cancel the URL dialog. Wait again. You have to wait pretty long. On one machine it took an hour or so. You may take the time to skim the PDF.
After a while, the 3D world with all the portals should be displayed. Navigate with the yellow button. I would recommand mapping it to the right mouse button (-swapbtn VM option). This is what the teasqueak script does.
Let me know if this worked for you. It may well be I didn't remember some of the minor issues. Like a non-existent src/plugins.ext file when all plugins are made internal.
Anyway, have fun!
PS: I put a VM binary at http://isgwww.cs.uni-magdeburg.de/~bert/croquet. Maybe it works for you.
- OpenGL accelerated drivers for XFree86
- Error "Callout mechanism not available"
- The FFI plugin is not working.
- Error: "Bad BitBlt arg (Fraction?); proceed to convert."
- You need to build a new BitBlt plugin. The correct version is in the Croquet image.
- Even "TGraphicsTest open" fails. In Squeak3D.log it says "No OpenGL visual found"
- Run "glxinfo" to find out if OpenGL works at all
- You should set your XServer's display depth to 32 bits
- On some machines with NVIDIA graphics boards Croquet crashes after a couple of seconds. You can see the world, the sky animates, and then - boom!
- Solution 1: Try newer drivers. Check here for the latest version.
- Solution 2: Try older drivers :-). 1.0-1541 solved it here (note: this was posted before the newest drivers (4496 at the time) solved the problem for some people).
- It's very slow, even though other OpenGL apps are fast
- run "TGraphicsTest open", it might point at the problem
- set your X server to 24 bpp - some drivers do not have accelerated stencil buffers in 16 bpp
- I get a "Message not understood: frame" error
- you need to enable caseInsensitiveFileNames as described above
- Intel P3, GeForce 3, RedHat 7.1, XFree86 4.1, NVIDIA 1.0-1541, kernel 2.4.9-31smp
- Update: I reinstalled 1.0-3123 drivers and it works fine now, even though it crashed before using exactly the same. What the ....?!
- Intel P4, GeForce 2, Debian unstable, XFree86 4.1, NVIDIA 1.0-3123, kernel 2.4.18: fast, no crashes
- ATI Mobility Radeon M6: works but very slow, apparently no 32 bit support for Linux
- Redhat 8.0, XFree 4.20, ATI Rage128 (24bit colour), kernel 2.4.20-rc1, GCC 3.2 (with '#define DOUBLE_WORD_ORDER 1' workaround)
- SuSE 8.1, XFree 4.20, SiS 630 onboard (64 MB shared), linux 2.4.20-pre11, GCC 3.2 (with '#define DOUBLE_WORD_ORDER 1' workaround in config.h after configure)
- SuSE 8.1, XFree 4.20, GeForce 4 (64 MB), NVIDIA-1.0-4191, linux 2.4.19, GCC 3.2 (with '#define DOUBLE_WORD_ORDER 1' workaround in config.h after configure)
- Geforce 2 MX 200, Debian testing, kernels 2.4.20 and 2.5.75, XFree 4.2, NVIDIA driver up to 4363 (then I got a new card)
- GeforceFX 5600, Debian testing, kernel 2.5.75, XFree 4.2. Exhibited crashing problem described above until I updated to driver version 4496