[E] Custom positioning, scrolling, and animation

Post about what you like and dislike on AAO and suggest new features and improvements.

Moderator: EN - Forum Moderators

Post Reply
User avatar
GanonZD
Posts: 526
Joined: Sun Aug 09, 2009 5:59 pm
Gender: Male
Spoken languages: English, Danish, German, a tiny bit French

[E] Custom positioning, scrolling, and animation

Post by GanonZD »

No doubt about it: The smooth scrolling in V6 is a MAJOR improvement on AAO and has great potentials, and with a few extensions it allows everything from courtroom scrolling to animations, which will be very useful when making prologues. I've previously been spamming this forum with presenting suggestions about how to make such extensions, and I figured that I might as well collect these in a threat and make a more concrete suggestion. :-)

I do realize that nothing of this will be implemented into V6, if at all. However, I do hope that it Unas may add it sometimes in the future. ;-)

What I think the V6 smooth scrolling system is lacking is:
  • There's no vertical scrolling; in fact the player doesn't allow positioning of objects (e.g. characters) with vertical coordinates at all.
  • I don't know, but nothing in the preview seems to indicate that it's possible to smoothly move objects (e.g. characters) around; a feature that is used a lot in AAI.
  • Currently it's not possible to control the speed of smooth scrollings; and it does not appear to be possible to make different objects move with different speeds at the same time.
  • It's only possible to position objects at some fixed x values (like left, left for AAI left-aligned duo etc.); you can't input other x/y coordinates, and it's not possible to position something outside the screen in order to move it in or out.
  • It's not possible to have two objects with the same x position; once you put something into the "center", the "center" option disappears in the position menu of the other characters; smart in the courtroom, less smart in prologue animations where objects may be something other than characters.
My suggestion is designed so that it merely extends the current system, so everything currently supported should be easily carried on into this system. More concretely, what I suggest is that the position menu gets one more option: custom position. When clicking/holding the mouse over this option, a menu looking approximately like this should show up:

Image

What is currently open is the menu that determines where the "camera view" is positioned; the basic concept is that both objects and camera have similar menus. The backgrounds are used as coordinate references and thus can't be moved, unlike everything else. Now camera and objects can be positioned vertically and horizontally relative to the background (I know the weird I-don't-know-what-they-are-called things that control the coordinate positions don't look like being at (0,0), but use your imagination :-) ). Furthermore, both camera and objects have the transition time option, which is what controls the smooth scrolling. Please note that the smooth scrolling checkbox, which used to be above the hide previously shown characters checkbox, has been removed. Instead of this, the individual object and the camera view have their own smooth scrolling options controlled through this transition time option which, intuitively, indicates the amount of seconds the transition is going to take, assuming that the object was also present in the last frame in a different position. The standard transition time is 0, i.e. no smooth transition at all. ;-)

A small, but important detail is that, unless hide previously shown characters is checked, any movement that is unfinished when the frame is changed should be carried on into the next frame. What's the purpose of that? It's a nice option for prologue animations in that it makes it possible to start a new animation before the last one is finished. ;-)

It's important that the position coordinates can also be negative or greater than the size of the background; thereby objects can move in or out of the picture.

Hope that this all makes sense? :-)

EDIT: Yeah, okay, I have noticed that the background in my menu is not the same as the one behind it (how could I overlook that?), so I seriously depend on your imagination. :-)
Last edited by GanonZD on Sun Aug 19, 2012 7:52 pm, edited 1 time in total.
Ganon er kommt zum Dorf.
User avatar
DWaM
Posts: 1763
Joined: Fri Jun 01, 2012 9:23 am
Gender: Male
Spoken languages: English
Location: The Kingdom of Ellipses

Re: A different approach to position, scrolling, and animati

Post by DWaM »

just had to pop in and point this out
GanonZD wrote:in a threat and make a more concrete suggestion.
you evil man.

