For whatever its worth, the 'massive structure in lieu of millions of noodles;' 
approach is one I've taken too as well, but not quite to your scale ;)

Seems rather silly but also looks like the best option of all of them. 

On Dec 8, 2010, at 7:55 AM, Adrian Ward wrote:

> 
> I'm not sure QC could ever fully satisfy strict MVC design requirements due 
> to the inherent nature of it (execution is driven by consumer/rendering 
> patches, for a start), so I think the Controller/Viewer blur is a common 
> difficulty that may be inevitable.
> 
> That said, I'm convinced MVC can certainly help structure big Quartz Composer 
> projects. I don't consider there to be one perfect methodology, and we've 
> spent years experimenting with different approaches.
> 
> Currently in our projects we tend to have lots of discrete 'scenes' that are 
> either shown or not shown. We tend to encapsulate those as separate QTZ files 
> (which helps the team to work on them concurrently) and then have a top-level 
> QTZ with an all-in-one controller JS patch that is responsible for logic and 
> storyboard flow, triggering those scenes, etc. Data is loaded and processed 
> by a separate section (again, usually in an external QTZ) and currently I'm 
> favouring bundling all data, settings and values in a single Structure that 
> gets passed along to whatever needs it, like a poor-man's global object. 
> 
> There are downsides to this of course. For example, our recent installation 
> at Imperial War Museum in London (did I mention we have a big QC powered 
> exhibit in the new Lord Ashcroft Gallery there?) passes about 4000-6000 
> values and objects (even images) in a single nested Structure object. Kind of 
> mad but it works efficiently and massively reduced our noodle usage. So yes, 
> it got difficult keeping track of what was actually in that Structure, 
> especially as it's a royal pain to inspect them at runtime, but it made it 
> very easy to separate model, view and controller into individual parts.
> 
> Best,
> 
> 
> A.
> 
> 
> 
> 
> On 8 Dec 2010, at 12:20, Alastair Leith wrote:
> 
>> "Also consider that this technique could help encourage a MVC paradigm 
>> within Quartz Composer."
>> 
>> It's apt that you mention that^ because MVC is exactly the reason I made 
>> this JS patch suggestion. Currently I'm trying to model a prototype a MVC 
>> set-up in a QC comp or even perhaps 2 or 3 comps (one for each part). (Happy 
>> to share it when I get somewhere I'm modelling that Simon musical button 
>> game for a case study). In QC it's a special challenge to do this as it's a 
>> functional environment with no resources specifically devoted to MVC like 
>> Cocoa has. 
>> 
>> Say one has 3 JavaScript patches for each of Model, Controller and Viewer, 
>> does one pass messages between the JS patches with codified constants (eg: 
>> var k_play_an_A_ON = new Number();  k_play_an_A_ON  =1; 
>> result.Message_to_Viewer = k_play_A_ON; ) to get parsed whenever the other 
>> Module is ready to do so. Or could one have live 'State' booleans that 
>> determine if, say, the Viewer module should be accepting Inputs and live 
>> Structures that are immediately interpreted to, say, display particular 
>> Output states.
>> 
>> I've been reading a fantastic book of interviews with well known programmers 
>> (Coders at Work) and one take-away I got was not to over generalise my code, 
>> only bite off what I need to do — don't over-engineer for expansion/more 
>> function than required; leave that for later. I'd like to have a go at MCV 
>> inside QC because I have made an Application in QC that drives other .qtz 
>> compositions. I'll probably use Quartz Builder to distribute the App, at 
>> this stage.
>> 
>> My Javascript patch for parsing the 28+ on screen button inputs is becoming 
>> a bit unwieldy in terms of adding functionality without breaking existing 
>> functionality — it's Viewer and Controller all in one, and then I have 
>> another JS patch (hooked to tons of structure patch  noodling) for the Model 
>> which is not talking to any other JS patches yet just responding to manual 
>> inputs. 
>> 
>> The idea of separating into MVC seemed like a good organising principle as 
>> much as a code beautifying / rationalising one. Communication between the 
>> MVC parts / modules is what I am probing / flailing around with at present. 
>> Any advice welcome.
>> 
>> Best to all
>> Alastair
>> Useful Design
>> 
>> 
>> 
>> 
>> On 08/12/2010, at 9:51 PM, Adrian Ward wrote:
>> 
>>> 
>>> Hear hear.
>>> 
>>> rdar://8743194
>>> http://openradar.appspot.com/radar?id=953401
>>> 
>>> 
>>> 
>>> On 8 Dec 2010, at 06:14, Alastair Leith wrote:
>>> 
>>>> Would it be possible to implement composition/application wide globals for 
>>>> the Javascript patches in a future QC revision? 
>>>> 
>>>> I know graph evaluation and free global variables could create a headache 
>>>> if used unwisely, but it would be kind of neat at times to have a 
>>>> composition-wide layer to read/write get/set to. Couldn't it just operate 
>>>> on an ad-hoc basis read to whenever (whatever JS patch is being evaluated) 
>>>> write whenever (same).
>>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Quartzcomposer-dev mailing list      (Quartzcomposer-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/quartzcomposer-dev/doktorp%40mac.com
> 
> This email sent to dokt...@mac.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      (Quartzcomposer-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to