AuthorTopic: How to help the player judge depth and height  (Read 1707 times)

Offline Vinik

  • 0010
  • *
  • Posts: 211
  • Karma: +0/-0
    • View Profile

How to help the player judge depth and height

on: May 17, 2018, 11:04:20 pm
Hello everyone. As a starting dev, I did what starting devs do and attempted a game to broad and too demanding on the amount of assets and subsystems needed to complete it :-[. While I will never abandon it, I decided (again) to make a short game with the main fake-3d features of my "engine", but reducing tiles to 16px base instead of 24px, and swearing to keep it simpler, with no dialogs, no procedural generation mazes etc, just a succession of cool and creative levels. The main goal is still being a topdown platformer (sans the rpg parts), which, in a quick mockup should be something remotely like this:

Even if it is simpler, it needs some conceptualization to ensure good gameplay on the y and z axis, so here is what I planned:
  • Levels which are much wider than taller, approaching a classic sidescroller, no vertical scrolling needed. The y axis movement is a twist on a mostly mario-like horizontal game
  • Free platformer movement on x and z axis, but a smoothed out grid based movement on the y axis so players wont have trouble judging their landing on the axis which is shortened because of the perspective
  • Explicit ways to let the player know how high he/she is, and distingush when objects are touching the ground or hovering in air
  • Making the maximum jump distances match multiples of the tile grid
My first ideas for point 3 are:
  • (Mockup above)Tie brightness levels to altitude layers on the z axis, palette swapping the color ramps one step up or down for each layer (8px)
  • Cast shadows on a straight line under objects, preferentially paletted shadows by alpha + posterization shader
  • Cast shadows stretching towards the bottom of the screen, at half the height the casting object, so shadows would give a visual cue as to if an object is higher or deeper in the room, and also about the length of its height on z axis

I would be very, very thankful of any suggestions for other techniques to help distinguish depth from height at parallel perspectives, as well as references on games which do things like that. I would also like opinions on that "brightness-matches height" thing, I am really not sure if it works by looking at the mock-up, but it would be the a very explicit way to do it. Thank you all in advance.

Offline 32

  • 0011
  • **
  • Posts: 535
  • Karma: +1/-0
    • @AngusDoolan
    • http://pixeljoint.com/p/19827.htm
    • View Profile

Re: How to help the player judge depth and height

Reply #1 on: May 18, 2018, 08:00:25 am
I think having the wall of the tile change brightness is not looking so good. I would consider just having the top surface of the object change brightness depending on height. At the very least you'll want to aim for a smoother gradient, the striation is making it look like the back walls for example are stairs.

I would be looking very hard at shadows and different angles to cast them at. I think having them be slightly diagonal rather than directly below and object will help a lot, so walls and other grounded objects can still indicate how tall they are. The main thing is going to be level design though, if you don't get to complicated about your level layouts I don't foresee there being too many issues, if you're trying to get full 3d gameplay just make a 3d game.

Offline yrizoud

  • 0010
  • *
  • Posts: 330
  • Karma: +0/-0
    • View Profile

Re: How to help the player judge depth and height

Reply #2 on: May 18, 2018, 08:40:56 am
The mockup in first post uses the exact same texture (brick pattern) for vertical and horizontal planes. You should avoid it at all costs, it causes a massive visual confusion.
Game designers often reserve complex/detailed patterns for vertical planes, and then draw ground on flat color or using groups of pixels (not single pixels or one-pixel-wide lines), because sprites overlap ground most, and this choice helps them stand out.

As for your general question, I got the impression that generally the level design has to give the right hints. If the player has to "count tiles" or determine color matches to see where he can go, it's more of a puzzle game than an action game.
 

Offline Vinik

  • 0010
  • *
  • Posts: 211
  • Karma: +0/-0
    • View Profile

Re: How to help the player judge depth and height

Reply #3 on: May 18, 2018, 04:59:49 pm
Thanks 32 and yrizoud. I agree in all accounts. In fact I was doing a little reasearch and turns out the GBA and DS Mario&Luigi rpg series actually do the brightness shift trick, but much more subtly and only on the top (floor) surfaces, exactly like 32 suggested. Take a look here:

So, to get a feel of what I am planning to do, I color reduced it to have about 7 shades color ramps, recolored to my palette, and squashed it to 2:1 ratio 16x8 tiles, so I suppose I'll be looking to a similar density to this edit when I am done:

The brightness shift will be more a measure of contrast between the top and the front of the solids then, point taken. It is interesting as the mario game uses only three thresholds of brightness, leaving the darkest one for walls which work as backgrounds.

Also yrizoud is right about the texture, I went for quick mockup and pretty much made whole scene with only two tiles. For the surfaces I believe it will be best to use two tricks: 1-use more horizontal textures for the ground and more vertical ones for the walls; 2- what yrizoud said, use flat colors or subtle textures where a flat color is predominant and darker shades only show cracks, gaps, etchings, tufts of grass etc, more like what zelda does. However, I suck at subtle textures, I never seem to know what to show and what to hide, and the elements I place spaced away in the flat surfaces either don't tile well or seem disconnected from each other. I'll look for more references on those.