Version: $Id: index.html,v 1.6 2001/03/02 07:55:47 raymond Exp $
Mdule owner: Raymond de Vries
Remarks about web browser plugin for Netscape and MS Internet Explorer.
The project proposal for this project can be found at XXX
General remarks
Plug-ins are platform-specific (contrary to java applications) so they must
be build for every operating system and processor platform. By using a cross
platform library this task can be simplified very much.
Should we register a new MIME type for Blender experiences (ie worlds)? From
the Netscape site: "If you create a new MIME type, you should register it
with the Internet Engineering Task Force (IETF). Until the MIME type is registered,
you should prefix it with x-. (For more information on MIME types, see RFC 1521.)"
Quick technical working of a plug-in: Plug-ins Working
When the browser starts up, it checks for plug-in modules in the plug-ins directory
and registers them. (You can find the installed plug-ins by selecting About
Plug-ins from the Help menu.) When an unknown MIME type comes over the stream,
Navigator checks for that type in the header. If a plug-in is available to handle
the new stream with the specified MIME type, then Navigator loads the appropriate
plug-in into memory, creates a new instance of it, initializes it, and hands the
new stream over to the plug-in. Navigator also gives the window handle to the
plug-in so that it can draw in the Navigator window.
Plug-ins can also be loaded as part of a Web page by means of the EMBED tag. If
you use the SRC parameter in your EMBED tag, Navigator looks at the type of
document to decide which plug-in to use (which is why you need to register for
MIME types and file extensions in the plug-in's resource file). When downloading
a file from a Web server, Navigator receives a MIME type, which it will use to
choose the plug-in. When SRC refers to a local file, there is no MIME type
information, so Navigator has to fall back on the extensions that plug-ins have
registered for.
High performance
Because the plug-ins are written in native code (C++) the documentation says
that you can high performance, which is quite crucial when you're making a
game player plug-in.
Selection criteria
This document describes a number of libraries and toolkits that make it easier
to develop plug-ins. The criteria that will be used are:
Legal issues, what kind of license is used for the library. Should we
cooperate with a company in order to overcome these? Is the library open source?
Should the plug-in started from scratch so that we are in full control?
Cost, also depends on type of license (eg pay it once or pay a fee for
every single copy?)
portability between platforms, specifically the traditional Blender platforms.
As for the other projects it is very important to use one code-base in order
to maintain the code in a reasonable way.
Constraints
Because our background is Blender and the Blender Game Player, a number of
obvious things can be listed:
Language C++ must be used because the core of the plug-in (the game engine
that is the basis for the Blender Game Player) is written in
C++. That is why java is not an option since in that case we would need to
rewrite the complete game engine, something that introduces a lot of problems!
Java would be viable option if that is the way to go for other projects...
A plug-in is primarily focussed at lowering the threshold for using Blender.
Because of that the main targets for the plug-in will be MS Internet Explorer
(version ??) for the MS Windows platform and Netscape for the Unices (the ones
that tradionally supported for Blender) and MS Windows.
Information @ Netscape
Netscape has information available to developers at
Netscape Plug-In Guide and
A sample Netscape Client Plug-In
However, this is rather old information, namely January 1998... However, judged
from the content it is still valid for the latest versions of Netscape
For Netscape, LiveConnect provides the interface for communication between
plug-ins, Java, and JavaScript.
LiveConnect is built on the Java Runtime Interface (JRI).
When coding directly for a specific platform one has to create specific code
for each platform. This introduces a potential maintenance problem and should
be investigaed very carefully!
Information @ Microsoft
Cross-platform Qt library web plugin (Netscape and MS Internet
Explorer)
The Qt widget library
(by http://www.trolltech.com) has an
extension (called nsplugin) to make web browser plugins. Maarten already made an overview
of Qt here, including
licenses and pricing. Important to note is that there are no royalties, run-time
licenses or other additional costs. You can distribute your Qt-based programs either
statically or dynamically linked without any additional charges.
The documentation tells that Qt uses the so-called LiveConnect technology
(see elsewhere in this document) as a basis for the plugins. It seems that
every application that is made with Qt can easily be converted into a plugin. Specific
information can be found
at the TrollTech site
Since the Qt library provides seemless integration with OpenGL by means of
special wrapper classes that encapsulate the OpenGL initialisation, it is
expected that creating a Qt OpenGL plugin should not be difficult.
Since we are not using java (which is portable by itself) we have to create
a binary plug-in for each platform. The Qt Free Edition is currently supported
on Linux, Solaris, SunOS, FreeBSD, OSF/1, Irix, BSD/OS, NetBSD, SCO, HP-UX
and AIX. This means that all of our (Blender) platforms is supported, except
for BeOS! (MS Windows is covered by the Qt Professional and Enterprise (the
latter one with OpenGL support) editions).
Maybe relevant for future projects: Qt applications also run on PDAs!
to allow any X program to be used as an inline viewer for any appropiate
mime type.
Only X Window system so MS Windows platform is not supported
Rather old, end of 1999. Doesn't seem to be active.
Carsten did some nice tests which show that an unmodified Blender
Creator and Blender Game Player can be run inside Netscape! Looks cool
Plug-in Software Development Kit downloads @ Netscape
Netscape has a download page at
http://home.netscape.com/comprod/development_partners/plugin_api/index.html
The Netscape Navigator LiveConnect/Plug-in API allows third
parties to extend Netscape Navigator with native support for new
data types and additional features. Plug-ins appear as additional
capabilities of the Netscape client, indistinguishable to the user from
the baseline features. LiveConnect allows plug-ins to be controlled
by Java and JavaScript."
Sound issues
Hhmm, I wonder if (and how) it's possible to play samples from within
a web browser... Anyone??