*Poof* (Seeing as how this threat isn't directed at meeeeee)
User avatar
GanonZD
Posts: 526
Joined: Sun Aug 09, 2009 5:59 pm
Gender: Male
Spoken languages: English, Danish, German, a tiny bit French

Re: A different approach to position, scrolling, and animati

Post by GanonZD »

DWaM wrote:
GanonZD wrote:in a threat and make a more concrete suggestion.
you evil man.
Damnit, now my REAL intentions have been exposed. :tigre:

I'll keep the typo just to honour you. :-)
Ganon er kommt zum Dorf.
User avatar
Unas
Admin / Site programmer
Posts: 8850
Joined: Tue Jul 10, 2007 4:43 pm
Gender: Male
Spoken languages: Français, English, Español
Contact:

Re: A different approach to position, scrolling, and animati

Post by Unas »

Thanks for taking the time to expose your ideas ;-)

Let me answer this - though it'll require some technical explanations about the way AAOv6 works.
It may seem quite abstract when reading it, but hopefully it shouldn't be too hard to understand once the public beta comes out and you can see how it "just works" for most common use cases :-)

First, an important distinction : you consider characters to be objects, AAOv6 does not.
Objects and characters are handled differently.

Objects are parts of a place.

A place contains a background image, a list of foreground objects (that will appear before the characters, like benches, or the detention center glass) and a list of background objects (that will appear between the characters and the background image - like any evidence you'd want to put in the background).
Objects are positioned using x, y coordinates.
Currently, objects cannot move during the game, but this might change in the future.
Objects can be visible or not, and it will be possible to alter their visibility through actions.

Note that a place can be used in a frame, but can also be used in actions (the pointing action can now take a place, etc)
Each time a place is displayed, its objects are displayed or not depending on their current visibility.


Characters are attributes of a frame.

Each frame contains a list of characters of which to alter the state.
  • If the frame contains a character that is not already displayed on screen, then it will appear (in the future, you'll be able to choose a transition effect for appearing, between fading in or sliding in, etc.)
  • If the frame contains a character that is already displayed, but at a different position, it will move it to this new position. This transition should always be smooth - though I might add a setting for "smooth or not", just like I did for screen movements.
  • If the frame contains a character that's already displayed at the same position, then just update the sprite
Also, there can only be one character at each position, so that :
  • If a character A moves into a position that was occupied by character B, and character B hasn't got any movement defined, B leaves the scene (here again, you'll be able to set the transition effect to use)
  • If "Hide previously shown characters" is ticked for the frame, all characters that are not defined in this frame will leave the scene (with their respective transition effect).

As for character positions, they are defined by an alignment and a shift value.
For exemple, the usual position of the defense attorney is left aligned with no shift. When displaying two characters side by side like in AAI, they'd have the same alignment but different shifts (the default values for AAI being already built into the editor).
The idea behind this is to allow automating the movements of the screen most of the time : left in default mode, which should be good for common use cases, it'll align on the talking character which is what the AAI engine usually does.


Now, about what you point out :
GanonZD wrote:There's no vertical scrolling; in fact the player doesn't allow positioning of objects (e.g. characters) with vertical coordinates at all.
Currently, character positions are defined by an horizontal alignment and shift, so no vertical positioning indeed.
I have designed the engine in order to be able to implement vertical positioning later, though, so in that case a position definition would require a vertical align and shift as well. That is rather likely to happen in the future ;-)
GanonZD wrote:I don't know, but nothing in the preview seems to indicate that it's possible to smoothly move objects (e.g. characters) around; a feature that is used a lot in AAI.
As said, moving objects is not yet possible; however, smoothly moving characters is definitely going to be supported, since it's the default behaviour.
GanonZD wrote:Currently it's not possible to control the speed of smooth scrollings; and it does not appear to be possible to make different objects move with different speeds at the same time.
Nope, no speed control is planned here.
It may happen when I implement the ability to move objects (and it will definitely happen when I implement AAI style investigations), but for character movements it doesn't seem necessary to me.
Also, the engine is perfectly capable of moving several characters at the same time right now, though of course you can't define their speed so it's all the same ;-)
GanonZD wrote:It's only possible to position objects at some fixed x values (like left, left for AAI left-aligned duo etc.); you can't input other x/y coordinates, and it's not possible to position something outside the screen in order to move it in or out.
It's already possible for objects, not yet for characters.
I'll add the ability to define custom positions for characters (always by an align/shift pair) at a later date.


Here's what I can say about V6.
I'll have a look at your proposal in more details later though ;-)
ImageImageImage
If knowledge can create problems, it is not through ignorance that we can solve them.
Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. ( Isaac Asimov )
Post Reply