Immersive Systems Inc:

https://web.archive.org/web/19990125100147/http://www.immers...

[I'll quote some of the page here for people with sensitive eyes]

>Meme tm: Real VR for the Net!

>"A brilliant idea..." -Andries van Dam

>Meme tm was designed from the ground up for multi-user networked virtual worlds.

>Meme tm is a platform-independent standard for networked virtual reality.

>High performance. Self-contained. FAST real-time 3D. Easily customized for use with head-mounted displays, data gloves, and other VR peripherals.

>Meme tm is designed so it can run on memory-limited machines such as settop boxes and game consoles. Meme tm can also take full advantage of the most advanced graphics hardware.

>"This is what VRML 3.0 hopes to be." -Tony Parisi, VRML co-inventor

>Meme tm enables the construction of virtual worlds on the Internet.

>Fully interactive. Inhabitable by many users. Quickly constructed. Complex lifelike behavior. Easy to deploy.

>"Marc de Groot is a brilliant programmer." -Mark Pesce, VRML co-inventor

>Highly efficient virtual machine used by NASA and the aerospace industry.
Will run on any system that has a 3D rendering engine.
Portable to platforms with primitive or non-existent operating systems.
Really works identically on all platforms.
Runs in less than 500 kilobytes of memory.
Upwards of a million context switches per second on current-generation processors.

>"How the hell did you do that?" -unknown attendee, Web Interactive '96

[Click through for more praise for Meme, colorful images, and awesome 1994 web site design!]

An Overview of Meme:

https://web.archive.org/web/19990504200616/http://www.immers...

>Meme TM--The Multitasking Extensible Messaging Environment
Meme TM is a software package for the development of virtual world applications.

>Worlds built with Meme TM can be inhabited by multiple users who are connected to a computer network. Meme TM virtual worlds distinguish themselves by providing rich object behavior, unlike menu-driven systems that offer a fixed set of choices.

>Meme TM is designed to be interoperable, that is, Meme TM worlds and objects will behave identically on any computer running Meme TM, irrespective of differences in the underlying hardware.

>Meme TM was conceived to enable the construction of a shared virtual universe for everyone on the Internet.

>what kind of software package is Meme TM?

>Meme TM does not easily fit into a well-known category. It incorporates elements of an operating system, an interactive development environment, and a programming language.

>Meme TM is an operating system [...]

>Meme TM is an interactive development environment [...]

>Meme TM is a programming language [...]

Meme Development System for Windows Product Specification:

https://web.archive.org/web/19990422114909/http://www.immers...

>Required hardware: PC, 80386 or better with math coprocessor, 8 MB RAM, VGA, mouse, Ethernet or 10BaseT card or modem (for network connection.)

Meme Demos:

https://web.archive.org/web/19990504193428/http://www.immers...

Meme Programming Guide:

https://web.archive.org/web/19980110220614/http://www.immers...

[It's totally programmable in FORTH! What more is there to say? ;) So here's some code! ]

>Writing Meme TM code

>Writing code for use in a multi-user universe is an undertaking that requires some sophistication. Often, the programmer wants to try out an idea quickly, without concern for the demands of multi-user distributed programming.

>For instance, let's assume the programmer would like to spin a ball, all alone, in the virtual world. Meme TM makes it easy to animate such a scene. The following text is the actual code that implements a spinning ball, and is very similar to the spinning ball demonstration on the demo page. The backslash character (\) is used to delimit a comment to end-of-line.

>The comments assume that each line is being typed by hand at Meme TM's command prompt, with pauses between the lines to observe the effect on the displayed scene.

\ First we create an eyepoint with which we view the scene.
\ The eyepoint is initially positioned at the origin, looking down the
\ negative Z axis (away from the user).
Eye: eyepoint

\ Let's put the eyepoint at +20 on the Z axis. This moves the camera
\ away from the origin, towards the user.
10e0 eyepoint z!

\ We put a ball in the scene. It is created at the origin.
" sphere.rwx" Shape: ball

\ Up until now, the display has remained blank. To draw a single frame
\ on the display, we execute the meme "render".
render

\ There is now a ball on the display. Rather than type "render" each time
\ we want to draw a frame, let's start a background task that redisplays the
\ scene continuously.

background r \ Define a new task called "r".
begin \ Start of a looping structure
render \ Draw one frame
pause \ Switch to the next task
again \ Loop forever
; \ End definition

r wake \ Start execution of the rendering task.

\ Let's define another background task to make the ball spin.

background spin \ Define a new task called "spin".
begin \ Start of a looping structure
1e0 ball yaw+! \ Increment the yaw angle by one degree
pause \ Switch to the next task
again \ Loop forever
; \ End definition

spin wake \ Start execution of the spinning task