Porting SkyscraperSim to FreeBSD

I recently started getting into FreeBSD, mainly for work. It was highly recommended by a coworker, I used to use it as a sysadmin years ago. One of my main interests with it was to port my simulator Skyscraper (aka SkyscraperSim) over to it, mainly to see if it could be done, and how hard it would be. That mostly succeeded, and the FreeBSD version is now an official development release. Porting it reminded me of a long time ago when I got somewhat-working builds on other platforms such as Sun Solaris and SGI IRIX, back when Skyscraper was using the older Crystal Space game engine (current versions use the Ogre rendering engine).

Skyscraper is a first-person 3D building and elevator simulator, that also includes the ability to run multiple buildings (sim engines) in parallel, making it possible to create cities. It's been in development since late 2002, and is written in C++. Currently it's single-player, but multiplayer features are being planned.

Since it uses the proprietary FMOD sound system, sound support is disabled, since there isn't any FreeBSD version of that library available. I'd be interested in hearing what others have done in similar situations, I didn't really want to rewrite the core sound code over to a new library interface, but I could if it's needed. If anyone is interested in helping with the port, or interested in helping develop it, let me know.

Here's a screenshot of the result, I'm using the MATE window manager. FreeBSD is mentioned in the platform box on the bottom right.

skyscraper-freebsd.jpg


skyscraper-freebsd-2.jpg


An actual FreeBSD port in the ports tree would probably be difficult, since the software uses custom-built versions of a couple libraries, namely Bullet 2.88 and Ogre 14. You can download my build of it on the website, https://www.skyscrapersim.net - other links are there, including for the documentation, screenshots, custom addons, etc. To run the build, you might need additional dependencies (I tried to include as much as I could), I'll see if I can come up with a list of them.

This image shows one of the photorealistic glass elevator interiors in the sim, in this image most (or all) the controls work.

demo1.jpg
 
I'm trying my hand at making a port for you. But could I have you provide your Bullet fork (with your patches) in your Github account to make my porting job easier?
 
I'm trying my hand at making a port for you. But could I have you provide your Bullet fork (with your patches) in your Github account to make my porting job easier?
I'm putting it up on Github now. The bullet fork I made is just small changes to the character system, it's very old and I need to update it to the newer Bullet 2.89 code (eventually I'll see if I can port the simulator to Bullet3). Most of the patches I made for the bullet fork were accepted upstream back during the Ogre porting work.
 
eventhorizon5

To update you, I'm having struggles and here is why.

The problems are:
  • The GH_TUPLE knob is only designed to extract, it cannot be used to build from externally bundled dependencies.
  • I would have to create 4 separate ports for bullet, ogre, ogre-procedural, and ogre-caelum just for Skyscraper. (A lot of unwanted work and build debugging)
  • In the ports tree, we already have ports for devel/bullet and graphics/ogre3d. I would have to make the forked dependency ports specialized for Skyscraper and have them built as static libraries to avoid confliction with the existing original ports.

With that said, may I have you redo your build system, so it can automatically build from those forked dependencies, so I can use the GH_TUPLE approach?
 
With that said, may I have you redo your build system, so it can automatically build from those forked dependencies, so I can use the GH_TUPLE approach?
I'll see what I can do. Originally it was much easier, back when it was using the Crystal Space engine, that was the only dependency. One thing I had to disable in the simulator for it to build on FreeBSD was joystick support (via wxWidgets), I'd have to check again as to why it was failing.
 
Back
Top