diff --git a/.gitignore b/.gitignore index daae5f9f3..92266d7fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -Manual/.rh/ \ No newline at end of file +Manual/.rh/ +Adobe_RoboHelp*/ +RoboHelp*.exe \ No newline at end of file diff --git a/Manual/contents/Content.htm b/Manual/contents/Content.htm index 7788b34b7..7aa17903b 100644 --- a/Manual/contents/Content.htm +++ b/Manual/contents/Content.htm @@ -3,7 +3,7 @@
-GML Visual is the visual scripting method for programming with the GameMaker Language (GML). It consists of using action blocks to construct game logic in a visual and intuitive way, and is an ideal tool for people who are learning programming, or for people that have a more visual inclination.
The GML Visual section of the manual is split into the following sections:
@@ -28,10 +28,10 @@
GML Visual is a visual scripting tool that can be used to create your games without actually typing any code. That's not to say that you aren't programming code when you use GML Visual, as you are, only that your code is created and presented in a visual way using "blocks" of actions rather than text. Actions are simple expressions or statements that can be "chained" together to have an instance of an object do something when placed in a room. For example, you could have an action in a Create Event to move an instance in a random direction, and another action in a Collision Event to make it bounce off the things it collides with (for more information on the different events available and how they work together see the section on Object Events).
-
The image above shows a typical object open on a workspace to be edited. It has an "Event" window and a "Code" window chained to it, and in the code window you can see where we have constructed our GML Visual. Let's look a bit closer at this window and see what options are available to us:
The image above shows a typical object open on a workspace to be edited. It has an "Event" window and a "Code" window chained to it, and in the code window you can see where we have constructed our GML Visual. Let's look a bit closer at this window and see what options are available to us:
Below you can find more information on each of the sections shown:
The toolbox is where all the GML Visual actions are stored, with different sections holding collections (libraries) of actions that are similar or related. Each collection of actions is related to a specific theme or common purpose and you simply click
and drag the required action from the toolbox into the action block workspace to add it to the current event. To make things simpler - as there are a lot of actions - you can use the "Search" bar at the top to search for a specific action or to filter the visible actions (type "draw" for example to get all the drawing actions), and you can also click
and drag icons from any library into your Favourites folder to keep commonly used actions together. This is particularly useful if there are certain things you'll be doing again and again. The favourites folder can be cleared by clicking the small "bin" icon.
The toolbox is where all the GML Visual actions are stored, with different sections holding collections (libraries) of actions that are similar or related. Each collection of actions is related to a specific theme or common purpose and you simply click
and drag the required action from the toolbox into the action block workspace to add it to the current event. To make things simpler - as there are a lot of actions - you can use the "Search" bar at the top to search for a specific action or to filter the visible actions (type "draw" for example to get all the drawing actions), and you can also click
and drag icons from any library into your Favourites folder to keep commonly used actions together. This is particularly useful if there are certain things you'll be doing again and again. The favourites folder can be cleared by clicking the small "bin" icon.
For a complete list of the actions available, as well as what arguments they take and how they can be chained, please see the GML Visual Reference section.
You can use the right mouse button
on any action in the toolbox to open the following menu:

