24

I found this set of old games, that I would really like to play, that use adobe shockwave. Specifically, "World Builder" from "game archive 3". I am using XAMPP as it said to do in the readme, but it keeps crashing. If you have any ideas at all on what I could do, I'd love to hear them.

I also checked these out but no luck.

https://superuser.com/questions/1114354/how-to-view-adobe-shockwave-file-dcr-file-extension

Play old Lego.com games Junkbot and Worldbuilder, saving progress

2 Answers 2

46

A Bit of Terminology

First off, this question is not about Flash Player - read up on the difference.

https://medium.com/@nosamu/the-difference-between-flash-and-shockwave-b27609808a02

Alright, so your question is about Shockwave Movies (files with a DCR type) created using the Director application. I've answered this question before other places, but have since realized my answer is outdated, so here it is: the revised edition.

Note: in the time since I originally wrote this answer, BlueMaxima's Flashpoint has gotten a lot better and can solve for most of the compatibility problems this answer mentions. Definitely check there first before going the route of manually setting everything up.

Online Playback using Shockwave

So you have found a website that still uses Shockwave. The first thing you'll need is a plugin supported browser. Google Chrome and Mozilla Firefox no longer support plugins, so these will not do. I would recommend installing the K-Meleon browser from kmeleonbrowser.org which is a fork of Firefox that has kept its NPAPI support - meaning it is a plugin supported browser capable of loading Shockwave.

However, if you don't want to install another browser, a quick n' dirty solution is to use Internet Explorer (not Microsoft Edge!) Yes, even in Windows 10, Microsoft Edge did not entirely replace IE - if you search for Internet Explorer in the Start Menu, you will find it tucked away.

If you really don't want to leave the comfort of your preferred browser, another option you have is to use the IETab browser extension.

Note that this is not ideal, as Internet Explorer will often falsely believe that Shockwave has crashed and refresh the page during playback. A browser supporting NPAPI is best. Whichever browser you use, it must be the 32-bit version of said browser, because Shockwave is a 32-bit plugin. You can still play Shockwave Movies on a 64-bit computer, but you must use a 32-bit browser.

Installing Shockwave

Alright, so you now have a plugin supported browser. Now, if you already have Shockwave installed on your system, you should uninstall it and restart before ever installing a new version (and yes, the restart is actually necessary.) Adobe's auto-updater is buggy with Shockwave, so if it alerts you to a new version, you should get the new installer from their website yourself instead of using the auto-updater.

The official Shockwave download link is retired. However, an offline installer still exists on Adobe's website at the link below - be sure to use the Windows MSI Installer. This is the best installer to use to install Shockwave 12, as it comes with all of the reverse compatibility components.

https://www.adobe.com/products/shockwaveplayer/shwv_distribution3.html

Just in case, here is a mirror of the Windows MSI Installer at the above link.

https://mega.nz/#!B1ITjaDK!7Lq6wICa0Ra7z5GyC0QEEm_jp2FGsgJyOAzbVorjjhY

And here is a mirror of the Mac OS X DMG Installer.

https://mega.nz/#!l853VK7Q!wvFXWhdaLNK8A40PSh09XvVocMbEqXj9wuNBQXRNpYY

You will also need the Visual C++ 2010 Runtime (x86) installed. In most cases, you will have this installed already, but this is something to bear in mind especially if you are installing Shockwave on a VM. You must have the x86 version, even on a x64 computer. If Shockwave is still not appearing after you've installed it, you can try using the Visual C++ 2010 Runtime installer at this link.

https://www.microsoft.com/en-US/download/details.aspx?id=8328

After it's installed, you should be able to restart your browser and go to your webpage that uses Shockwave and all should work well - unless you experience the Shockwave 3D Bad Driver List Bug.

The Shockwave 3D Bad Driver List Bug

There is a bug with Shockwave 3D which Adobe has not created any official fix for. If you try and play 3D content on a Windows 10 PC with newer Nvidia graphics drivers, the plugin will crash and become non-interactable. This happens because of a change in the specification, which causes a buffer overflow.

When Shockwave 3D gets the renderer services, it attempts to check if your driver is one of many "Bad Drivers" that don't support Shockwave 3D. It does this by comparing the name of the driver to a list of bad driver names. In previous Windows versions, this driver name was just the filename of its DLL file. However, in Windows 10 it is supposed to be the full path to it (which currently only Nvidia conforms to.) Shockwave 3D only allocates 255 bytes for this string, so it overflows and causes a crash.

You can resolve this issue manually by editing back the registry value with the driver name to be only the filename instead of the full pathname.

  1. Open Registry Editor and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video
  2. Press Ctrl+F, make sure the option to search for Values is checked and search for InstalledDisplayDrivers and you should arrive at a Registry Key called 0000 with the InstalledDisplayDrivers value selected.
  3. Right click the Registry Key 0000 and hit Export. Save the file with any name - this is just to make a backup of the old state you can revert to at any time.
  4. Now right click InstalledDisplayDrivers value and click Modify... this will pop up a dialog box with a either a single pathname, or multiple (comma seperated.)
  5. For every pathname here, strip the path and file extension to leave just the filename (for example, "C:/example/nvldumdx.dll" should become "nvldumdx"). If there are multiple pathnames, do it for all of them, leaving the commas between.
  6. Now hit OK. The Shockwave 3D issue is resolved.

