The Story of VIRTUAL WORD Demo

What is Virtual World:

Virtual World is an Amiga Demo relealsed in 1991, winnner of a fmous party in Norway in these days.
After playing a little with my Amiga recently ( in 97 !) I've decided to bring back those old but nice pics, and talk a little about this demo. I think you still can  Download it (430k) from Aminet.

The Story:
The demo is divided in two part. After a little technical introduction, there is a "very little" story, following the hero of the previous Demo, "Trip To Mars". This guy have a new mission to acomplish, and we follow him during his long and dangeourous trip. The graphic are mainly 3D real time vector graphics with a bitmap background. During this first part, a nice tune called Apocalypse(.mod 128ko) is playing.
The second part is more classical, with a lot of 3D nice and new vector object: Some Real Time 3D PoiPoi playing music, a mouse, etc.... A different tune for this part: Hysteria (.mod, 89 ko), from Audiomonster.
All the graphics used in this page are the graphics of the demo, and they are made by three different artist: C-Dryk and Elmer, a few one by skew. The "Blade Runner" pics is from Tobias Richter.
 

The context of the demo:

So it was in 91, so forget all texture mapped, goureaud shading and so on. We only had a 68000 running at 7Mhz, but this was enough to do some cute things.
 

What make this demo interesting:

Like Trip To Mars, and unlike most of the demo at this time, the demo followed a little script. Technically too it was interesting:
For the first time in a demo, there was real circle and cylinder
I think it was one of the first use of the bitmap as a background, especally as an accurate background for the 3D. Sometime objects can even go "behind" some bitmap parts of the picture (like in the asteroid fields).
 

The technical story:


So, I'll come back to some interesting technical facts with this demo:

* The 3D engine:
The 3D engine include the ability to display real sphere, but also real circles and even real cylinder. A real cylinder is not a modleisation of a cylinder if several faces, likes usually see pics, but a cylinder is displayed as an "atomic object", just like a face. This is much more difficult to display these kind of objects like this, but the result is musch more faster and accurate.

* The scripting engine

One other intersting challenge of the demo was the scripting engine. In fact, VirtualWorld is only playing a script , but the scripting engine could be reused for another demo.
There was possibilites to "extension" to this engine. The text displayer was one of this extension. In fact, it's just like a Netscape plug-ins: you can extend the language without regenerating a new executable. Each 3D obj can execute his own screen at the same time than the others (not really object oriented, but more like multitasking of scripts).
The idea beyond that was to take more time to improve scripting than demo coding.

For the Fun, here it is the complete instruction set (!) of the scripting language. Very rough, but funny. Today I'll write a complete different set of language, mainly object oriented. In case if you dare, here is the complete script of the original demo.
The 3D object was defined in another file: objects.

 LOAD_MUS "modules/mod.hysteria" Load and play a music module
 LOAD_EXT  "intro.ext",3         Load an extension (intro.ext, into slot 3)
 EFFECT 3,0                      Play the effect into slot 3
 UNLOAD_EXT 3                    Unload the extension from slot 3
 ADD_OBJ   "HELICO"              Add the object HELICO to the list of displayed object
 ADD_OBJ   "HELICO","YOUR SCRIPT" Do the same things, but use YOUR SCRIPT for this obj.
 REM_OBJ "HELICO"                Remove the object HELICO from the list of displayed object.
 WAIT_RDV 0                      Set a syncrhonisation point : Wait other subscript to finish
 REM_ALL_SPRITE                  Remove all 2D sprites
 SET_SPRITE 5,128,190,2,47       Display a 2D sprite
 FADE_OUT              Fadethe current colormap to black
 FADE_IN               Fade from black to the current colormap
 START_TASK            Start the Amiga multitasking
 LOAD_BACK "pics/colormap"  load a picture as the current background
 RESTORE_COP           Restore system copper list
 PROF 5                Number of bitplanbes used ( here it's 5)
 VIT_OBJ 10            set speed of the object in is own coordinate
 SELECT "MOTO"         Set an object as the current object for scripting
 SET_ANGLE -20,0,0     Set angles of the object
 SET_SPANG 0,0,5       Set rotation speed
 SET_SPEED 5,0,20      Set displacment speed
 EFFECT 1,0,600,"Hello Everybody"  Call a plugins effect with parameters
 STOP_TASK  Stop amiga multitasking
 START_TASK
 BACK_ON               use bitmap background
 BACK_OFF              Don't use bitmap background
 CLEAR_FOND            Clear background
 PUT_FOND "CURRENT"    Put the object named "CURRENT" into the bitmap background
 WAIT 100  Wait an amount of time

 LAB "Label"           Add a new label. It's also the entry point for a subprogram
 VAL_COL 16            Set color fading to a new value
 OMBRE_OFF             Remove shadows (ombre is shadow in french)
 CALL "go back"        Call a subprogram
 REM_ALL               Remove evrything from the scree
 RETURN                Return from a subprogram
 END End the script
 

And now, more background from the demo:

 And now, you can go back to the demo page, or go back to the HomePage
Send comment, suggestion to thomas.landspurg@gmail.com