I think that a best way of describing a sequence would be to
describe "key stages" (like key frames) wherein each object and
its position is described. Transitions would be used optionally
only when animation is needed between 2 stages.
For animating objects (or I would say "actor" like in 3D
frameworks) within a stage, I think we should use "actions"
directly attached to each actor. Actions could be "rotate" or
"scale" or
"move", etc. It would be more natural than a list of transitions
described externally of each actors...
I've been doing some experiments not using yet AOSL but my own
object model, and I've come to something like that:
<?xml
version="1.0" encoding="ASCII"?>
<sequence:Sequence xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sequence="http://sequence/1.0"
title="SequenceExample">
<resources
path="D:\Work\projects\AOSL\assets\girl.png"/>
<resources
path="D:\Work\projects\AOSL\assets\guy.png"/>
<stages width="800" height="600" name="GuyAndGirl">
<actors xsi:type="sequence:SeqImage" x="31" y="214"
width="300" height="300" source="//@resources.0">
<actions xsi:type="sequence:MoveTo" startAt="1.0"
x="10.0" y="10.0" duration="2.0"/>
</actors>
<actors xsi:type="sequence:SeqImage" x="475" y="208"
width="300" height="300" source="//@resources.1">
<actions xsi:type="sequence:MoveTo" startAt="2.0"
x="12.0" y="15.0" duration="3.0"/>
</actors>
</stages>
<stages width="800" height="600" name="GuyAndGirl2">
<actors xsi:type="sequence:SeqImage" x="99" y="114"
width="300" height="300" source="//@resources.0">
<actions xsi:type="sequence:MoveTo" startAt="2.0"
x="3.0" y="4.0" duration="1.0"/>
<actions xsi:type="sequence:MoveTo" startAt="2.0"
x="3.0" y="4.0" duration="1.0"/>
</actors>
<actors xsi:type="sequence:SeqImage" x="449" y="142"
width="300" height="300" source="//@resources.1">
<actions xsi:type="sequence:RotateBy" startAt="8.0"
angle="20.0" duration="2.0"/>
<actions xsi:type="sequence:MoveTo" startAt="4.0"
x="5.0" y="6.0" duration="2.0"/>
<actions xsi:type="sequence:ScaleTo" startAt="4.0"
scaleX="2.0" scaleY="3.0" duration="1.0"/>
</actors>
</stages>
</sequence:Sequence>
Here you see that each stage define its set of actors and actions
directly attached to them. Each stage is then clearly define and
independent from other stages. I still have to think about the
transitions between stages.
Anyway, here is a first status about my work. Tell me what you
think.
Regards,
Ariel
On Mon, Feb 20, 2012 at 17:50, Ariel Ouziel <ariel...@gmail.com> wrote:
I've started to work on AOS Language and have then a few remarks:
- First of all, it would be really great to have a complex example of AOSL file on the wiki to really understand what's the rationale behind all the elements. I had some troubles figuring out how the various elements were used.
- If I understand correctly, a sequence is defined by its original state, a list of stages and a list of transitions describing the changes to perform between 2 stages.
In order to get the sequence state at a certain time, one will have to start from initial state and execute all the transitions to get the current state. I think this is not very convenient.
Those states won't be clearly visible in the file, thus they will be hard to read and modify.
Every time one will want to create a new stage, one would have to describe every possible transitions from other stages (like disabling this or that object, activating another, etc.). This will lead to combinatorial complexity for adding new scenes and will limit the author freedom.
I think that a best way of describing a sequence would be to describe "key stages" (like key frames) wherein each object and its position is described. Transitions would be used optionally only when animation is needed between 2 stages.
For animating objects (or I would say "actor" like in 3D frameworks) within a stage, I think we should use "actions" directly attached to each actor. Actions could be "rotate" or "scale" or
"move", etc. It would be more natural than a list of transitions described externally of each actors...
Anyway, here is a first status about my work. Tell me what you think.
Anyway, there is no way one can jump from A to E without having done the choice.
Aslo, I'm not sure what "computation intensivity" is required here, it seems simple enough but not simplist to me. Can you elaborate?
To be more clear : the player don't need to "display" all the stages it goes through.
For example, listing all the object tree (that cannot change) allows the interpreter to prepare all the instances upfront, or the part that is used first if the memory is limited.
2012/2/20 Klaim - Joël Lamotte <mjk...@gmail.com>
To be more clear : the player don't need to "display" all the stages it goes through.Yes, I guessed so. But javascript is slow, and web people easily click away ;)
In my point of view, your definition of a sequence is similar to my definition of a stage.
Think of the stage as an "act" in a theatre play: you setup the decor, characters, and the script. During the act, characters will play the script and move around the stage. Your model is appropriate for this usage. But when the following act comes, the lights go down and usually decors and characters change.
In comics or even turbomedia, the sequence is composed of several "acts" (or "pages" or "stages" or "scenes" or whatever) where everything changes (background, sprite, music ?) and I don't think it's a good idea, nor useful to make stages dependant to each others.
Besides, your concept of "stage" is rather various states of the same stage, it makes no sense to call them "stage_1", "stage_2".. I see more that as "stage x" at "state a", at "state b", etc...
I think then that we should call your concept of a "sequence" a "stage" and your "stage" a "state" (or "frame") and embed everything in a greater "sequence" container that would contain a list of stages. Not sure if I'm clear here ^^. This "stage" concept would be as powerful as your definition of sequence is, but the sequence itself would support multiple definitions of it. It would ease the definition of sequences that look more like regular comics where each page is completely independent of the previous pages while still allowing complete power inside a single stage. We could define a special transition inside a stage that would jump to another stage.
Another question is: how do you animate objects independently ? Say I want to animate a sprite by rotating it constantly while other things happen around. How do you model that ?
Don't you think we should maintain one transition graph for each object ? The synchronization would be made on a time and event basis.
Hi, :)
On Tue, Feb 21, 2012 at 10:02, Ariel Ouziel <ariel...@gmail.com> wrote:
In my point of view, your definition of a sequence is similar to my definition of a stage.
I don't think so, I think there are some misunderstanding on the meaning of words used, but let's continue:
Think of the stage as an "act" in a theatre play: you setup the decor, characters, and the script. During the act, characters will play the script and move around the stage. Your model is appropriate for this usage. But when the following act comes, the lights go down and usually decors and characters change.
I think you're mixing two concepts that are both defining the word "stage":- the stage (the place where something occurs, like in a theatre)- one stage (a step in a process, - une "étape" en français ;) )
Here it's the second definition because it's a Stage of the Story of a Sequence.
So we are not talking about the same thing it seems.In comics or even turbomedia, the sequence is composed of several "acts" (or "pages" or "stages" or "scenes" or whatever) where everything changes (background, sprite, music ?) and I don't think it's a good idea, nor useful to make stages dependant to each others.
I think you're underestimating the problem with turbomedia. The current ones don't exploit fully the digital nature of the medium because of the limitations of Flash (that is made to be dependent on time). Flash is helpful to integrate animations but not to separate differents steps of the story in user-controlled manner.
I'm not sure what you mean by "make stages dependant to each others". It's just not possible to get a turing-complete structure without a graph allowing branches and cycles, so as I said before it's just not enough to have "static" description of differents stages/steps of the story.
It's fine if you only do linear stuff, but it's not if you don't, and most digital authors (including Turbomedia authors that first asked me to work on this) asks to be able to do more if they want.
I agree with them: they shouldn't have to know programming to allow their stories to branch.Besides, your concept of "stage" is rather various states of the same stage, it makes no sense to call them "stage_1", "stage_2".. I see more that as "stage x" at "state a", at "state b", etc...
Maybe the names are misleading : there is no limitation in the naming of stages. Most of the time, those files will be generated by tools that will certainly use UUIDs instead of such names.You give "toto", "foo" or "blurb" as ids to stages, it just don't care. Same thing for any other identifiers.
I think then that we should call your concept of a "sequence" a "stage" and your "stage" a "state" (or "frame") and embed everything in a greater "sequence" container that would contain a list of stages. Not sure if I'm clear here ^^. This "stage" concept would be as powerful as your definition of sequence is, but the sequence itself would support multiple definitions of it. It would ease the definition of sequences that look more like regular comics where each page is completely independent of the previous pages while still allowing complete power inside a single stage. We could define a special transition inside a stage that would jump to another stage.
Comics don't work like "regular comics". The fundamental of comics is the sequencial structure that just allow the author to suggest "actions" between the different stages (étapes) of the story.
Now, you "stage" is in fact the "sequence", so I don't see the problem. It's Canvas describe what are the objects or actors if you prefer, and the story say how they will "play".
Another question is: how do you animate objects independently ? Say I want to animate a sprite by rotating it constantly while other things happen around. How do you model that ?
Simple: don't use a sprite ;)
Assuming you're using animable resource, you should use "video" instead of "sprite" or use both if the resource can be used as a static image AND an time-flow based sequence."video" isn't perfect term but it gather the concepts of time-flow dependent graphic & audio object. If you have a better term, I'm open to suggestions.
Looking at properties of "video" you'll see everything (I think) needed to drive an animation at a specific stage in the story.Don't you think we should maintain one transition graph for each object ? The synchronization would be made on a time and event basis.
Why?Maybe you're mixing the sequence structure, that is made of changes of states of the different objects, and "what happen inside a stage" (aka "step in a story") like animated visuals, that are not driven by the sequence itself?Stages in the story of a sequence have to be exclusively user-driven, not time-driven, that's the essence of the comics structure. Now having animations inside a stage or as transition between two stages is totally doable with the current defniition, but maybe I've not been clear about that.. see the "effect" element, it's how you apply transitions. I didn't define any standard effects yet but will do through the next iteration.
It's helpful that you ask all that, I can see what kind of documentation is missing to help understand the design of all this project :)
Thanks for your patience,
Joël
Obviously, there was a misunderstanding about our definition of "stage", maybe we should consider using another term :) , for example "step"
I agree about the graph structure. What I'm not comfortable with is the need to "clear" the canvas (by disabling all objects one by one) in the case I want to make a whole new scene. Maybe a special "clear canvas" action/change would solve this issue. Besides, I'm not familiar with the concept of "turing completeness", could you elaborate what you mean by that in the case of sequence description language ?
I assume what you call "comics" is a "digital comics". I agree that digital comics should take complete advantage of digital medium, but I think it should not complexify the definition of regular linear comics. If I'm creating a simple linear comics, I just want to tell what's in each page, and not bother with previous states of the page...
Maybe "animation" would be clearer ?
Ok I agree, it's clearer. I see my "actions" as your "effects" now. I think we should not underestimate this part of the problem, because animation inside a stage could be complex and would add great value to the user experience.
Hehe sorry if I'm so punctilious about the terms and concepts, but I need to be comfortable with all the concepts to start working on it !!
Ariel