Club Caribe server source code found

Club Caribe server source code found
Club Caribe users exploring the world before it shut down in February 1994

When Lucasfilm's Habitat was first made open source, an event was held in September 2014 at The Museum of Art and Digital Entertainment in Oakland, CA. This was a hackathon primarily held to resurrect Habitat from the dead.

At the time, we only had access to the original source code and Habitats server was reliant on an operating system called VOS by a company named Stratus who manufactured fault-tolerant computer systems that were often used by big companies back in the day.

Stratus still existed at the time and after The MADE museum got in touch with them, they sent out an engineer and donated an old piece of server hardware that Habitat to help with the restoration efforts.

Former Stratus engineer Paul Green posing with the XA2000 Model 30 also known as "The Nimbus". This wasn't the original hardware Habitat would've used as the Nimbus was a lower end machine and Quantum Link/AOL purchased the higher end hardware - Photo Credits: Alex Handy

The hope was that the code would've been able to be compiled on this machine and we could just login to Habitat as if no time had passed.

Unfortunately, that turned out not to be the case. Habitats server was tightly integrated into the Quantum Link server backend and without some missing files at the bare minimum, this project fizzled out before it even started.

Luckily, Randy Farmer had a back up plan for the Hackathon which was to write a barebones Habitat server that would let you login to a region but nothing else as a proof of concept for a future modern day rewrite of the Habitat server. They were succcessful and that was the beginning of the NeoHabitat project which began in earnest 3 years later.

Michael Steil and Chip Morningstar (co-creator of the original Habitat) watch as a Habitat region is displayed for the first time in 20 years. In a Commodore 64 emulator no less! Photo Credits: Alex Handy

In the intervening years between the Hackathon and the NeoHabitat project starting up, efforts were made to get a copy of the Quantum Link source code from America Online (who started out as Quantum Link originally).

At the time, contact was made with AOL and former engineers who worked there and some of the missing files were indeed found and shared, but then AOL was purchased by another company and communications ended so the effort to restore the original Habitat server using original hardware stopped there.

Almost 10 years on from that, I got back in touch with one of the engineers who was a long time employee and they were able to share archives with me to help preserve them for the future.

In that archive I discovered the Club Caribe server source code.

Now it was all over the place as this was an archive of over 15,000 files all organised into all kinds of ways, but comparing file names, file modified dates and file contents against the original Habitat source code helped me to track down everything Caribe related.

I've replicated the original Habitat server directory layout, compared files against each other and tried to make sure everything is present and correct so you can have a copy of the Club Caribe server source code and it's readily available for you to grab at https://github.com/stublad/club_caribe_src

Bear in mind, you can't really do anything with it because as I mentioned previously, you'd need the Stratus VOS operating system which is only available to Stratus customers, as well as compatible hardware I'd assume. Thanks to the NeoHabitat project though, that's not where the value lies in having this code preserved.

Being able to diff against the original Habitat source reveals a ton of changes which were completely unexpected. To the trained eye and watching footage of Caribe, it looks as if the server was identical in every way and never touched once Lucasfilm Games completed development and ended the Habitat beta. That isn't the case though.

Here is a list I made whilst running through the code to see the differences. It's not complete, but it might give you a rough idea of what happened after Quantum Link took over operations. If you aren't familiar with the Habitat backend it might not make as much sense.

BLD Stalker shows us the Nude Beach in Club Caribe in February 1994. Avatars who entered the area would have their skin tone and clothing changed to a flesh colour to simulate the appearance of nudity. The server would change your colours back to their original state upon exiting the area.

Interesting Caribe code changes

  • Hall of Records feature removed
  • Entry/Exit daemons implemented to support the Nude Beach area
  • Actions are merged into one file instead of multiple files
  • Pawn prices changed
  • One new magic added ("generic token dispenser" - code very similar to money_tree)
  • Certain magic removed (send_target_avatar_home, switch_start_end_capture_flag, switch_region_rally_winner, etc)
  • The term vendroid is changed to vendo in certain places
  • Reset backgammon pieces position change
  • Certain object classes removed entirely
  • Refactoring to work with the updated QLink server code changes made since Habitats original development ended
  • AOL text headers added to certain files
  • Permissions level given for remote staff (CCG and QCC - Club Caribe Guide and Quantum something something?)
  • CCG/QCC have power to mute an avatar for a period of time so they cannot speak to others (gagging)
  • Load balancing of some kind added
  • Region caching in the database?
  • Avatar returns to the "HELP" room upon death instead of a turf as turves were removed
  • All database prefixes renamed from MC (MicroCosm) to CC (Club Caribe)
  • Allowed male and female heads in the character customization screen/hatchery were updated. Increased from 14 male and 12 female to 80 male and 35 female.
  • Security checks to only allow male/female heads from the list mentioned above. Logging implemented if a hacker requested a non-allowed head
  • Config files implemented to be used when starting Caribe server
  • Holes_open added (Not sure what this is but holes were an object class that acted as a container. I think you needed a shovel to open them up.)
  • Following classes removed from shared memory initialization in regionproc (bed, bureaucrat, changomatic, countertop, dropbox, elevator, escape_dev, frisbee, grenade, mailbox, matchbook, ring, sensor and ticket). Sensors also removed.

If you made it this far in the article, you might be interested to know that more Club Caribe archival material has been secured, scanned and processed and awaiting research. I'll be documenting everything and sharing finds on here in long form. If you want to hear about this stuff sooner, I'll be sharing some stuff as I find it on the Reno Project Discord server. Come join us!