Running your own server: the fun that wasn’t

Wednesday, April 20, 2016 by spiralspy

So, I decided to put my skills to where my mouth is and after stating that you wouldn’t want to run your own Spiral Knights server, figure out how much trouble it would really be. I expected an adventure, but I didn’t expect it to be this short.

Of course, I don’t have access to SK source code, but Grey Havens released Bang Howdy on github and since both games have the same foundation, it stands to reason that they also have a similar build. 164 MB later, I’m the proud owner of a “contains everything but the kitchen sink” ZIP. Bang Howdy was written at a time, when Threerings migrated from Ant to Maven as a build tool. What does that mean?

There is a golden rule in softwaredevelopment: “don’t reinvent the wheel”. If your code as reasonably reusable, package it as a library so it can be used in other projects. If you need a certain functionality for your project, first check if someone else has already made a library for it. Sounds like it could save you a lot of time, right? Well, not exactly. In the old days, tracking down libraries was a nightmare. If you were in luck, the developer of application, you wanted to build, was nice enough to throw in a README .TXT file, telling you what was needed and where it could be found. Most developers didn’t bother and just assumed that you (somehow) knew what you had to do. On top of that, projects usually also had a custom build process. It could easily take you days to figure out what you had to do. Then along came Maven, a horrible tool with a magical promise: one standard build process and automatic dependency tracking. Under the hood, Maven is a catastrophe. Barely anyone understands how it works, but when it works, it works like a charm: You simply invoke one command, go grab a coffee and once you return, you have a ready to use application.

In case of Bang Howdy, Maven doesn’t work (surprise!). It fails on downloading some of its dependencies. Namely the JMonkeyEngine,  a set of libraries that is build on top of Open GL and take care of making a 3D world interactive (think: moving your avatar around the scene when you press the cursor keys). The JME version, BH depends upon is ancient and the precompiled libraries seem to have vanished from the official Maven repositories. Not only that, but the sourcecode for v1.1 is also no longer available. Furthermore, it looks like there are also at least two dependencies on OOO internal libraries which never got published to begin with. In other words: it is completely impossible to build the game from scratch.

Open sourcing the Bang Howdy source code was a nice move by Grey Havens, but unfortunately, that sourcecode is almost worthless. Best you can do with it is to get a general idea on how OOO games are structured. You can also get your hands on the graphical assets which are very nice for building (western themed) forum avatars, but sadly you are in limbo here as far as copyright is concerned.