-
Notifications
You must be signed in to change notification settings - Fork 0
UpgradeTo34
AGS 3.4 introduces a number of significant enhancements to game creation process.
Building game for multiple platforms
AGS can now compile and deploy your game for more than one target platform. Currently Windows and Linux are officially supported, but other may be added in following updates. Check the "Built target platforms" option in the "Compiler" section of the General Settings.
NOTE: for deploying your game for Linux you need to have a Linux-related utilities to be placed in the "Linux" folder at your AGS Editor installation. Those files are distributed along with the official AGS release.
Custom game resolution
Your native game resolution can now be anything, not limited to predefined variants anymore.
Similarly, the engine is now capable of running any game in any display mode your system supports. To achieve this it uses scaling filter of player's choice, and additional simple image stretching when required. The setup program has been altered to reflect this feature.
Script API selector
You can now choose the variant of Script API (built-in functions and properties available for use) with two switches in the "Backwards Compatibility" section of the General Settings.
One switch is called "Script API version" and defines the topmost level of built-in script content that you want to enable for your project. It is suggested to set this to the highest possible value. However, there may be cases when you load an older project in the newer version of AGS, and new built-in function names conflict with names in some of the scripts you used in your project. In such cases you may decide between fixing your script or lowering AGS API version. The latter will let you compile game scripts without any changes, at the price of not being able to use newer built-in functions.
Second switch is called "Script Compatibility Level" and defines the lowest level of built-in content. It is useful if you wish to keep using some of the old functions that were declared obsolete by newer version of AGS. You do so by setting this switch to version that still had those functions.
NOTE: You may change those two settings anytime if you'd like to experiment, or your plans has changed. It is recommended to do full game rebuild after you do so though.
Mutable custom properties
Since introduction Custom Properties could not be changed at runtime, they had to keep their default values set in the Editor throughout the course of the game. Now this restriction was eliminated and you can change any existing custom property in game script, using appropriate SetProperty and SetTextProperty functions:
Character.SetProperty, Character.SetTextProperty, Hotspot.SetProperty, Hotspot.SetTextProperty, InventoryItem.SetProperty, InventoryItem.SetTextProperty, Object.SetProperty, Object.SetTextProperty, Room.SetProperty, Room.SetTextProperty
Besides, the number of properties is no longer limited by 30, you may make as much of them as you need for your game.
Extended WFN fonts
WFN (bitmap fonts) can now have up to 256 characters (as opposed to previously supported 128). You may need a specialized editor to create such fonts (for example, there is a good Editor plugin around meant for this task), and AGS will properly draw any of the 256 characters.
New script features
First of all, you can now create your own managed structs and objects of their type in script. The difference from common structs is that you use pointers to work with these objects, and can pass them around as function parameters and function return values as well. IMPORTANT: there is a big limitation for user-defined managed structs now, it is that they themselves cannot have members of pointer types (or dynamic arrays). We suppose that this restriction is only temporary and hope to remove it in future updates.
You can now have some new forms of loop in your script, in addition to
previously existing while
. First is do..while
kind of loop that
always performs its commands at least once before checking end
condition, second is for
loop that lets you initialize internal
variable, define end condition and write iteration - all in its header.
Another introduced command is switch
. One switch
can replace a long
list of if
and else if
blocks.
See: switch, do..while, for, break, continue, managed, new
Custom Dialog Options rendering extended
In the past the custom dialog rendering was strictly tied to mouse movement and clicks. Now it is extended to give you more freedom in setting it up.
Two more related callbacks are added: dialog_options_repexec
- that is
an analogue of repeatedly_execute
function, but is called only while
dialog options are displayed, and dialog_options_key_press
function,
which is called whenever player presses a key when dialog options are on
screen.
The dialog_options_mouse_click
will now be called always, even if user
clicks on the option, but on other hand option won't be run without
explicit command:
RunActiveOption.
Along with RunActiveOption, DialogOptionsRenderingInfo struct received another member function: Update. It forces options GUI to redraw itself, hence may be used to implement custom animation, or similar behavior.
IMPORTANT: The dialog_options_get_active
callback was deprecated
and won't be called, at all. You will need to slightly change the logic
of your script. In most cases it may be enough to simply rename
dialog_options_get_active
to dialog_options_repexec
.
NOTE: For backwards compatibility you may use an option in General
Settings called "Use old-style custom dialog options API". This will
disable all the new stuff, but return dialog_options_get_active
and
make dialog_options_mouse_click
behave as it did before.
For detailed information see: Custom dialog options rendering
Some functions object-ized
obsolete function/variable | replace with |
---|---|
GetRoomProperty | Room.GetProperty |
ProcessClick | Room.ProcessClick |
REMINDER: you can also use "Script Compatibility Level" switch to enable old functions.
System limits update
The maximal number of GUI Controls per GUI is no longer limited. The maximal number of script modules is no longer limited.
Getting Started in AGS
Editor Reference
- Music and sound
- Distributing your game
- Backing up your game
- The text parser
- Translations
- Global variables
- Custom Properties
- Plugins
- Lip sync
- New Game templates
- Debugging features
- Auto-number speech files
- Integration with Windows
- Source Control integration
Engine
Scripting
- Scripting tutorial part 1
- Scripting tutorial part 2
- Pointers in AGS
- Calling global functions from local scripts
- The script header
- String formatting
- Multiple Scripts
- Understanding blocking scripts
- Dynamic Arrays
- Extender functions
- Game variables
- Predefined global script functions
- repeatedly_execute (_always)
- Custom dialog options rendering
- Built-in enumerated types
- Script language keywords
- AudioChannel functions and properties
- AudioClip functions and properties
- Character functions and properties
- DateTime functions and properties
- Dialog functions and properties
- DialogOptionsRenderingInfo functions and properties
- DrawingSurface functions and properties
- DynamicSprite functions and properties
- File functions and properties
- Game / Global functions
- 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
- Multimedia functions
- Object functions and properties
- Overlay functions and properties
- Palette functions
- Parser functions
- Region functions and properties
- Room functions
- Screen functions
- Speech functions and properties
- String functions
- System functions and properties
- Text display / Speech functions
- ViewFrame functions and properties
Working on Legacy games
Upgrading from a previous version
- Upgrading to AGS 2.7
- Upgrading to AGS 2.71
- Upgrading to AGS 3.0
- Upgrading to AGS 3.1
- Upgrading to AGS 3.2
- Upgrading to AGS 3.3
- Upgrading to AGS 3.3.5
- Upgrading to AGS 3.4
- Upgrading to AGS 3.4.1
Legal Notice
Getting in touch