Views give a mechanism for drawing different parts of your room
at different places on the screen, or for drawing just a part of
your room to cover the whole screen. For example, in most platform
games, the view follows the main character, as if you could see the
whole level on the screen your character would be too small
to see and there would be no surprises for the player! Views can
also be used in two-player games, as they permit you to create a
split-screen setup in which in one part of the screen you see one
player and in another part you see the other player. A third use is
in games in which part of the room should scroll (e.g. with the
main character) while another part is fixed (for example some
status panel). This can all be easily achieved in GameMaker:
Studio using views.
the top of the views tab there is a box labelled Enable the use
of Views, and this must be flagged before any of the views can
be active in a game. The next checkbox is the one that says Clear
Background with Window colour, which clears the application surface
with the window colour, and can be unchecked if you know that you
are drawing to cover the whole surface.
Below this you see the list of available views (you can define a maximum of eight) with the information about where these views are to be drawn contained in the boxes below. First of all you must indicate whether the view should be Visible when the room starts by checking the appropriate box, and if you wish to use views, make sure at least one view is visible at the start of every room. Visible views are shown in bold in the view list above this.
A view is defined by two different sets of values, the view itself and the port on the screen. This can sometimes cause confusion so let's explain this a bit before explaining how we define each of them:
So, this means that you can have a 640x480 view into your room,
and then set the port to 320x240, which will display the view
scaled down to that sized port on the screen, and you can
also do the same and set the view to a smaller value and the port
to larger making the image scale up to fit the port size and
be shown on the screen larger than it is. In this way you can
maintain a screen (port) size while changing the view and display
more or less of the room in the same area of the screen.
The view is always defined as a rectangular area in the room, where you specify the position of the top-left corner, the width and the height of this area. Then you must specify where this area is shown in the window on the screen by defining the view port, where again you specify the position of the top-left corner and the size (note that anything other than 0,0 for the top left corner can give strange results). You can have more than one port and they can overlap, in which case they are drawn in the indicated order one on top of the other. Please realise that the over all screen area is always defined as a rectangular area, so your ports, even when offset, will form a rectangle, with any empty spaces being filled in by the window colour, meaning that in these circumstances you should always have Clear Background with Window colour checked or else you will get odd artefacts drawn in the spaces between ports.
NOTE: On Windows SurfaceRT devices, there is a canvas limit of 2048x2048, which means the drawing canvas cannot go above those dimensions (neither with views, nor by setting the game window directly) otherwise your game graphics will be corrupted or degraded.
The "Object Following" option is for when you want the view to
"follow" (ie: maintain the view focused on) a certain object. To do
this you must click on the menu icon and select an object from the
list that pops up (if there are multiple instances of this object
in the room, only one of them is followed by the view). The normal
behaviour for a view is to only move when the instance being
followed gets too close to a "buffer" zone that makes an invisible
boundary around the edge of the view. This zone can be defined by
you using the Hbor and Vbor values, where Hbor
is the horizontal border zone, and Vbor is the vertical
border zone. So, setting these values to, for example, 64, will
mean that the view will not start to move and follow the character
until he reaches 64 pixels from the edge of the view.
Finally you can indicate the speed at which the view moves when the character has reached the buffer zone, and this has a default value of -1. This default value is basically "instantaneous" and means that the moment the follow object is outside the Hbor or Vbor buffer zone, the view will skip to its current position. Now, this is not always what you want and so you can set the vertical and horizontal scrolling speed for the view by setting the values for Hsp and Vsp to something other than -1. Note that a value of 0 will cause the view to not move at all, and any other positive value is how many pixels it will move in any step, so setting the Hsp to 5 will have the view follow the object at 5 pixels per step horizontally.