Intro: understanding film
=========================
You know what a film is. Yes, exactly this is it.
You cannot create it, only load it from a file.
You start it and can only watch it and hope, one day it is over.
Not exactly, there is a possibility to stop or pause it with a subfunction
you pass as a parameter when starting the film.
Files of a film
A film consists of
- one film-file
- some picture-files
The film-file defines when which picture-files are to be loaded.
The picture-file draws pictures to your window and optionally starts a sound.
Additionally in both film-file and picture-file you can declare a loop.
And you can pass parameters from the film-file to a picture-file.
With these possibilities you can reduce the number of your picture-files,
if you are clever.
Format of a film-file
A film-file has:
- "[FILM " <milliseconds for each loop> "]"
- one call to a picture-file every line, optionally with a loop
<number of repeats> <picture-file> [<parameter 1> ... [<parameter 9>]]
comments begin with "#"
The "milliseconds for each loop" is a number, which is passed as an argument
to vg_wait_time() defining the film speed,
this means how many milliseconds a picture-file is shown.
The "number of repeats" is a number, how often to call this picture-file, and
in the picture-file you get this repeat-number with "$0".
The picture-file is relative not to your game-directory as all other filenames,
but to the location of your film-file.
The optional parameters 1 to 9 are numbers or strings, you get them in the
picture-file with "$1" to "$9".
The references $0 and $1 to $9 can be used in a formula, if they are numbers,
e.g. 320 - $1 * 2.
Format of a picture-file
This is the file, which draws one picture of the film (consisting of one
or bitmaps) to your window.
Its format:
- once you can (but need not) define:
+ # base coordinates at (x,y) for all bitmap-/sprite-output
# default: base(0,0)
base(<x>,<y>)
+ # how many film-loops this picture-file remains
# default: loop(1)
loop(<number of loops>)
+ # load a different colormap
# default: use current colormap
colormap(<colormap-file>)
+ # set brightness (-62 to 63)
# default: use current brightness
brightness(<number>)
+ # at first clear the window with color-index
# default: don't clear window
clear(<color-index>)
- more than once you can (but need not) define:
+ # show bitmap at (x,y), full or transparent output,
# "bitmap-file" is relative to picture-file, not to your game-directory
bitmap(<x>,<y>,<"full"|"trans">) <bitmap-file>
+ # show sprite at (x,y), full or transparent output,
# with vg_sprite_getcurrent() or vg_sprite_getnext()
# "sprite-file" is relative to picture-file, not to your game-directory
sprite(<x>,<y>,<"full"|"trans">,<"current"|"next">) <sprite-file>
+ # start sound
# play it once or in an endless loop (until stop or end of film)
# "sound-file" is relative to picture-file, not to your game-directory
soundstart(<"once"|"loop">,<volumepercent 0-200>) <sound-file>
+ # stop sound
# "sound-file" is relative to picture-file, not to your game-directory
soundstop() <sound-file>
Example
Your game's name is "mygame".
Your film-filename is "film1.film" and is located under "films/".
All related bitmaps for this film are under "films/bitmaps/".
All related sprites for this film are under "films/sprites/".
All related sounds for this film are under "films/sounds/"
You see a helicopter flying from right to left.
The speed of the film is 40 milliseconds for each loop.
Your path:
mygame/
mygame/films/film1.film
mygame/films/film1.pic1
mygame/films/film1.pic2
mygame/films/sprites/propellor.sprite
mygame/films/bitmaps/propellor.vga
mygame/films/bitmaps/helicopter.vga
mygame/films/sounds/motor.wav
Your propellor.sprite:
(refer to intro-sprite.html)
[SPRITE]
../bitmaps/propellor.vga LOOP=1
../bitmaps/propellor.vga LOOP=1 ROTATE=45
../bitmaps/propellor.vga LOOP=1 ROTATE=90
../bitmaps/propellor.vga LOOP=1 ROTATE=135
Your film1.film:
[FILM 40]
1 film1.pic1 loop # start looping sound
320 film1.pic2 # draw helicopter, repeating 320 times, using $0 in film.pic2
Your film1.pic1:
# start motor-sound, using parameter 1 ("once" or "loop")
soundstart($1,100) sounds/motor.wav
Your film1.pic2:
# clear window with color-index 0
clear(0)
# copy helicopter.vga to x-position 320-$0 (where $0 is 1 to 320)
bitmap(320-$0,100,trans) bitmaps/helicopter.vga
# copy rotating propellor onto helicopter
sprite(320-$0,100,trans,next) sprites/propellor.sprite
Play the film
With vg_film_play() you load and play the film.
FUNCTIONS
vg_film_play()
vg_film_position()
Back to Index