How can I play .dcr Shockwave games?

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.

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!

  • http://bluemaxima.org/flashpoint/
  • https://mega.nz/#F!ppJBySSC!LCR6NbqXpUpyXqH_1eemhQ
  • https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit?usp=sharing