This section of the manual lists all the different actions available to you when using GML Visual to program your game. Below you can find each of the different Action Libraries available to you from the object GML Visual Toolbox, and within each library section the individual actions are explained, along with examples of use.
You can use GameMaker Language to program your games in two different ways: by placing blocks to "write" code visually, or by writing code manually.
The first option, GML Visual, is best suited for beginners and hobbyists who want to get started making their own games quickly.
The second option, GML Code, allows you to harness the full power of GameMaker Language by writing your code manually.
@@ -49,7 +49,7 @@The following unary operators are provided:
This section of the manual contains all the information required to understand and use GML Code. The runtime functions in this language can be used to create your games and is added into objects from The Object Editor, although it can also be used along with GML Visual. Below you can see a typical image of an object with the code editor open on an event:
Each event has its own tab in the editor and you can add, edit, or remove code from them at any time (for more information on events see Object Events). The code itself must have a basic structure and can contain resource indices, variables, functions, expressions, keywords, etc. all of which are explained in the sections below. If you are a novice to programming or making the switch from GML Visual, it is recommended that you start with the page on Basic Code Structure and then read through all the other pages in this section, testing code from each one within GameMaker itself.
You can use Feather for intelligent code completion and error reporting in your GML Code scripts.
@@ -78,7 +78,7 @@This function returns the current y position of the given audio emitter.
Real
+
if (audio_emitter_get_y(emitter_player) != x)
+
if (audio_emitter_get_y(emitter_player) != y)
{
audio_emitter_position(emitter_player, x, y, 0);
}
This variable can be used to get and to set the persistent flag for the current room. If set to true the room is considered persistent, in which case each time you leave the room and come back again the state of the instances within that room will have been maintained. However if it is flagged as false, each time you return to the room it will be reset to its initial state. You should note that a persistent room uses considerably more memory than a normal room and it is not recommended to have too many of them in your game.
+This variable can be used to get and to set the persistent flag for the current room.
+If set to true the room is considered persistent, in which case each time you leave the room and come back again the state of the instances within that room will have been maintained. However, if it is flagged as false, each time you return to the room it will be reset to its initial state.
+A persistent room uses considerably more memory than a normal room and it is not recommended to have too many of them in your game.
room_persistent;
+room_persistent
if (lives < 1)
+
if (lives < 1)
{
room_persistent = false;
room_goto(rm_start);
}
The above code checks the variable "lives" and if it is less than 1, it will set the room persistence to false and then change rooms.
+The above code checks the variable lives and if it is less than 1, it will set the room persistence to false and then change rooms.
Most modern computers and mobile devices do not like it when a game is stopped while a dialog window is shown. They tend to interpret this as game runner having stopped, and may consider it an error and close the app prematurely. To prevent this GameMaker has asynchronous dialog functions that permit you to request certain forms of user feedback or input, but without blocking the game runner at any time, meaning that - when called - the game will run as normal in the background while the user responds to the shown dialog window. Once the user has responded, a Dialog Asynchronous Event will be called so that you can deal with the results.
-With the exception of shop_leave_rating, these functions are for debugging and testing use only and should not be used in released games on desktop OSes and HTML5. For that purpose you should create a custom user interface to receive input from players so that you have complete control over how the dialogs look and behave. On console and mobile platforms the system UI is used to show dialogs instead.
+Most modern computers and mobile devices do not like it when a game is stopped while a dialog window is shown. They tend to interpret this as game runner having stopped, and may consider it an error and close the app prematurely. To prevent this GameMaker has asynchronous dialog functions that permit you to request certain forms of user feedback or input, but without blocking the game runner at any time, meaning that - when called - the game will run as normal in the background while the user responds to the shown dialog window (with the exception of the GX.games target). Once the user has responded, a Dialog Asynchronous Event will be called so that you can deal with the results.
+With the exception of shop_leave_rating, these functions are for debugging and testing use only and should not be used in released games on desktop, web and mobile targets. For that purpose you should create a custom user interface to receive input from players so that you have complete control over how the dialogs look and behave. On consoles, the system UI is used to show dialogs instead.
These functions don't work in regular fullscreen mode on Windows as your game "owns" the entire screen. You can use them with borderless fullscreen instead, see window_enable_borderless_fullscreen.
Below is a list of all the available asynchronous dialog functions:
With this function you can poll the window (or tab) state and if it loses focus the function will return false, otherwise it will return true. In most cases you can simply use the os_is_paused function to test this, but in some very specific cases (for example games on Chrome Apps) that function will not trigger, in which case you should use this function instead.
-This function is only valid on the HTML5, Windows, and macOS platforms.
+This function is only valid on the HTML5, GX.games, Windows, and macOS platforms.
window_has_focus()
diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm index b7587d3a2..cae8173a3 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm @@ -23,7 +23,7 @@diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm b/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm index 4a91cf48a..ca2e5d1a6 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm @@ -3,7 +3,7 @@ -
This section of the manual is a reference guide for the GameMaker Language (GML Code). You can find all the available functions documented here along with the required arguments and examples of code to show how they can be used. For information on how to use GML Code please see the GML Code Overview section of the manual.
Anywhere the manual has N/A as a return value for a function, it means that the function is not meant to return any value as part of its operation. If you try to check for a return value from these functions then you will get the value undefined.
The GameMaker Language (also called simply GML) is the proprietary GameMaker scripting language. This language is structured to permit users to create their games in an intuitive and flexible way while offering all the power of any other major programming language. It is also the basis for GML Visual and can be used in conjunction with that if required.
The GML Code section of the manual is split into the following sections:
@@ -30,10 +30,10 @@
The Asset Browser Preferences are used to define certain properties for how the Asset Browser and its elements function. The main options are:
The Asset Browser Preferences are used to define certain properties for how The Asset Browser and its elements function. The main options are:
@@ -67,7 +67,7 @@

