bookmark_borderSCUMM in JavaScript

Soon after bumping into haXe and Doomed Online, they got me thinking. “Would it be possible to run SCUMM games in flash?”. The answer to that of course is yes, as was demonstrated by my SCUMM Interpreter written in haXe. Though as with anything, you really need to spend the time to implement everything, and justify it somewhat.

(Not to mention that Flash 10 is supposedly going to be able to compile C code, thus making my complete port more or less redundant)

Now I would have stopped there, if I hadn’t noticed that haXe targets multiple platforms, including every web developer’s best friend, JavaScript. Thus I thought, “Would it be possible to run SCUMM games in Javascript?”. For the answer… well, take a look!

OpenQuest in a browser

Yes, that is an image of OpenQuest running in a web browser, specifically Firefox. It can run in other browsers too, though to date I have only tested Firefox and Safari, the latter of which mysteriously crashes.

And if you want, you can try it yourself by clicking here. A word of warning though, it is highly recommended that you use Firefox to run it. Otherwise you might get a nasty crash, or a big disappointment.

As previously, just about enough is implemented to get the first room of OpenQuest loaded. Actors, verbs, objects, and sounds are not implemented, though it would certainly be possible. However the engine runs much slower than in Flash, so I doubt anything that could be considered to be “playable” could be implemented with it.

Still, I feel I’ve now accomplished what I set out to do when writing this interpreter – that is to push haXe, Flash, and JavaScript to the limit and see what I can get out of them. And of course, learn a bit more about SCUMM too.

Again, I would like to congratulate the ScummVM team for their SCUMM interpreter and Alban Bedel for his scummc compiler. Without their efforts, I wouldn’t have had any code or references from which to base my haXe-based SCUMM interpreter.

Edit: Source code available from github.

Edit: No longer crashes in Safari provided you are using Safari 3.1.2 or later.

bookmark_borderYet another RailsCollab demo

Recently I have had another go at tweaking RailsCollab, the pet project of mine (which I have mentioned previously).

After moving the source repository from Subversion to Git, I decided to add in a long standing missing feature – the web-based configuration editor.

Configuration Editor

Originally I pretty much stayed away from implementing this as Ruby on Rails was a real pain in the ass when it came to deployment, so I couldn’t implement a configuration loader that I knew would work in 90% of deployment cases.

That was, until recently when Phusion Passenger was released.

Phusion Logo

For those of you that don’t know, Passenger is an Apache module which allows you to simply drop in your Rails application and run it with practically zero configuration. It pretty much falls under the “it just works” category. I have no doubt that anyone using RailsCollab will prefer using Passenger to deploy. Consequently, I have been able to implement a rather nice configuration loader based on this assumption.

Which brings me to the demo. A short while back, my web host, DreamHost added Phusion Passenger support to their web servers. Factor everything together, and you have… the RailsCollab demo!

Link to the demo

UPDATE : The demo is no longer available.

“But wait!” you ask, “how do I login?”. Well, using OpenID of course. As with my previous demo, you should be able to select the “Use OpenID” checkbox and type in your OpenID to login.

OpenID Logo

This will automagically register you with the system, adding you to the “OpenID” company and the “RailsCollab” project. Afterwards if you want, you can reset your password so you can login using a regular username & password, though personally I think typing in your OpenID is a better idea.

Note that your OpenID provider needs to support handing over identity fields in order for RailsCollab to correctly register you. MyOpenID is an example of a provider that supports this. Also note that if there is a user with a duplicate username or email in the system, registration will fail.

One more thing

The RailsCollab demo also supports the Basecamp API. This means that you can take any existing widget, program, or service that integrates with Basecamp and use it with RailsCollab. e.g. Avalanche, Freshbooks, or Cashboard

So what are you waiting for? Try the demo already!: 🙂