-
Notifications
You must be signed in to change notification settings - Fork 9
UpgradeTo32
AGS 3.2 contains some major changes, the main one being a completely new way of scripting the game audio.
Why a new audio system?
In previous versions of AGS, sound and music was a pain to use. Although it was very simple to script using commands like PlayMusic(5) and PlaySound(10), the fact that it was so basic became a limitation.
What is music 5? Which sound effect is Sound 10? How are you supposed to remember? It was all a bit chaotic and old-fashioned. Furthermore, controlling the volume involved several different commands, making it something of a black art.
So what's changed?
The old commands like PlayMusic and PlaySound have been obsoleted now, and replaced with a new object-based audio system. This means that audio files are now represented by script instances in the game.
For example, in AGS 3.1.2, you might have done this:
PlaySound(10); // this is an explosion
Now, with AGS 3.2 you would do it like this instead:
aExplosion.Play();
So how do I name my audio files?
There is a new "Audio" item in the project tree, which you now use to manage your audio. By default, when you import your game from a previous version of AGS, it will create audio clips with names like "aMusic5" and "aSound30", corresponding to their old names.
If you want the old-style commands like PlayMusic and PlaySound to continue working, then you must not rename these audio clips. AGS maintains a backwards compatibility layer by mapping the PlayMusic(X) command to play an audio clip called "aMusicX", and the PlaySound(X) command to play a clip called "aSoundX".
Otherwise, if you want to convert your scripts to the new audio system, you can simply right-click and rename these audio clips as you see fit.
There is now an AudioCache folder, do I still need the Sound and Music folders?
When you import an audio file into AGS, it makes a copy of it in the AudioCache folder, but it also remembers where the file came from originally. If the original file changes, AGS will automatically copy the updated file into the AudioCache folder.
When you upgrade an old game, the original file location for where AGS thinks your audio files came from is set to the "Sound" and "Music" folders. Therefore, keeping these folders is advisable initially as it allows you to continue to update the existing files in the same way you always have done, and AGS will automatically pick up the changes.
But going forward, as you import new audio files, there's no need to have them in the Sound or Music folders; import them from wherever you like.
What about controlling the volume?
Glad you asked! Instead of all those old commands like SetMusicVolume,
SetDigitalMasterVolume, etc, there is now simply one overall system
volume (System.Volume
), and then each sound
that is playing has its own volume control as well. This is controlled
by the Volume property on the audio
channel (see the Audio page for details on
this).
Finally, you can update the volume of one particular type of audio (e.g.
sound, music) by using the
Game.SetAudioTypeVolume
command.
Wait, what's an audio channel?
AGS uses two new concepts -- Audio Clips (which represent a particular sound file), and Audio Channels (which represent a currently playing piece of audio). The reason for this distinction is that you might have the same sound effect playing two or more times simultaneously, and having Audio Channels allows you to control each one individually. The Audio page describes this further.
PlayAmbientSound is obsolete! How do I do ambient sounds?
Ambient Sounds were a bit of an oddity in AGS, caused by the fact that you couldn't tell a PlaySound command to loop the sound. With the new audio system, the Play command has an optional Repeat parameter, allowing you to specify whether it loops or not.
The X/Y directional aspect of PlayAmbientSound is supported by the
SetRoomLocation
command on the
audio channel.
Is there any new cool stuff that I can do?
You can now adjust the left-right panning of audio, using the
AudioChannel.Panning
property. You
also have finer control over syncing up different pieces of audio,
through the ability to get and seek offsets more accurately.
Has voice speech changed?
No, speech is still handled the same way as in previous versions of AGS. You still need the Speech folder within your game folder, and name the files within it using the same naming convention as you always have done.
Where should I look for more info?
See the Audio help for more information.
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