The Room Editor is where you create your game rooms. Every game requires at least one room to run, and in the room you can place instances, sprites, tiles, paths, backgrounds, sequences, text and particle systems. Each of these different assets can be placed on their own unique layer which can then be ordered however you wish in the Layer Editor. Due to the complexity of the Room Editor, we'll give you first a brief overview of the most important features, and then you can find more in-depth details from the section links listed below.
When you create a room asset, you can right-click
on it in The Asset Browser to open the context menu, which will permit you to create child rooms (see the page on Room Inheritance for more information), open up the room for editing, add a new asset group to better organise the rooms, rename the room or delete it. Note that to change the room order and/or inheritance you need to use The Room Manager, which you can open using the menu in the top right of the Asset Browser.
The Room Editor is itself a workspace and as such you can click
on the tab and drag it off of the main window into a new window of its own - perhaps in another display, for example. You can also place it back into the main window by dragging the tab to the top of the IDE and releasing the mouse button.
The status bar is used to show you context specific information. The status bar will always show you where in the room the mouse cursor is, but it will also show additional information based on the layer being edited, the tool being used and the state of that tool.
+The status bar is used to show you context specific information. The status bar will always show you where in the room the mouse cursor is and the grid cell it is in, but it will also show additional information based on the layer being edited, the tool being used and the state of that tool.
You can get more information about some of the above mentioned sections from the following pages:
diff --git a/Manual/contents/assets/Images/Asset_Editors/Editor_Object_NewVariable.png b/Manual/contents/assets/Images/Asset_Editors/Editor_Object_NewVariable.png index b4babbfde..4947184bb 100644 Binary files a/Manual/contents/assets/Images/Asset_Editors/Editor_Object_NewVariable.png and b/Manual/contents/assets/Images/Asset_Editors/Editor_Object_NewVariable.png differ diff --git a/Manual/contents/assets/Images/Asset_Editors/Editor_Room.png b/Manual/contents/assets/Images/Asset_Editors/Editor_Room.png index da67b2174..243d537c3 100644 Binary files a/Manual/contents/assets/Images/Asset_Editors/Editor_Room.png and b/Manual/contents/assets/Images/Asset_Editors/Editor_Room.png differ diff --git a/Manual/contents/assets/Images/Introduction/QS_AssetBrowser.png b/Manual/contents/assets/Images/Introduction/QS_AssetBrowser.png index aa84300f5..1d77eae24 100644 Binary files a/Manual/contents/assets/Images/Introduction/QS_AssetBrowser.png and b/Manual/contents/assets/Images/Introduction/QS_AssetBrowser.png differ diff --git a/Manual/contents/assets/Images/Setup_And_Version/Crash_Incude_Project.png b/Manual/contents/assets/Images/Setup_And_Version/Crash_Incude_Project.png new file mode 100644 index 000000000..b737ddf29 Binary files /dev/null and b/Manual/contents/assets/Images/Setup_And_Version/Crash_Incude_Project.png differ diff --git a/Manual/contents/assets/snippets/Note_dialog_not_async_on_GX_games.hts b/Manual/contents/assets/snippets/Note_dialog_not_async_on_GX_games.hts new file mode 100644 index 000000000..1007b6e02 --- /dev/null +++ b/Manual/contents/assets/snippets/Note_dialog_not_async_on_GX_games.hts @@ -0,0 +1,14 @@ + + + + + + + +This function is not asynchronous on GX.games; it will freeze the game while the dialog is open.
+ + \ No newline at end of file diff --git a/Manual/contents/assets/snippets/Note_font_add_sprite_prop.hts b/Manual/contents/assets/snippets/Note_font_add_sprite_prop.hts new file mode 100644 index 000000000..ef575bd28 --- /dev/null +++ b/Manual/contents/assets/snippets/Note_font_add_sprite_prop.hts @@ -0,0 +1,14 @@ + + + + + + + +The prop argument only works if the given sprite was added to the project through the IDE and not generated at runtime. For sprites added at runtime, this will default to false and will result in a monospaced font.
+ + \ No newline at end of file diff --git a/Manual/toc/Default.toc b/Manual/toc/Default.toc index 2c8573e64..b1600f552 100644 --- a/Manual/toc/Default.toc +++ b/Manual/toc/Default.toc @@ -295,15 +295,15 @@