BuckoSoft Animation Controller - Meta Server

Overview

This document describes the BuckoSoft, Inc. Animation Controller. The BSAC is a set of programs used to generate frames for POV-Ray animations across several different networked computers.

BSAC does not generate frames or animations; it just manages and collects frames.

BSAC does not handle partial frame renders.

There are 2 main components to BSAC, the server and the client. In typical operation, the "owner" of the animation will run the client as the director of the animation and make requests to each server asking it to build frames.

Both client and server run on Windows and Linux (other Unix ports to be available later)
 
 

+- BuckoSoft Animation Controller
   +- Definitions
   |  +- World
   |  +- Users
   +- Tech Overview
   |  +- Authentication
   |  +- Files
   |  +- BuckoRoot
   +- Operation
   |  +- Client
   |  +- Server
   |  +- Status Checking
   |  +- Determine Frame To Render
   +- Protocol

Definitions

Server

Generates frames of animation based on the requests of the client.

Client

Maintains a list of servers and requests frames be generated by each.

Project

A name that is unique to the client that defines the base name of the animation.

Tech Overview

Authentication

Each client/project must have a unique identifier to identify itself to the server.

Each file that is read during a POV-Ray render must be authenticated between the client and server as being the same.

This is accomplished with a date stamp and a checksum. Note that Windows95 uses 2-second resolution on date stamps and BSAC must accommodate that.

Each client/server transaction must authenticate itself to avoid stray frames from undesirable sources entering the stream.

Server Security

Connections are accepted only between a previously established client.

Network Protocols

Each client/server will use 1 TCP port.

Communications port between client/server.

HTTP port used to monitor status of a client or a server and possibly allow configuration.

There are default values for each TCP port, but they must be configurable to allow for firewalls.  The defaults are
 

Client 2270
Server 2271
Meta Server 2269

Files

Client System Files

Client Project Files and Directories

Root/

All projects are anchored from a per-project root directory.  This directory can be located anywhere on the client computer and may be called anything.  The term Root/ is just to denote the existence of the project root.

Root/Frames/

This directory contains the frames that are returned from the servers.

Root/.bsac

This file contains a list of source files and directories to be included and excluded from this animation render (and the transfer of these files)
The file may contain any number of include exclude directives.  During parsing, the includes and excludes can appear in any order, but during file list generation, the excludes are all checked before the includes.  Wildcards are supported
Each subdirectory in the project may contain a .bsac file to further refine, or cascade the list of included and excluded files.
The default initial internal .bsac file looks like this.
 
Include
*.pov
*.inc
Exclude
CVS
Frames
This tells the file searching algorythm that, starting at the Project Root, include all *.pov and *.inc files.  Do not include anything called CVS or Frames; in this case, that would be CVS workspace directory and the generated frames subdirectory.

Note that if you have any imagemap files, then you will have to include them.  Be careful about specing graphics/imagemap files, you don't want to transfer any test renders you've generated!  So including *.tga is a bad idea :)

The .bsac file also supports a conditional, it is possible to specify files to be included only in certain frames.  Your file may look like this:

Include
myHeightField.gif
if %f > 100
critters
This tells the filelist generator that if the frame number is greater than 100, then include the subdirectory critters.

Server System File

Windows (server_installation_dir)\bsacserv.ini
Linux $HOME/.bsacserv.rc

Per Project Root

The client and server each maintain a Project Root. All files to be rendered must be beneath the project root. NOTE that this includes POV-Ray system include files as well. It is imperative that the client/server be operating from the same set of files.

Subdirectories are supported.

Frame Generation

There are 2 styles of frame generation available.

Striped When a server finishes a frame, the next available frame is given to it to build. Less efficient than the block method, but better for quickly gathering frames for making test animations.

Block A server is given a range of frames to complete. The server will send each frame to the client on completion

Users

Operation

See the Not Yet Written User's Guide for details about running bsac.

Client

Initial Setup

Server Definition

Name

Project Definition

Striped/Block

Servers in Project

Server Definition

Defines how the client views each server
 
 

Server

Initial Setup

Name
Port
Delete rendered frame after transmission?
ServerRoot Directory
 

Status Checking

Determine Frame To Render

The distribution formula used to calculate which frame to render next is as follows:

Protocol

 

Meta/Client Interactions:

Command
Meta
 
Client
Hello
 
?-
Hi.
  Hi.
Client tells Meta that he is online. Meta will then query the client about his projects.
   
Hello Hi ->
Hi.
[ I want a StatCheck done please. ]
StatCheck
How you doing?
->
 
      I have these projects that i care about
ProjectCheck
Tell me about project p. ->  
      Project p has x frames of which y need rendering.  There are n files and m megabytes of source.  Project wants v0 or v1 versions of POV-Ray.  Project was created on d date and the last render started on d1.  Project p is [in]active.
FrameCheck
Tell me about the frames in project p [as of date] ->  
      Here is a list of frames with their renderstatus, inc. start time, end time, server, status.
BrokerRender
 Server s is expecting a render request from Client c for project p of n frames starting at frame f.
     Ok!
 
      Ok
Starts rendering
RenderDone
  ?- I have finished project p frame f with status pass/fail.
  OK.
Client will then send another RenderReq before asking for the frame output file. This allows rendering to recommence before performing the FetchFrame
   
FetchFrame
Please give me this frame's output. ->  
      Here is the file.
DeleteFrame
Delete this frame's output. ->  
      Ok.
Deletes file.
DeleteProject
Delete all of this project's files. ->