Hello.
Some time ago when I found your game I gave it a try and launched it under FreeBSD with minimal efforts. The game doesn't work with sound but was fairly playable.
Right now I'm revisiting the issue. I found that I can make sound work by replacing .jar files in code/ with libraries from ports (FreeBSD ports, assorted collection of libraries, apps and etc). However running the game results in:
2013/09/18 18:23:40:902 INFO J$a.b: Logging to '/home/arcade/spiral/./projectx.log'.
2013/09/18 18:23:52:808 WARNING DefaultControllerEnvironment.getControllers: Trying to use default plugin, OS name FreeBSD not recognised
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/lwjgl/input/IME
at com.threerings.projectx.client.ProjectXApp.init(SourceFile:1233)
at com.threerings.opengl.o.run(SourceFile:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.lwjgl.input.IME
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 16 more
2013/09/18 18:24:03:344 INFO J$a.b: Connecting [host=game.spiralknights.com/184.73.171.119, port=47624]
2013/09/18 18:24:04:456 INFO J$a.b: Datagram connection established [port=47624]
2013/09/18 18:24:06:574 WARNING J$a.b: ObserverOp choked during notification [op=com.threerings.presents.client.n@37b2b0d4, obs=com.threerings.projectx.client.dQ@34774add]
java.lang.NoClassDefFoundError: org/lwjgl/input/IME
at com.threerings.projectx.client.ba.setFocus(SourceFile:39)
at com.threerings.opengl.gui.M.removeWindow(SourceFile:292)
at com.threerings.projectx.client.ui.T.wasRemoved(SourceFile:62)
at com.threerings.projectx.client.ProjectXApp.a(SourceFile:619)
at com.threerings.projectx.client.ProjectXApp.c(SourceFile:610)
at com.threerings.projectx.client.ProjectXApp.vQ(SourceFile:792)
at com.threerings.projectx.client.ProjectXApp.wm(SourceFile:1500)
at com.threerings.projectx.client.dQ.c(SourceFile:401)
at com.threerings.presents.client.n.a(SourceFile:846)
at com.threerings.presents.client.K.apply(SourceFile:31)
at com.samskivert.util.ObserverList.a(SourceFile:295)
at com.samskivert.util.ObserverList$a.b(SourceFile:230)
at com.threerings.presents.client.d.a(SourceFile:885)
at com.threerings.presents.client.d.a(SourceFile:844)
at com.threerings.presents.client.C.a(SourceFile:77)
at com.threerings.presents.client.s.a(SourceFile:371)
at com.threerings.presents.client.s.aD(SourceFile:203)
at com.threerings.presents.client.s.run(SourceFile:189)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.lwjgl.input.IME
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 32 more
Thus the game can't login and I can't play.
Actually I'm an active port maintainer (http://www.freshports.org/search.php?stype=maintainer&method=exact&query...) and I'm ready to assist in creating a port for FreeBSD if anyone is interested.
Three Rings, hire this man.