Note: something I forgot to mention in my original post is that sometimes, a z-buffer glitch will occur where the 3D models look "inside-out." Just right-click the game and select DirectX 9 as the 3D Renderer and the issue should fix itself.

Missing Xtras

Inevitably, you'll run into a Shockwave Movie that gives you an error about "missing an Xtra." What is an Xtra?

Well, as the name would imply, Xtras were ways of "eXtending" Director's and, by extension, Shockwave's capabilities. These are native binaries that the Director API would interface with to provide new abilities to the plugin. Basically they're just DLLs. At least, on Windows - and on Mac they are code fragments, the Mac equivalent.

Yes, that's right, anyone - me, you, your friend - could write a DLL, load it in Shockwave in the browser, and be able to run their native C++ code in the browser environment. That sounds scary, but they did at least have to be signed and users were treated with scary "are you sure you want to install this Xtra?" prompts.

For example, shooters would often make use of the MoveCursor Xtra, which gave Shockwave the ability to position the mouse cursor on the screen. Music-based timing games could use the Beatnik Xtra, which gave Shockwave the ability to play tracker modules.

In order to accomplish this, Shockwave would download external Xtra-Package files (with a W32 type on Windows) from the web, which had a signature to prevent MiTM attacks, and wrapped an Xtra file (with an X32 type on Windows) which is what Shockwave would then load.

Of course, this has created a bit of a DLL Hell situation, which is problematic nowadays because a Shockwave Movie might whine about not being able to find an Xtra because it was on a website that no longer exists, or was only compatible with a previous version of Shockwave, or you can only find the Mac version of it and you're on Windows etc.

Sometimes resolving Xtra issues is as simple as installing Shockwave using the MSI Installer as mentioned before - since the EXE Installer (including the supposedly "full" version) relied on downloading files that no longer exist on Adobe's website during the install.

If you do manage to find a copy of the Xtra which Shockwave requires - elsewhere on the web - you can skip the automatic download process by manually copy pasting it directly into Shockwave's install folder.

If you find an Xtra-Package, you can use Valentin's Unpacker to get the Xtra out of it.

http://valentin.dasdeck.com/lingo/unpack/d11.5/UNPACK_v08.zip

  1. Go to the system folder, typically C:/Windows/System32 (which, on 64-bit Windows, corresponds to C:/Windows/SysWOW64 for 32-bit applications such as Shockwave instead.)
  2. In the system folder, look for a folder called Adobe. Inside that folder, look for one called Shockwave Player 12, and inside there, look for a folder called Xtras.
  3. Paste the Xtra file (with an X32 extension) in there along with the others. Press Yes to admin prompts.
  4. Go back to the system folder. Look for a folder called Macromed.
  5. If it doesn't exist, you are done - otherwise, go into the Macromed folder. Inside, look for a folder called Shockwave Player 10, and inside there, look for a folder called Xtras. Paste the Xtra file in there as well. This will cause Shockwave to look here when loading the Xtra.

Offline Playback using Projectors

So you've found a Shockwave Movie, but it isn't on a website and you want to play it offline. How can you do this short of using XAMPP and a web browser? Well, you can use a standard Director feature, called a Projector. These are executable files capable of playing movie files on your PC, without a browser or the need to have Shockwave installed. They are standalone players that include all the necessary libraries.

If you have a copy of Director, you could use it to create a Projector yourself. I'll save you the hassle - I've got a number of Projectors in my MEGA Folder below. These are taken straight from the Director install CD.

https://mega.nz/#F!10oyzSrL!AttpEr-nBc_7GhFy5zQkvA

The Projector Skeletons are the ones you want and are official Macromedia/Adobe components. If you're not sure which to use, try the latest version (12.0.0.111.) The "Stretch Projectors" are my modifications that attempt to stretch the movie to fullscreen size, though this is not guaranteed to work for all movies.

However, playing offline by using a Projector introduces other issues.

Loaders

A common web convention in the early 2000s was to throw up a fancy loading screen while waiting for full webgames to download. This is equally the case with Shockwave. You can think of loaders kind of like a bit.ly URL - they redirect elsewhere, and if the content they're trying to load is gone, it won't load.

Sometimes you will find a loader that tries to load from a website that no longer exists. This is a problem because the game will be missing assets. Typically, if your Shockwave Movie file is under 20 KB, it's probably a loader. You can typically discard loaders. The main movie file it tries to load is all that is important.

External Files

Another common practice was to have level one be in one file, level two be in another, and so on - each only downloading from the internet when the previous level completed to lower the filesize of the main movie. This is problematic because you might have the main movie and none of the assets it requires. Shockwave is a multimedia application, so it supports many asset types (JPEG, MP3 etc.) and can download these files from the internet at any time for playback.

