Need help with sizing on background image

Started by Severian, Mon 01/09/2014 15:17:02

Previous topic - Next topic

Severian

Hi, I have a friend working on my backgrounds for me - and I think there is something wrong with the sizing or perspective of things in this image but I am having trouble articulating it as I am no artist myself.

I'm not sure if it's that the displays in the middle of the room are too tall - or if it is that the desk over on the left is too low or far back. I don't have my animations for my game yet, so I am just playing around with scaling in AGS with the default Girl - but for the character to stand appropriately sized at the desk (especially the far end) it feels that the character in relation to everything else there (especially against the back wall) doesn't really work out.



Does anyone with a more experienced artistic eye, and experience implementing these things into AGS, see a problem here? Or am I just looking at it wrong?

Monsieur OUXX

There si nothing wrong with the perspective, but you fell in the usual trap that beginner scene composers fall into :
Your perspective is a basic perspective that uses one single vanishing point. That's perfect for regular art, but that can become tricky in a 2D video game : Because it means that if the character walks at the bottom of the screen, he will be much, much closer to the camera than he is when he's up against the back wall.
Therefore, when the character is at the bottom of the image, he should be scaled almost 4x compared to the upper part of the image. Try it yourself: go to the scaling properties of the walk area, and make it scale from 200% to 50%. you'll see that the character has the right size compared to the furniture, no matter where he stands.

The problem is that he will look ugly! Because an upscaled character looks ugly.

There are two workarounds/hacks:
1) forbid the player to walk too far down at the bottom of the screen. Allow him to walk only in a small horizontal band of floor.  Hide the bottom of the scene (and the character's feet) with some foreground objects that also act as walkbehinds.
OR
2) redraw your scene to use a perspective like a,b or c on this picture. (At the moment your perspective is more like d or e) . This way the character always has the same size, wherever he walks.
 

buffy

What about non-workarounds? You mentioned single vanishing points, does adding two automatically fix it or is the positioning wildly important?

Ghost

Two vanishing points won't help *as a rule* but can be part of the solution. The thing is that, as Monsiour OUXX said, you're dealing with a 2D image in which a character moves in a 3D way. But fortunately a long history of games is already working for you: Players are usually aware that adventure games tend to cheat a lot. For example, virtually every classic adventure game displays its characters as "front views" when in reality they should be tilted a little. And scaling never looks totally convincing anyway.
But the larger and more complex your environment, the more players will notice that there is no true 3D.

Some "rules of thumb":
- a very low horizon line tends to create scenes that look "flat" but make it easy to have a character move around without ever looking too weird
- in a scene with much depth, restrict the area your character can actually walk around in.
- try to design the "main area" of a location, where all the cool stuff happens, to have no scaling at all.

I need to add that I am no great fan of perfectly constructed perspective anyways; a little creative cheating can make a scene look actually better than the "realistic" one. It's a game and people are aware they are playing a game. That may sound lazy but... how often do you feel better after eating a health kit? (laugh)

AprilSkies

#4
In cases like this, in my games I have to build a non-uniform scaling environment.

I do this in two ways, a more basic one that consists in drawing different walkable areas each one scaling of a certain amount. The important thing is that those areas DON'T have the same height. See this example:



The other way is to set the scaling as "manual" and build a function called in rep.execute Always, that scales the characters depending on their Y coordinate.

As you can see in the image, the scaling amount has not to be uniform (cause it will seems weird), but needs to be changed depending on how far the character is from camera (problem of the central prospective).


Of course not simple as in my image. You need to set some areas and start to try till you find a combo that don't seems weird.

Or..... just change prospective, as Monsieur OUXX suggested.

www.apemarina.altervista.org

Mandle

AprilSkies: Amazing little mini-tutorial on scaling! I hope a lot of people view this. Seriously mate, if you ever have the time you should write some tutorials for those of us without your skillz!

Snarky

#6
I've been looking at that diagram, AprilSkies, and I can't shake the feeling that it's... wrong. Assuming a flat floor in one-point perspective, the scaling should be uniform for the whole walkable area.

This is how I figure it: Imagine that the walkable area goes all the way to the horizon, so the scaling is from 100% at the bottom to 0% at the top. Let's say, for the sake of simplicity, that it's 100 pixels in height. Now, imagine that our "camera angle" is from the head-height of the character. Then, the top of the character's head will line up with the horizon, at any distance (and the sprite-height at 100% is therefore also 100 pixels). In other words, as it recedes into the distance (gets smaller), its sprite height after scaling should equal the vertical distance from feet to the horizon. We see clearly that the scaling should be uniform: move up ten pixels, scaling factor goes down 10%, e.g. when the feet are at y=horizon + 50, the scaling factor must be 50%, when feet are at y=horizon + 40, scaling factor must be 40%.

And we can generalize this argument to other cases as well. If the top of the walkable area is NOT the horizon (scale=0%), but rather at scale=10% or whatever, it doesn't really matter, because it's just as if the rest of it is unused: the intermediate values are going to be the same. And if the height of the character is not so that the head aligns with the horizon, you can either imagine a taller sprite with empty space at the top (if the head is below the horizon), or repeat the same argument for the part of the character sticking up above the horizon.

So as far as I can see, in no case should you need to scale non-uniformly when you're using linear perspective. In fact, that's essentially what linear perspective MEANS.

Edit: Here's an image that shows correct scaling, IMO.


SMF spam blocked by CleanTalk