Exquisite Corpse

If you have a design you're proud of, share the cfdg file here. It's also a good place to ask for feedback and collaborate.

Moderators: MtnViewJohn, chris, mtnviewmark

Post Reply
User avatar
zol
Posts: 40
Joined: Sun Mar 23, 2008 4:14 pm

Exquisite Corpse

Post by zol »

Not a CFDG but a cunning plan :)


Multiple players contribute to a script without knowledge of the others' contribution through a pre-defined interface of rule names.
(Best if contributions are not published until all are received)

Player role options:
  • World. One only. Provides background colour and shapes and initial SEED colours.
  • Seed. Essentially free reign, but should consider spatial distribution and use group and SEED calls to encourage good mixing.
  • Leaf. Like Seed but with less responsibility. Good for self-contained objects.
The idea behind Leaf is partly to lower the confidence barrier to participation. It is not essential to the scheme.

One other person might be responsible for co-ordination, combination, and maybe even selection of a representative variation and image.

Overview
Each player has a unique ID and some assigned groups.
Each player may call only their own rules, allocated group rules, SEED, or shape primitives.
Each group corresponds to one rule name usable by all members of that group.
SEED is the rule that chooses from among different Seed players' root rules.

Each player's script works individually.
The combined script:
  • Ignores/excludes background and startshape for all but World.
  • Has one "rule SEED{ID{}}" for each Seed ID, but not Leaf IDs.
Group rules can only be called by group members' rules.
Group rules are the only ones in a Leaf player's script that can be called.
The World player does not have any groups.

Prototype details
(Untested. Ideas first - Specs later)

Seed and Leaf player template:

Code: Select all

//ID: Author and title

background {}
startshape ID

//--------ID--------
//PRIVATE rules
rule ID {
}
//Internal

//GROUP rules
rule A {
}
//Group internal



//Additional information.
World player guidelines:
The background should not compete too strongly with the foreground, which mainly implies low saturation and non-aggressive detailing.
Roughly, brightness+saturation <= 1, with less strict requirements on small, sparsely distributed details.
Adjacent areas should have weak contrast, particularly if large or with strong boundaries.
Initial z = -1000. This provides a publicly known default. Subsequent developments are not bound, however.
Can set any initial SEED colour (but should probably leave alpha=1).

World player template:

Code: Select all

//ID: Author and title

background {}
startshape INIT

rule INIT{
    ID{z -1000}
    SEED{}
}

//--------ID--------
rule ID{
}
//Internal



//Additional information.
Template explanation in cfdg-safe format:

Code: Select all

// Template usage.
// Please use this template to maintain consistency with others and simplify possible creation of a composite script.
// Replace "ID" (and "id") with your own player code, and "A" (and "B" etc.) with your own group code(s).
// You must have at least one and possibly more rules for "ID" and each of your groups.
// Each set of rules for the same group must have a total weighting of 1.
// Do not call or define private or group rules other than your own or INIT.
// Do not define SEED. Do not use includes. 
// All additional rules must have "id"-prefixed names and appear under "//Internal" or "//Group internal".
// "Group internal" includes all additional rules used by group rules and none that are not.
// "Internal" includes only additional rules that are not used by group rules.
// "Additional information" is for comments, not code.


End result
The appropriate sections of each player's file can be composited fairly simply into a single file suitable for posting.
But we can also use includes as follows.
ID = World player ID. P1, P2 etc. = Seed player IDs.

Code: Select all

//Collaboration info.

include "file1.cfdg" //P1: Author and title
include "file2.cfdg" //P2: Author and title
include "file3.cfdg" //P2: Author and title
   // ... one for each player


//ID: Author and title
background {}
startshape INIT

rule INIT{
    ID{z -1000}
    SEED{}
}

//--------ID--------
rule ID{
}
//Internal




//Additional information



//--------SEED--------
rule SEED{
    P1{}
}
rule SEED{
    P2{}
}
rule SEED{
    P3{}
}   // ... one for each player
The World player's entire script appears between the includes and SEED definitions, just as other players' entire scripts are kept intact.

User avatar
xgouchet
Posts: 8
Joined: Tue May 27, 2008 7:05 am
Location: France
Contact:

Post by xgouchet »

Well THAT's a cunning plan. So cunning you could put a tail on it and call it a weasel...

Anyway this is a brilliant idea, quite similar to what we're trying to do in a french association called the "Algorists". we're using processing to build a big tool box, each member of the association creating a brush, a filter or a something that generates images. Nothing done yet but we're on our way.

Anyway, it would be interesting to do something like this here! Everyone who want to get involved say so !

Count me in :!: :D
Life would be easier if they gave me the source code.

Post Reply