NeoHabitat

From Reno Project
Revision as of 19:11, 7 April 2023 by Stu (talk | contribs) (Created a page for NeoHabitat and wrote a brief blurb about the Hackathon in 2014. Included is a follow up email from Randy on the Habitat mailing list discussing what had happened.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
NeoHabitat
NeoHabitat.png
Developer(s): Randy Farmer
Platform(s): Commodore 64, Windows, Mac, Linux
Released: 2018

This is a work in progress, come back soon! Check out the rest of the wiki too.

Development

Hackathon

A Hackathon was held on September 28th, 2014 at The Museum of Art and Digital Entertainment in Oakland, CA to restore Habitat to a working state. Notable attendees included Chip Morningstar, Randy Farmer and others. A Stratus machine from the time period Habitat operated was donated by Stratus to help with the effort and was brought to the museum by Stratus employee Paul Green. The Stratus didn't end up being used due to Quantum Link source code being missing which the Habitat server code needed to compile. Instead, a "wafer thin" server was created which would send a handcrafted packet to the client containing a basic region and avatar. This goal was reached by the end of the night and after 20 years, Habitat was alive again in some form.

Here is a follow up from Randy Farmer to the Habitat mailing list after the event

Randy Farmer <randy.farmer@pobox.com>
Sep 30, 2014, 6:05 PM
to habitat

I wanted to thank everyone who participated in the Habitat Hackithon on Sunday...
Though we didn't meet all our goals, we did get several things set up so that we will be able to do this in the foreseeable future.

We confirmed that VICE will run Habitat/Club Caribe all the way to rendering the region while serving IO traffic, unmodified! (Win!)
We have a working Stratus of the correct vintage up and on the network.
We discovered that we need more original QLink header (and ideally actual code) to get the full server up on the Stratus.
We were right on the cusp of having an extension to Qlink Reloaded that would mutliplex game traffic between a Habitat server and the client.
We have a "Waffer Theen" Fake Habitat Server that I whipped up for Node.JS, which provided the data used to confirm the client working...

What we need to do in short order:
1) Finish the QLR gateway code - MacMartin and Steve were very close, but there's nothing on the wiki so that we can pick up where they left off.
2) We need Paul's and Chip's comprehensive list of what's missing for the QLink build, and a strategy to get it (I think Alex said he'd lead this effort.)

There's a lot of little other tasks, but these two are the burning ones.

BTW, I whipped up another, more interesting "hatchery" contents vector, below. It is hand-crafted isn't confirmed to be working. Perhaps someone using Michael's hack can test it out? There's one more change I want to make to it (put the head on the avatar's shoulders), but only after I know it works.

Thanks again for everything! It was awesome.
Randy


var hatchery = Buffer([0x55, 0xFA, 0x00, 0x01, // Header "U" + Small Forced Reply: #message_DESCRIBE to Region Object
            // (4) Region/System Variables
            0x5d, 0x55,    // terrain_type
            0x5d, 0x55,     // light_level
            0x20,         // region_depth
            0x5d, 0x55,     // region_class
            0x01,         // Who_am_I (NOID)
            0x5d, 0x55, 0x5d, 0x55, 0x5d, 0x55, 0x5d, 0x55, //bank_account_balance
            // (20) Contents List
            0x01, 0x01,    // Avatar
            0x02, 0x24,    // Ground
            0x03, 0x50,    // Wall
            0x04, 0x7f,    // Head
            0x05,   23,    // Door
            0x06,   56,     // Short Sign
            0x5d, 0x55,    // EOL
            // (34) Contents state vars, in list order, starting with the Avatar
                0x5d, 0x55,    // Style
                0x54,        // X
                0x90,        // Y
                0x02,        // Orientation
                0x5d, 0x55,    // Ani state
                0x5d, 0x55,    // Contained by (NOID)
                0x92,        // Avatar: Activity
                0x92,        // Avatar: Action
                0x5d, 0x55,    // Avatar: Health
                0x5d, 0x55,     // Avatar: Restrainer
                0x02, 0x34,     // Avatar: Customize
            // (51) Ground:               
            0x01, 0x5d, 0x55, 0x04, 0xe4, 0x5d, 0x55, 0x5d, 0x55,
            // (60) Wall:
            0x04, 0x5d, 0x55, 0x5d, 0x55, 0xc4, 0x5d, 0x55, 0x5d, 0x55,
            // (70) Head
            0x01, 0xc8, 0x24, 0x10, 0x01, 0x5d, 0x55,
            // (77) Door
            0x5d, 0x55, 0x80, 0x21, 0x88, 0x5d, 0x55, 0x5d, 0x55,
            0x5d, 0x55, 0x5d, 0x55, 0x5d, 0x55, // Door State and Key 0,0,0
            // (91) Short Sign
            0x04, 0x18, 0x88, 0x8c, 0x5d, 0x55, 0x5d, 0x55,
            32, 84, 104, 101, 32, 77, 65, 68, 69, 32,   // " The MADE "
            0x5d, 0x55,    // EOL
            0 ]);           // EOP (113)