-
Notifications
You must be signed in to change notification settings - Fork 9
AdvancedRoomFeatures
This section describes slightly more advanced things you can do with the rooms.
AGS supports scaling of characters, where the character can appear to get smaller as he walks away from the screen. Character scaling is supported as part of the walkable areas in a room.
The reason why you have multiple colors available for the walkable
areas is because you can set a zoom level for each color, which defines
how large the character will be while he is in that area. The default
for all walkable areas is 100%
, i.e. full size. However, you can adjust
it using the "Walkable Areas" mode to anywhere from 10%
(one-tenth
size) to 200%
(double size).
The scaling settings can affect all characters and objects in the game. For characters, it is on by default but you can disable the scaling for an individual character by setting the "UseRoomAreaScaling" option in that character's properties.
For objects, it is off by default but you can make a specific object obey scaling levels by setting its "UseRoomAreaScaling" option.
If you set the "UseContinuousScaling" option, then rather than just specifying a zoom level for the whole walkable area, you specify a min and max zoom level. These specify the scaling at the top and bottom of the walkable area. When the game is run, AGS will interpolate these values to make the character smoothly scale down from one value to another as he walks towards the back or front of the screen.
It's easy to create scrolling rooms like the ones used in LucasArts games like Monkey Island (TM) and Day of the Tentacle.
To do this, just import a background scene that is larger than your game resolution. For example, in a 320x200 game, 500x200 is a good size for LucasArts-type rooms.
That's all you have to do. Draw on the walkable areas, hotspots and so on, as normal, and then save the room. The screen will scroll to follow the main character around.
With the script command Camera.SetAt
, you can manually scroll
the room around if you don't want it to follow the character. The default camera
is accessible using Game.Camera
.
AGS has the ability to import an external BMP or PNG file to use as the walkable-area, hotspot or walk-behind area mask. If you don't like the way you have to draw these in the editor itself, you can draw them in another program and then import them. This is also useful if you are converting a game you were making with another game-creation system into AGS.
To use the feature, click the "Import Mask" button (in the toolbar) in the relevant mode of the Areas editor. There are some restrictions to how this file must be drawn: it must be the exact same size as the background scene, and it must be in 16-color (4-bit) or 256-color (8-bit). Then, color 0 on the bitmap signifies transparency and colors 1-15 are used as the respective hotspot/walk-behind/walkable area numbers.
(IMPORTANT: Do NOT use any color numbers above 15 on the mask bitmap. Use only palette indexes 0 to 15.)
If you want to have a lot of animation on the screen, you will come across two problems if you try to do it using objects:
- There is a limit on the number of objects per screen, so you may not be able to animate everything that you want to that way.
- Objects slow down the game - the more objects on the screen, the slower the game runs.
The solution to these problems is to use an animating background scene.
How it works is this: Each room can have from 1 to 5 backgrounds. Normally, each room just has one background. However, you can import up to four extra backgrounds in each room, and if you do so then the game will cycle through them, giving the effect of animation.
This gives two main advantages - you can animate the entire screen, and due to the way the engine works, it doesn't slow down the game at all.
To import a second background for a room, load the room into the editor, pull down the "Main background" list box, and choose the "Import new background" option. Choose the file that's storing the background and you're done.
To delete a background, select it then click the "Delete" button.
You define the speed at which the backgrounds will animate by setting the "BackgroundAnimationDelay" option in the property grid for the room. The default is 5, which cycles background every 5 frames.
(NOTE: All the background scenes must be the same size.)
(NOTE: (256-color only) The backgrounds frames each have their own palette (unless you select "Share palette with main background" before importing). This means that when the current frame switches in-game, the palette will get reset - therefore you can't use special palette effects such as CyclePalette or SetPalRGB on screens with animating backgrounds.)
You can control the brightness of your characters, courtesy of the "LightLevel" setting for room Regions.
By default this is 100%
, but you can change it from 0% to 200%
. This
number is the light level in the current walkable area. Smaller numbers
are darker, so that 0%
is pitch black and 200%
is very bright.
This feature could be useful if, for example, you have a street lamp on your scene so when the character walks under it they get brighter, or if a wall is shading the character from the light they can get darker.
You can alternatively use a color tint for the region. If you select this, then you can enter Red, Green and Blue values as numbers from 0-255, which reflect the color you want the area to be tinted to. The Amount setting determines to what extent characters will be tinted, and is from 0-100.
(NOTE: Light levels only work when the character's graphic is at the same color depth as the background (i.e. a 256-color character in a hi-color game won't get lightened).)
(NOTE: In a 256-color game, only darkening areas (light level <
100%
) will work. Also, depending on the room palette the quality of
the darkening will vary in 256-color games.)
(NOTE: Light levels affect characters and objects, depending on the "UseRoomAreaLighting" setting for each one. They do not affect overlays or the background scene.)
Now you are ready to read in-depth about setting up your game.
Next Reading: Setting Up Your Game
Return to Tutorials Index: Tutorials Index
Getting Started in AGS
Editor
- New Game templates
- Editor Preferences
- General Settings
- Default Setup
- Colours Editor
- Room Editor
- Character Editor
- Cursor Editor
- Dialog Editor
- Font Preview
- GUI Editor
- Inventory Items Editor
- View Editor
- Sprite Manager
- Music and sound
- Voice speech
- Script Modules
- System limits
- Log Panel
- Plugins
- Other Features
Engine
Scripting
- Scripting Tutorial
- Scripting Language
-
Scripting API
- Script API Overview
- Standard Constants
- Standard Enumerated Types
- Standard Types
- Game variables
- Global arrays
- Global event handlers
- repeatedly_execute / repeatedly_execute_always
- Custom dialog options rendering
- Global functions: general
- Global functions: message display
- Global functions: multimedia actions
- Global functions: palette operations
- Global functions: room actions
- Global functions: screen effects
- Global functions: wait
- AudioChannel functions and properties
- AudioClip functions and properties
- Camera functions and properties
- Character functions and properties
- DateTime functions and properties
- Dialog functions and properties
- DialogOptionsRenderingInfo functions and properties
- Dictionary functions and properties
- DrawingSurface functions and properties
- DynamicSprite functions and properties
- File functions and properties
- Game functions and properties
- GUI functions and properties
- GUI control functions and properties
- GUI Button functions and properties
- GUI InvWindow functions and properties
- GUI Label functions and properties
- GUI List Box functions and properties
- GUI Slider properties
- GUI Text Box functions and properties
- Hotspot functions and properties
- Inventory item functions and properties
- Maths functions and properties
- Mouse functions and properties
- Object functions and properties
- Overlay functions and properties
- Parser functions
- Region functions and properties
- Room functions and properties
- Screen functions and properties
- Set functions and properties
- Speech functions and properties
- String functions
- System functions and properties
- TextWindowGUI functions and properties
- ViewFrame functions and properties
- Viewport functions and properties
- Obsolete Script API
- Event Types
- Key code table
- Audio in script
Legal Notice
Getting in touch
Misc