NODE Documentation | Script reference | Screenshots
NODE Version: 1.2.4.0578
Version Date: 10.09.2006
Contents
1 Abstract
1.1 Projects based on NODE
1.2 Feature list
2 Resource files
2.1 Resource handling
2.2 Image files
2.3 Sound files
3.4 Ligtwave files
3.5 Animation scripts (MNDs)
3.6 Package files (MNPs)
3 Lightwave specific
3.1 Surfaces
3.2 Textures
3.3 Models
3.4 Scenes
3.5 Objects
3.6 Lights
3.7 Cameras
3.8 Bones
3.9 Scene Instancing
4 NORD usage
4.1 Demo Version
5 Vocabulary
5.1 NODE
5.2 NORD (NOde Realizator for Demos)
5.3 NOMAD (NOde Modulator And Demodulator)
5.4 MND (Mindnever Node Demo)
5.5 MNP (Mindnever Node Package)
6 Contact
Abstract
NODE is general purpose realtime multimedia engine intended to be used in
development of games, demos, presentations.
Its development started back in 2002. as demo engine. Its first successful
usage was on Scene Strike 6 held in Belgrade where mindnever group won the
first place with its demo reborn. It has been developed since than, first as a
demo-engine, later it evolved into game-engine and nowadays its development is
moving toward general purpose multimedia engine.
It features resource handling, 2D and 3D rendering, music and sound playback,
realtime animation, powerful console, skinnable GUI system and much more.
NODE uses Ligtwave for all animation stuff (object models and animation
scenes) and takes many advantages of LW.
Projects based on NODE
reborn (August, 2002)
demo, 1st place on Scene Strike 6, Belgrade
sodomaLite (March, 2005)
freeware game, 3rd place on Pascal Game Development Contest
(www.pascalgamedevelopment.com); development of sodomaLite is temporarely
suspended, waiting for new powerful skinnable GUI system
NORD (in progress)
player for NODE animations; features on-screen timeline which can be
used to quickly "rewind" demo playback; full working version is
available with every release of NODE
NOMAD (future plan)
successor of NORD; complete interactive environment for development
of high quality multimedia products (demos, games, presentations)
sodoma (future plan)
successor of sodomaLite; commercial software
angel (in progress, work temporarely suspeded)
new demo of mindnever
Feature list
This is a brief listing of NODE features. More details are available in
specific sections.
GENERAL
- efficient handling of all types of resources (images, object models,
scenes, sounds, animations) with support for resource packages
- image loading using Free Component Library
- realtime 2D and 3D rendering using DirectX 9
- music and sound playback using BASS library
- layer-style animations made in simple but powerful scripting
language
- skinnable GUI system
- powerful console with customizable command set
- developed in FreePascal with help of Lazarus
GENERAL - RESOURCE FILES
- image file types: BMP, PNG, JPEG, TARGA
- Lightwave 6 models (LWO2) and scenes (LWS3)
- all sound files supported by BASS library
OBJECT MODELS
- multiple layers with support for layer name, visibility flag and
layer parent
- color maps, uv-texture maps, morph maps, weight maps
- not more than 256 points per polygon
- not more than 255 weight maps per layer
- replacement scenes for layers
OBJECT MODELS - SURFACES
- flat and smooth, single and double sided surfaces
- envelopes on almost all of properties of surfaces (color, diffuse,
luminostiy, specularity, glossiness, reflection, transparency)
- additive transparency for surfaces
- triangle wireframes
- lightened surfaces (not affected by lights)
- sphere reflection map with dynamic reflection factor
- vertex color map
- alpta-test
- multiple texture layers with support for several layer operations
OBJECT MODELS - TEXTURES
- blending modes for textures
- tiling modes (clamp, repeat, mirror) and wrap amounts for textures
- planar, cylindrical, spherical and uv-mapped projections
- image sequences (from Lightwave)
- realtime animated texture
- alpha channel for texture as separate image
SCENES
- support for objects, bones, lights and cameras
- envelopes on position, rotation and scale of all elements
- PivotPosition for all elements
- parenting and targeting of all elements
- backdrop color
- fog with envelope on fog min and max distance
- supported envelope IncomingCurve options: Linear, Stepped, TCB
- supported all Pre- and Post- behaviors for envelopes
- supported modifiers on any envelope in the scene: Oscillator
SCENES - OBJECTS
- null objects
- sound null-objects (which can be used to add multiple sounds to scene)
with envelopes on volume and playback control over keyframes of
scale.z
- realtime object deformations using morph mixer data
SCENES - LIGHTS
- ambient color and intensity
- multiple ambient, distant, point and spot lights with envelopes on
all of their attributes
- AffectDiffuse and AffectSpecular properties of light
SCENES - CAMERAS
- envelope on camera zoom
- multiple cameras with easy camera switching
SCENES - BONES
- skeletal animations using bones
- bones without weight maps are supported (note: turn off BoneActive
on these bones)
SCENES - SCENE INSTANCING
- scenes are templates for animations
- scene alternatives (defines set of scenes among which one is
dynamicly picked every time that scene is to be played)
- allows playback of the same scene at different times in the same frame
PROJECTS
- simple but powerful scripting language
- layers inside projects; each layer is used to represent one
resource: color, image, scene, another project or sound
- support for rendering of projects to textures
- automatic clipping of projects and scenes played inside another
projects
RENDERING - 2D
- fast rectangle color fill
- fast image drawing with support for lots of alpha blending modes
- image color modulation
- fast text output of any font supported by system
- automatic clipping to specified rectangle
RENDERING - 3D
- realtime clipping in respect to camera position, rotation and zoom,
fog and objects' size
- fast switching between different surfaces & textures
- 3-pass rendering (environment elements, solid objects, transparent
objects)
- realtime morph and skeletal animations at the same time
- dynamic lights
- automatic adjustment of sounds' volume
RENDERING - GUI
CONSOLE
Resource files
Resource handling
All resources used by NODE are uniquely identified by their name
relative to the main program directory. Resources names are platform
independed which allows easy migration to other architectures. They
have form of ~/path/name and all filenames used in NODE application are
translated into this form.
Resources are handled by Resource Manager, which allows having only one copy
of each resource in memory. Resources are handled effitiently so that they
can be wiped out from memory as soon as they are not needed anymore.
NODE supports term of a "critical resource". These resources are
handled in a special way when an application using NODE is in
fullscreen and user switches to another application and then jumps
back. At that moment, these resources have to be re-initialized, which
is done automaticly for all registered critical resources.
Image files
NODE uses FreePascal's Free Component Library which has support for
image loading. At the moment it supports following formats:
- BMP, all formats
- JPEG, doesn't support progressive JPEGs, palettes, grayscale
- PNG, all formats
- TARGA, must be bootom-up, RLE is supported
Although PNG is the only format which supports alpha channel, there is
a way to specify alpha channel for image in any format. You create
another image in PNG format and add -A.PNG to its name. So, if base image
is called MYTEXTURE01.JPG, then image called MYTEXTURE01.JPG-A.PNG is
used as alpha channel for this image. You can use any of these two
images in Lightwave, both denote same image.
Another way to specify transparency is to use transparent color. This
color is fixed: (Red=255, Green=0, Blue=255). Every pixel of this color
is replaced with transparent black.
Also note that dimesnsions of all images must be at least 4 and at most
2048 and must be divisible by 4.
To achieve better performance, some files in FCL have been changed.
These modifications are publicly available and you can contact
alexione@mindnever if you are interested in these files.
Image loading is implemented in separate DLL for easier development, but
it is included inside main executable in release versions.
Sound files
NODE uses BASS library (www.un4seen.com) for all sound and music
loading and playback, and supports following formats: WAV, MP3, MP2,
MP1 and OGG.
Ligtwave files
NODE supports Ligtwave 6 object (LWO2) and scene (LWS3) formats.
Although it doesn't support all of the options, it will correclty load
any object or scene file. These formats are the only supported formats
for object models and scene animation.
Project scripts (MNDs)
Note: MND files carry their extension for historical reasons: at first,
NODE was just DEMO engine, so that is why scripts still have that
extension.
Each MND file represents one project script. This project can be
used in two ways:
- it can "played" on the screen (in which case you'll also hear
music), or
- visual part of project could be rendered to another image; later,
this image can be used as a texture on any object, or it can be
simply drawn on the screen
Complete reference of MND commands and directives can be found in
mnd.txt.
Package files (MNPs)
Mindnever Node Packages are collections of any kind of files, which can
be access when this package is loaded into program which uses NODE. All
resources (images, sounds, animations...) can be stored and accessed
from MNP.
MNP's can easyly be created using GenMNP tool. This tools takes all
files and subdirectories in the directory where it is started and
stores them in one package.
Files from MNP created with GenMNP can be extracted all at once using
tool DegenMNP. These tools are not available in demo version of NORD.
Lightwave specific
This section explains some stuff about NODE which is specific for
Lightwave.
Surfaces
NODE supports following properties of surfaces:
- Smooth checkbox and Smoothing Angle
- DoubleSided checkbox
- envelopes on Color, Diffuse, Luminostiy, Specularity,
Glossiness, Reflection, Transparency
- Additive Transparency: envelope is supported for additive
transparency and is interpreted as this: if value of this envelope
is >= 0.5 at some moment, surface is additive; otherwise it is
normal
- Sphere Reflection Map (note that value of Reflection is envelope);
however, be carefull here: Lightwave and NODE actually use
cylindrical environment map; note that, at the moment, NODE doesn't
calculate reflection projection exactly as Lightwave
- Vertex Color Map
- Translucency is used for alpha test: all pixels which alpha channel
is less then Translucency value are not drawn
Comment of surface is processed in a special way. You can use it to
further customize your surface. Type in one of these letters to get
desired effect:
- E - polygons with this surface are rendered before all other polygons
in the scene (these are environmental objects)
- W - means that for polygons with this surface, only their wireframe
will be rendered, not whole polygons; also note that all polygons
are triangulated
- Z0, Z1, Z2 - these are used to customize each pixel depth-comparision;
- Z0 means that pixel are always rendered
- Z1 means that pixel will be rendered only if it is in front of
already rendered pixel
- Z2 means that pixel will be rendered only if it is in front of
already rendered pixel, but internal depth-buffer is not modified
- U1,...U9 - color of surface is not taken from surface, but from
UserColors; application is responsible to set user colors;
default for these colors is white color
- ~0,...,~9 - these are used to denote camera on which polygons with
this surface are not visible; you can find detailed
description in section 'Cameras'
- T - forces this surface to be transparent; note: only transparent
surfaces support alpha blending; by default, surface is transparent
if it has some Transparency
- S - forces this surfaces to be solid; can be used for nice effects
with alpha-testing (Translucency)
- C - if there is a texture on this surface, then base color of texture is
not used
Textures
NODE supports multiple texture layers per surface on color channel,
on texture as specular texture, and environment map texture. Color texture
is interpreted in the same way as in Lightwave: like it sits on top of
Color which is choosen for that surface. Use 'C' in surface comment
to disable this base color.
Blending mode of texture is used to combine color and texture. Note
that some blending modes are not interpreted in the same way as in
Lightwave, but those most important are interpreted exactly: Normal,
Additive, Multiply.
Other supported features for texturing are:
- tiling modes (reset, repeat, mirror) and wrap amounts for textures
- planar, cylindrical, spherical and uv-mapped projections (for
non-uv projections, only scale and position are supported)
- image sequences (from Lightwave)
- realtime animated textures (through nested projects, see mnd.txt
for details)
- alpha channel for texture as a separate image
Models
Here is brief list of supported features regarding object models:
- multiple layers with support for layer name, visibility flag and
layer parent
- color maps, uv-texture maps, morph maps, weight maps
- not more than 256 points per polygon
- not more than 255 weight maps per layer
One special feature of NODE is Replacement Scene. Let's say we have
some model WEAPON01.LWO, and this object has layer called BASE. Also,
we have a scene WEAPON01!BASE.LWS in the same directory. Now, whenever
you use layer BASE of object WEAPON01.LWO, this layer is replaced with
complete contents of that scene (including all its objects and lights,
moprphings, all envelopes).
Replacement Scenes allow you to easily build scenes which are very
complex at realtime but still they are very simple at design time. Note
that it is possible to use WEAPON01.LWO inside WEAPON01!BASE.LWS in
which case layer BASE of object will not be replaced another time in
the scene.
Scenes
For every scene, NODE defines its starting and ending time. These times
are calculated from FPS (Frames Per Second) of scene and first and last
keyframe of preview where you desing your scene.
Here is list for other supported features:
- support for objects, bones, lights and cameras
- envelopes on position, rotation and scale of all elements
- PivotPosition for all elements
- parenting and targeting of all elements (there are some rare
situations when targeting doesn't work well)
- backdrop color (which is not used to fill back of the scene if it
is $FF00FF)
- fog with envelope on fog min and max distance
- supported envelope IncomingCurve options: Linear, Stepped, TCB
- supported all Pre- and Post- behaviors for envelopes
- supported modifiers on any envelope in the scene: Oscillator
Objects
NODE works with objects in the same way Lightwave does - through layers
of models. It reads data from Morph Mixer and deforms object in
realtime. Note that NODE combines these transformations with those
defined by bones of objects which gives you many combinations to
animate objects.
NODE also supports normal null objects, and some special null objects.
Sound and music null objects:
If null object name is SOUND:SOME-SOUND.XXX or MUSIC:SOME-SOUND.XXX
than SOME-SOUND.XXX is played for each instance of this scene. Note
that you are able to control starting time of playback of this sound;
the rule is simple: sound is started playing at the first keyframe of
scale for Z. The difference betweend usage of SOUND: and MUSIC: is
that when you use SOUND:, SOME-SOUND.XXX is always preloaded into memory
before playback.
Lights
Here is list of features regarding lights:
- ambient color and intensity
- multiple ambient, distant, point and spot lights with envelopes on
all of their attributes; area and linear lights are interpreted as
ambient lights
- AffectDiffuse and AffectSpecular properties of lights
Cameras
NODE supports multiple camera with easy camera switching and envelope
on zoom for each camera.
One more special feature is ability to make some objects invisible from
specific camera. You achieve this by putting ~X in both Comment of
surface of that object, and also you put ~X in the name of camera (X is
digit 0-9). After that, polygons of that surface will not be visible
from this camera.
Bones
List of supported features regarding bones:
- skeletal animations using bones
- bones without weight maps are supported
- for each bone, BoneActive checkbox is supported
- for each objects, option UseBonesFrom is also supported
Scene Instancing
You can think of Lightwave scenes as templates for real scenes which
are rendered in NODE. This is done to be able to play one scene at
different times in the same application frame. You can think of this
much like instancing of objects in the scene - each of these instances
is animated in its own way.
NODE supports Alternative Scenes. These are scenes which can be used
instead of their base scene when starting playing some scene. Imagine
that you want to animate some explosion - you just need to create new
scene. Now, if you want to have different ways in which something
explodes, you just create Alternative Scenes, and NODE will randomly
choose one of them when explosion happens. This is very useful in
game development.
If your base scene is EXPLOSION.LWS, than alternative scenes have form of
EXPLOSION#*.LWS: EXPLOSION#2.LWS, EXPLOSION#3.LWS, EXPLOSION#XXX.LWS.
NORD usage
NORD plays MND, MNP and LWS files.
If you specify XXX.MND file as program parameter, XXX is used for name of
main demo. If you specify XXX.MNP file as program parameter, XXX is used
for name of main demo. In both cases, XXX.MNP is first loaded (to allow
access to files is package), and then XXX.MND.
If parameter of program is XXX.LWS, NORD is used as Lightwave scene
viewer with all special features of NODE.
If there is no program parameter, and XXX.EXE is name of program, then
XXX is used for name of the main demo and NORD searches for XXX.MNP and
XXX.MND.
At the beginning of program execution, NORD loads STADNARD.MNP (if it
exists; it is searched for in directory where is executable). After that
it loads all flies neccessary for animation/scene which is played. Also,
configuration file XXX.CONFIG is loaded to configure NODE (see next
section for details).
While demo is being played, you can enter debug mode by pressing
ScrollLock key (the same key is used to go back to normal playback mode).
In debug mode, pressing H gives simple on-screen help:
- cursor keys (in combinations with Ctrl and Shift) allow easy rewind
- Pause/Space/P = pause/resume playback
- Shift + 0..9 = bookmark position
- 0..9 = jump to bookmarked position
- H = show/hide help
- T = show/hide timeline, time, FPS
- I = show/hide some information about hardware
- R = show/hide profiler information
- D = show/hide objects' distances
- N = show/hide objects' names
- F = enable/disable fog in all scenes
- W = turn on/off wireframe for all objects
- L = enable/disable lighting of all objects
- S = enable/disable speculars
Time can be rewing by holding down right mouse button and moving mouse
cursor left/right anywhere inside the playback window.
Demo Version
There is also demo version of NORD which will be available for free
download. This version has following limitations:
- max 2 animations total
- max 2 scenes total
- max 10 object models total
- max 20 images total
- max 3 layers per object model
- max 2000 triangles per object layer
- max 2 cameras per scene
- max 2 lights per scene
- max 10 object-instances per scene
- max 20 bones per scene
- no support for packages
- no support for ReplacementScenes and AlternativeScenes
- no support for NestedProjects
- no support for CollisionInfo
Except these, there are no other restrictions. All other features are
present in Demo Version of NORD.
This version will be made available for free download in September, 2006.
Vocabulary
NODE
NODE is general purpose realtime multimedia engine intended to be used
in development of games, demos, presentations... Its development
started back in 2002. as demo engine. Its first successful usage was on
Scene Strike 6 held in Belgrade where mindnever group won the first
place with its demo reborn. It has been developed since than, first as
a demo-engine, later it evolved into game-engine and nowadays its
development is moving toward general purpose multimedia engine.
NORD (NOde Realizator for Demos)
NORD is a player for NODE animation files. It features on-screen
timeline which can be used to quickly "rewind" demo playback. NORD
comes in two versions: full-featured and demo version. Demo version is
free for download and any kind of non-commercial use.
See section NORD Usage for more details.
NOMAD (NOde Modulator And Demodulator)
NOMAD is successor of NORD. It will be complete interactive environment
for developmentof high quality multimedia products (demos, games,
presentations). It will be based on WYSIWYG principle. Its development
is in the beginning.
MND (Mindnever Node Demo)
MND's are animation scripts for NODE. Complete command reference for
MND's can be found in mnd.txt.
MNP (Mindnever Node Package)
Mindnever Node Packages are collections of any kind of files, which can
be access when this package is loaded into program which uses NODE. All
resources (images, sounds, animations...) can be stored and accessed
from MNP.
See section Resource files - Package files (MNPs) for more information.
Contact
alexione/mindnever - alexione@mindnever.org
- author of NODE and all tools based on NODE
- complete code development and programming of NODE
- development of NORD
- documentation writing
If you have any questions about NODE feel free to contact me.
Other members of mindnever who give invaluable help in development of
NODE:
greent/mindnever - zli.greent@gmail.com
- beta testing of NODE
- modelling and animation for NODE
- keeps online documentation up-to-date
Thanks go to greent for official NODE logo, all his bug reports and all
his efforts in this project.
rudy/mindnever - rudy@mindnever.org
- testing of NODE
- design, modelling and animation for NODE
Thanks go to rudy for all his efforts and his design-lead in projects
based on NODE.
copyright © 2005,2006 mindnever.org /// node.mindnever.org /// www.mindnever.org