The primary filetypes to keep an eye out for when attempting to save a Shockwave Movie along with all its assets are Director Movies (DIR/DXR/DCR filetype) and Director Casts (CST/CXT/CCT filetype) as these are the standard Director movie formats Shockwave can open. You can use Telerik Fiddler to see what files a Shockwave Movie is downloading when embedded on a page. When playing offline in a Projector, a file browse dialog will appear for missing files.

Leech Protection

Finally, Shockwave Movies often would attempt to prevent theft by checking if they are being played on the intended website, to prevent hotlinking or stealing. This poses a problem for offline play, since Shockwave will get a local path instead of a URL, and the scripts will detect that they're not being played on the intended website, locking you out.

If you have Director, you can use the LeechProtectionRemovalHelp Xtra to remove the Leech Protection - this is an Xtra I wrote to help with Shockwave Movie archival. I promise I'll have better documentation soon!

https://github.com/tomysshadow/LeechProtectionRemovalHelp-Xtra

This still can't resolve all situations. Shockwave doesn't come with built in Leech Protection, so how it is done is up to developer implementation. This means there are a lot of different types of Leech Protection. One of the more advanced is Robotduck's Leech Protection, which makes use of an external PHP script. In these cases, there's nothing that can be done short of using XAMPP and editing your Windows hosts file, then playing the movie in a browser.

https://web.archive.org/web/20081221135813/http://www.robotduck.com/content/articles/director/net/dcrProtection/index.htm

Conclusion

Shockwave Movies are hard to play. Feel free to ask me additional questions.

If you're interested in this topic, definitely check out communities devoted to saving webgames such as BlueMaxima's Flashpoint. There is also my personal MEGA Folder with the games I have managed to save so far. As Director has been discontinued and Shockwave games slowly disappear from the web, the fact Macromedia never released any format documentation makes figuring out the inner workings of this technology a new and exciting field. Maybe you'll even join us!

13
  • 2
    This is one hell of an answer. Good work. :)
    – Jeremy
    Apr 3, 2019 at 14:49
  • 2
    @Wildcard there was never any official Linux build of Shockwave. As for Mac, you can try the DMG on this page: adobe.com/products/shockwaveplayer/shwv_distribution3.html Apr 25, 2019 at 12:13
  • 1
    @OrangeDog not unless said software also doesn't support AMD/Intel graphics cards, because those cards still use just the filename. May 22, 2019 at 6:11
  • 2
    There's a recently asked related question here: How can I keep playing online-only Flash games after the Flash shutdown in 2020? You seem to be knowledgeable on the matter and you might want to check it out. Dec 19, 2020 at 13:05
  • 2
    It works because it's a browser that supports NPAPI. It's outside of the scope of the question to list every browser that supports NPAPI. I mentioned K-Meleon in my answer as one example of a browser that does. Apr 22, 2021 at 13:20
5

"robotduck" here :) I'm the author of that "robotduck's leech protection" and of a bunch of popular shockwave games back in the day.

Sorry that protection is causing issues - back then it was kind of vital because otherwise large game portal sites would basically "steal" my games by embedding them within a frame directly from my server, thereby using my (costly) bandwidth to download the large DCR file, while surrounding them with their own ad-filled web page. It was a bit of a nightmare and an ongoing challenge to simply host my own games on my own site without going bankrupt due to bandwidth fees.

Anyway, I'm just posting here to say, another possible way to play the old games is to contact the authors of those games (like me) and ask them. I've recently started trying to get my old games working as EXEs, with all the copy protection removed, and this is mostly because people have contacted me and said they remember them and still want to play them!

I've put a few up on itch.io here, and I'm trying to make time to put more up, but it's not straightforward exporting these old projects as EXE. https://robotduck.itch.io/

Also because my old site featured a bunch of games connected together with a profile system and achievements, I've been experimenting running a virtual machine, set up with mid-2000's software, eg: Windows XP + Firefox 25 with the shockwave plugin installed, and a copy of Apache to host the entire site itself on the same virtual machine, so that it's possible to experience playing all the games on the web site as it was back in the early 00's. This is a work in progress but if I manage to package up a virtual machine image that runs all this properly I'll probably make it available from my site.

If anyone has any other better ideas of how to make these old games more widely available, I'm interested!

2
  • 2
    Always good to hear from developers, and thanks in advance for sticking around for other ideas. (You can maybe find other related questions by clicking on the 'flash' tag underneath the question.) Welcome to Arqade!
    – Joachim
    Jan 17 at 13:47
  • 1
    Running Shockwave 3D in a VM isn't really ideal: since they can't do 3D hardware rendering you'll probably get stuck with its pretty miserable software renderer. In the time since I wrote my answer, BlueMaxima's Flashpoint has gotten a lot better and is the way to go for a quick setup. It can solve most of the problems I wrote about Feb 5 at 6:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .