Digamos que tienes un nivel con varias puertas, y una llave para cada una. ¿Cómo puedes marcar fácilmente una llave para una puerta específica? Bueno, normalmente asignarías un ID a la llave y a la puerta. ¿Y qué pasa si quieres que una llave abra 2 o 3 puertas? Es fácil. Utilizas una MÁSCARA. La puerta tendría un solo bit asignado así:
+
Digamos que tienes un nivel con varias puertas, y una llave para cada una. ¿Cómo puedes marcar fácilmente una llave para una puerta específica? Bueno, normalmente asignarías un ID a la llave y a la puerta. ¿Y qué pasa si quieres que una llave abra 2 o 3 puertas? Es fácil. Utilizas una MÁSCARA. La puerta tendría un solo bit asignado así:
Los errores de ejecución son generalmente más serios que los de compilación, ya que significan que hay algo seriamente incorrecto en su código que ni el editor de código ni el compilador han podido detectar, y como tal debe prestar atención a todos esos errores. Cuando se produce uno, puede utilizar el botón Copiar de la ventana emergente para copiar el error en el portapapeles, que luego puede pegar en un archivo de texto (o donde sea) para futuras referencias.
La estructura de este error es la siguiente:
-
+
Muestra el evento en el que se ha producido el error, así como la dirección Object (si procede).
-
+
Esto muestra el error real. Por lo tanto, muestra el alcance del error y el tipo de error que es. El primer valor entre los paréntesis será el ID de la instancia que estaba ejecutando el código - o podría ser uno de los valores especiales listados en la tabla de abajo - y el segundo es un valor interno que GameMaker utiliza para identificar errores y puede ser ignorado. En el caso de la imagen de arriba, está diciendo que la variable _image no ha sido establecida (es decir, no existe antes de ser accedida) en el objectobj_EA_DEMO_Control.
-
+
Esto muestra el número de línea en la que se produce el error, así como un fragmento de código que muestra la posición. Ten en cuenta que esto no siempre es 100% preciso debido a la forma en que se compila el juego, pero debería ser suficiente para ayudarte a encontrar exactamente dónde está el problema.
Como se ha mencionado anteriormente, algunos mensajes de error no identificarán el ámbito por un valor de ID de instancia, sino por un valor negativo . Estos valores pueden ser utilizados para precisar la naturaleza exacta del error y a qué se refiere con los siguientes valores posibles:
@@ -264,7 +264,7 @@
Errores del corredor
With
No se puede utilizar global en la declaración con
Con
-
Has intentado utilizar "global" como variable dentro de una sentencia "with", es decir:
+
Has intentado utilizar "global" como variable dentro de una sentencia "with", es decir: with (global)
{
//do something;
@@ -275,7 +275,7 @@
Errores del corredor
With
No se puede utilizar local en la declaración con
Con
-
Has intentado utilizar "local" como variable dentro de una sentencia "with", es decir:
+
Has intentado utilizar "local" como variable dentro de una sentencia "with", es decir: with (local)
{
//do something;
diff --git a/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm b/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm
index 74b139ec4..7bfd7d9ee 100644
--- a/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm
+++ b/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm
@@ -69,7 +69,7 @@
Lista de errores de sintaxis
Expresión innecesaria [val] utilizada como declaración
-
Este error se produce cuando el corrector sintáctico detecta una expresión (mostrada en [val]) donde esperaba una sentencia. Por ejemplo, el siguiente código arrojará el error ya que espera el operador ternario ? pero encuentra 32:
+
Este error se produce cuando el corrector sintáctico detecta una expresión (mostrada en [val]) donde esperaba una sentencia. Por ejemplo, el siguiente código arrojará el error ya que espera el operador ternario ? pero encuentra 32: temp_x = x < (room_width / 2) 32: room_width - 32;
@@ -101,7 +101,7 @@
Lista de errores de sintaxis
Tengo "[val1]", esperaba "[val2]"
-
Esto sucede cuando el verificador de sintaxis espera algún valor o símbolo pero obtiene uno diferente, donde [val1] es el símbolo o valor actual, y [val2] es el símbolo o valor esperado. Por ejemplo:
+
Esto sucede cuando el verificador de sintaxis espera algún valor o símbolo pero obtiene uno diferente, donde [val1] es el símbolo o valor actual, y [val2] es el símbolo o valor esperado. Por ejemplo: Got "{", expected "("
@@ -118,14 +118,14 @@
Lista de errores de sintaxis
Declaración [val] vacía
-
Esto ocurre cuando se termina una sentencia y se deja vacía. Por ejemplo, el siguiente código dará el error (nótese el punto y coma final):
+
Esto ocurre cuando se termina una sentencia y se deja vacía. Por ejemplo, el siguiente código dará el error (nótese el punto y coma final): if (x < 0);
No se permiten las llamadas a funciones anidadas
-
Esto puede ocurrir cuando se intenta anidar llamadas a funciones dentro de una sentencia, por ejemplo
+
Esto puede ocurrir cuando se intenta anidar llamadas a funciones dentro de una sentencia, por ejemplo ds_list_find_value(list, 0)).sprite_index
Un buffer de un tamaño fijo en bytes. El tamaño se establece cuando se crea el buffer y no se puede volver a cambiar.
buffer_grow
-
+
Un buffer que crecerá dinámicamente a medida que se añadan datos. Se crea con un tamaño inicial (que debe ser una aproximación al tamaño de los datos que se espera almacenar), y luego se expandirá para aceptar más datos que desborden este tamaño inicial.
buffer_wrap
-
+
Un buffer en el que se sobreescribirán los datos. Cuando los datos que se añaden alcanzan el límite del tamaño de buffer, la sobreescritura se colocará de nuevo al principio de buffer, y la escritura posterior continuará desde ese punto.
buffer_fast
-
+
Se trata de un buffer especial "despojado" que es extremadamente rápido para leer/escribir. Sin embargo, sólo puede utilizarse con buffer_u8data types, y debe estar alineado a 1 byte. (La información sobre los tipos de datos y la alineación de bytes se puede encontrar más adelante en esta página).
@@ -53,7 +53,7 @@
Guía para el uso de tampones
Cuando se crea un buffer, siempre se debe intentar crearlo con un tamaño adecuado al tipo, siendo la regla general que se cree para acomodar el tamaño máximo de los datos que va a almacenar, y en caso de duda, utilizar un grow buffer para evitar errores de sobreescritura.
El código real para crear un buffer sería algo así:
Esto crearía un buffer fijo de 16384 bytes y alineado a 2, con la función devolviendo un valor de identificación único que se almacena en una variable para la posterior referencia de este buffer.
Cuando se leen y escriben datos en buffer, se hace en "trozos" de datos definidos por su "tipo de datos". El "tipo de datos" establece el número de bytes asignados dentro de buffer para el valor que se está escribiendo, y es esencial que lo hagas correctamente, de lo contrario obtendrás resultados muy extraños (o incluso errores) para tu código.
Los búferes se escriben (y se leen) secuencialmente, es decir, se escribe un dato tras otro, y cada dato es de un tipo determinado. Esto significa que lo ideal es saber qué datos se están escribiendo en buffer en todo momento. Estos data types están definidos en GML por las siguientes constantes:
@@ -68,73 +68,73 @@
Guía para el uso de tampones
buffer_u8
1
-
+
Un entero de 8 bits sin signo. Es un valor positivo de 0 a 255.
buffer_s8
1
-
+
Un entero de 8 bits con signo. Puede ser un valor positivo o negativo de -128 a 127 (0 se considera positivo).
buffer_u16
2
-
+
Un entero de 16 bits sin signo. Es un valor positivo entre 0 y 65.535.
buffer_s16
2
-
+
Un entero de 16 bits con signo. Puede ser un valor positivo o negativo entre -32.768 y 32.767 (el 0 se considera positivo).
buffer_f16
2
-
+
Un número de 16 bits en coma flotante. Puede ser un valor positivo o negativo dentro del rango de +/- 65504. (¡No se admite actualmente!)
buffer_u32
4
-
+
Un entero de 32 bits sin signo. Es un valor positivo de 0 a 4.294.967.295.
buffer_s32
4
-
+
Un entero de 32 bits con signo. Puede ser un valor positivo o negativo entre -2.147.483.648 y 2.147.483.647 (el 0 se considera positivo).
buffer_f32
4
-
+
Un número de punto flotante de 32 bits. Puede ser un valor positivo o negativo dentro del rango de +/-16777216.
buffer_u64
8
-
+
Un valor entero sin signo de 64 bits.(Actualmente no es compatible con todas las funciones de buffer )
buffer_f64
8
-
+
Un número de coma flotante de 64 bits.
buffer_bool
1
-
+
Un valor booleano. Sólo puede ser 1 o 0 (true o false)
buffer_string
N/A
-
+
Se trata de un UTF-8 con terminación nula (0x00) string. Básicamente se vuelca un GameMakerstring en el buffer, y se pone un 0 al final.
-
+
Y las curvas de distribución (lineal, gaussiana y gaussiana inversa) se ilustran aquí:
A continuación se muestra un ejemplo del código/acciones necesarias para definir dos emisores, que normalmente irían en el evento Create de un controlador object, justo después de definir el sistema de partículas. Uno será estático y emitirá partículas sobre el área de todo room, mientras que el otro será dinámico y seguirá al ratón y estallará cada 30 pasos de una pequeña elipse:
GML Visual es el método de scripting visual para programar con el Lenguaje GameMaker (GML). Consiste en el uso de bloques de acción para construir la lógica del juego de una manera visual e intuitiva, y es una herramienta ideal para las personas que están aprendiendo a programar, o para las personas que tienen una inclinación más visual.
La sección GML Visual del manual se divide en los siguientes apartados:
GML Visual es una herramienta de scripting visual que puede utilizarse para crear tus juegos sin tener que escribir ningún código. Esto no quiere decir que no estés programando código cuando utilizas GML Visual, ya que lo haces, sólo que tu código se crea y se presenta de forma visual utilizando "bloques" de acciones en lugar de texto. Las acciones son simplesexpresiones osentencias que pueden "encadenarse" para que una instancia de un object haga algo cuando se coloca en un room. Por ejemplo, podrías tener una acción en un Evento de Creación para mover una instancia en una dirección aleatoria, y otra acción en un Evento de Colisión para hacer que rebote en las cosas con las que colisiona (para más información sobre los diferentes eventos disponibles y cómo funcionan juntos, ver la sección de Eventos de Objeto).
-
La imagen de arriba muestra un típico object abierto en un espacio de trabajo para ser editado. Tiene una ventana "Evento" y una ventana "Código" encadenadas, y en la ventana de código se puede ver donde hemos construido nuestro GML Visual. Veamos un poco más de cerca esta ventana y veamos qué opciones están disponibles para nosotros:
-
A continuación puede encontrar más información sobre cada una de las secciones mostradas:
+
Resumen de {GML_Visual}
+
GML Visual es una herramienta de scripting visual que puede utilizarse para crear tus juegos sin tener que escribir ningún código. Esto no quiere decir que no estés programando código cuando utilizas GML GML Visual, ya que lo haces, sólo que tu código se crea y se presenta de forma visual utilizando "bloques" de acciones en lugar de texto. Las acciones son simplesexpresiones osentencias que pueden "encadenarse" para que una instancia de un object haga algo cuando se coloca en un room. Por ejemplo, podrías tener una acción en un Evento de Creación para mover una instancia en una dirección aleatoria, y otra acción en un Evento de Colisión para hacer que rebote en las cosas con las que colisiona (para más información sobre los diferentes eventos disponibles y cómo funcionan juntos, ver la sección de Eventos de Objeto).
+
La imagen de arriba muestra un típico object abierto en un espacio de trabajo para ser editado. Tiene una ventana "Evento" y una ventana "Código" encadenadas, y en la ventana de código se puede ver donde hemos construido nuestro GML Visual. Veamos un poco más de cerca esta ventana y veamos qué opciones están disponibles para nosotros:
+
A continuación puede encontrar más información sobre cada una de las secciones mostradas:
Cuando añades un evento a tu object, se abre una nueva pestaña en la ventana de código para mostrar el contenido de ese evento. Puedes añadir varios eventos y tener varias pestañas abiertas al mismo tiempo, cambiando entre ellas y editándolas como quieras. También puedes cerrar las pestañas en cualquier momento para reducir el desorden (si seleccionas de nuevo el evento en object se volverán a abrir), y puedes hacer clic en y arrastrar la pestaña fuera de la ventana a su propia ventana de código, en cuyo caso el cierre de object o de la ventana de código no cerrará la nueva ventana. Las pestañas también se pueden arrastrar a la izquierda o a la derecha para reordenarlas.
+
Cuando añades un evento a tu object, se abre una nueva pestaña en la ventana de código para mostrar el contenido de ese evento. Puedes añadir varios eventos y tener varias pestañas abiertas al mismo tiempo, cambiando entre ellas y editándolas como quieras. También puedes cerrar las pestañas en cualquier momento para reducir el desorden (si seleccionas de nuevo el evento en object se volverán a abrir), y puedes hacer clic en y arrastrar la pestaña fuera de la ventana a su propia ventana de código, en cuyo caso el cierre de object o de la ventana de código no cerrará la nueva ventana. Las pestañas también se pueden arrastrar a la izquierda o a la derecha para reordenarlas.
Esta área workspace es donde se arrastran las acciones desde la caja de herramientas para crear su código GML Visual. Haga clic en en una acción y arrástrela a esta área para añadirla a la lista de acciones y editarla. La mayoría de las acciones tienen variosargumentos (parámetros) que puede establecer, y la mayoría también tomará palabras clave, variables de instancia, o incluso funciones GML - por ejemplo, puede llamar a la acción Establecer dirección y utilizar la función GMLrandom(val) para establecer una dirección aleatoria.
+
Esta área workspace es donde se arrastran las acciones desde la caja de herramientas para crear su código GML Visual. Haga clic en en una acción y arrástrela a esta área para añadirla a la lista de acciones y editarla. La mayoría de las acciones tienen variosargumentos (parámetros) que puede establecer, y la mayoría también tomará palabras clave, variables de instancia, o incluso funciones GML - por ejemplo, puede llamar a la acción Establecer dirección y utilizar la función GMLrandom(val) para establecer una dirección aleatoria.
A medida que añada bloques de acción a su código, se "encadenarán" visualmente para indicar el orden en que se producirán las diferentes acciones, aunque la forma en que se cree esta cadena dependerá del bloque inicial que se haya utilizado. Por ejemplo, un bloque If Variable tendrá dos cadenas - una a los bloques que deben ser llamados si la condición que se comprueba es true y luego el siguiente bloque después de eso. Para obtener más información sobre la construcción de bloques de acción en el código, consulte las secciones vinculadas a continuación.
-
Mientras estás en el bloque de acciones workspace, puedes mantener pulsado el botón central del ratón para desplazarte y la rueda del ratón para desplazar la lista de acciones hacia arriba o hacia abajo. Si mantienes pulsado mientras mueves la rueda del ratón, la vista se desplazará hacia la izquierda/derecha, y si mantienes pulsado / y mueves la rueda del ratón, la vista se acercará y alejará, permitiéndote ver más de la workspace con las acciones. Puedes hacer clic en en cualquier acción de la lista de acciones de la izquierda para centrarte en esa acción, restableciendo el zoom y la posición. También puedes cambiar el tamaño de los bloques de acción moviendo el ratón hacia los bordes del bloque y luego -cuando el cursor cambie- arrastrando en la dirección que desees.
-
También puede hacer clic con el botón derecho del ratón en cualquier lugar de GML Visual workspace para que aparezca el menú RMB, que se explica en detalle aquí.
+
Mientras estás en el bloque de acciones workspace, puedes mantener pulsado el botón central del ratón para desplazarte y la rueda del ratón para desplazar la lista de acciones hacia arriba o hacia abajo. Si mantienes pulsado mientras mueves la rueda del ratón, la vista se desplazará hacia la izquierda/derecha, y si mantienes pulsado / y mueves la rueda del ratón, la vista se acercará y alejará, permitiéndote ver más de la workspace con las acciones. Puedes hacer clic en en cualquier acción de la lista de acciones de la izquierda para centrarte en esa acción, restableciendo el zoom y la posición. También puedes cambiar el tamaño de los bloques de acción moviendo el ratón hacia los bordes del bloque y luego -cuando el cursor cambie- arrastrando en la dirección que desees.
+
También puede hacer clic con el botón derecho del ratón en cualquier lugar de GML Visual workspace para que aparezca el menú RMB, que se explica en detalle aquí.
La caja de herramientas es donde se almacenan todas las acciones de GML Visual, con diferentes secciones que contienen colecciones (bibliotecas) de acciones que son similares o están relacionadas. Cada colección de acciones está relacionada con un tema específico o un propósito común y basta con hacer clic en y arrastrar la acción requerida de la caja de herramientas al bloque de acciones workspace para añadirla al evento actual. Para simplificar las cosas -ya que hay muchas acciones- puedes utilizar la barra de "Búsqueda" de la parte superior para buscar una acción específica o para filtrar las acciones visibles (escribe "dibujar", por ejemplo, para obtener todas las acciones de dibujo), y también puedes hacer clic en y arrastrar los iconos de cualquier biblioteca a tu carpeta de favoritos para mantener juntas las acciones más utilizadas. Esto es especialmente útil si hay ciertas cosas que vas a hacer una y otra vez. La carpeta de favoritos puede borrarse haciendo clic en el pequeño icono de la "papelera".
-
Para ver una lista completa de las acciones disponibles, así como los argumentos que toman y cómo se pueden encadenar, consulte la sección de referencia visual de GML.
-
Puede utilizar el botón derecho del ratón sobre cualquier acción de la caja de herramientas para abrir el siguiente menú:
+
La caja de herramientas es donde se almacenan todas las acciones de GML Visual, con diferentes secciones que contienen colecciones (bibliotecas) de acciones que son similares o están relacionadas. Cada colección de acciones está relacionada con un tema específico o un propósito común y basta con hacer clic en y arrastrar la acción requerida de la caja de herramientas al bloque de acciones workspace para añadirla al evento actual. Para simplificar las cosas -ya que hay muchas acciones- puedes utilizar la barra de "Búsqueda" de la parte superior para buscar una acción específica o para filtrar las acciones visibles (escribe "dibujar", por ejemplo, para obtener todas las acciones de dibujo), y también puedes hacer clic en y arrastrar los iconos de cualquier biblioteca a tu carpeta de favoritos para mantener juntas las acciones más utilizadas. Esto es especialmente útil si hay ciertas cosas que vas a hacer una y otra vez. La carpeta de favoritos puede borrarse haciendo clic en el pequeño icono de la "papelera".
+
Para ver una lista completa de las acciones disponibles, así como los argumentos que toman y cómo se pueden encadenar, consulte la sección de Referencia visual de GML.
+
Puede utilizar el botón derecho del ratón sobre cualquier acción de la caja de herramientas para abrir el siguiente menú:
Aquí tienes las siguientes opciones:
@@ -52,7 +52,7 @@
Resumenvisual de GML
-
+
Las siguientes páginas profundizan un poco más en cómo construir el código de los bloques de acción, así como en cómo establecer el alcance de las acciones para que afecten a diferentes cosas dentro de tu proyecto y otros detalles importantes:
Esta sección del manual enumera todas las diferentes acciones disponibles cuando se utiliza GML Visual para programar su juego. A continuación puedes encontrar cada una de las diferentes bibliotecas de acciones disponibles en objectGML Visual Toolbox, y dentro de cada sección de la biblioteca se explican las acciones individuales, junto con ejemplos de uso.
+
Referencia de GML Visual
+
Esta sección del manual enumera todas las diferentes acciones disponibles cuando se utiliza GML Visual para programar su juego. A continuación puedes encontrar cada una de las diferentes bibliotecas de acciones disponibles en objectGML Visual Visual Toolbox, y dentro de cada sección de la biblioteca se explican las acciones individuales, junto con ejemplos de uso.
Aparte de las bibliotecas de acciones anteriores, también tienes una biblioteca de favoritos -que es una sección especial de la caja de herramientas donde puedes arrastrar acciones y así tener a mano todas las que más utilizas- y también está la biblioteca de acciones utilizadas recientemente, que contendrá las últimas 5 acciones que has utilizado:
-
-
-
+
+
+
Acciones multijugador en retroceso
Las acciones de retroceso se utilizan para hacer juegos multijugador utilizando el sistema de retroceso de GameMaker.
Puedes usar GameMaker Language para programar tus juegos de dos maneras diferentes: colocando bloques para "escribir" código visualmente, o escribiendo código manualmente.
La primera opción, GML Visual, es la más adecuada para los principiantes y los aficionados que quieren empezar a crear sus propios juegos rápidamente.
-
La segunda opción, Código GML, le permite aprovechar toda la potencia de GameMaker Language escribiendo su código manualmente.
-
Mientras que GML Visual es más fácil de empezar, GML Code sigue siendo un lenguaje de programación fácil de usar con potentes características(Funciones, Métodos, Estructuras y Constructores, etc.).
+
La segunda opción, GML Code, le permite aprovechar toda la potencia de GameMaker Language escribiendo su código manualmente.
+
Mientras que GML GML Visual es más fácil de empezar, GML Code sigue siendo un lenguaje de programación fácil de usar con potentes características (Funciones, Métodos, Estructuras y constructores, etc.).
Creación de scripts visuales/de código
-
Se le pide que elija entre GML Code y GML Visual al crear un nuevo evento Object, un nuevo Scriptasset, o cualquier otra cosa que resulte en la creación de un script:
-
Además de poder elegir entre GML Code y GML Visual, esta ventana contiene dos casillas de verificación:
+
Se le pide que elija entre GML Code y GML Visual Visual al crear un nuevo evento Object, un nuevo Scriptasset, o cualquier otra cosa que resulte en la creación de un script:
+
Además de poder elegir entre GML Code y GML Visual, esta ventana contiene dos casillas de verificación:
No preguntar de nuevo paraeste proyecto: Cuando esta opción está activada, establece la Opción de Juego "Lenguaje de scripting por defecto" a su nueva selección, por lo que no se le pide que elija de nuevo para el proyecto actual.
Nopreguntar nunca más: Cuando esta opción está activada, establece la Preferencia "Lenguaje de scripting por defecto" con su nueva selección, de modo que nunca se le pedirá que elija de nuevo, para ningún proyecto.
@@ -27,29 +27,29 @@
Creación de scripts visuales/de código
GML Visual
Este es el método de Scripting Visual de GameMaker que utiliza bloques de acciones que se encadenan para crear la lógica de su juego. Las siguientes secciones explican cómo utilizar estas acciones:
Escriba el código de GML utilizando funciones, variables y otras construcciones de codificación, y cree la lógica de su juego. Las siguientes secciones explican cómo codificar utilizando GML:
\ No newline at end of file
diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm b/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm
index 9fba57eea..e164eaa9b 100644
--- a/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm
+++ b/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm
@@ -49,7 +49,7 @@
Creación de matrices
NOTA: La exportación de HTML5 es la excepción a la regla anterior, y cuando se dirija a ella deberá inicializar las matrices en orden consecutivo de 0 en adelante.
También puede utilizar la función GMLarray_create() para inicializar un array con un tamaño fijo, e incluso puedes crear arrays "vacíos" sin valores, por ejemplo:
my_array = [];
-
Esto le dice a GameMaker que la variable "my_array" es un array, y que puede añadirle valores en cualquier momento en el futuro. Sin embargo, si intentas acceder a un valor en un array vacío, obtendrás un error.
+
Esto le dice a GameMaker que la variable "my_array" es un array, y que puede añadirle valores en cualquier momento en el futuro. Sin embargo, si intentas acceder a un valor en un array vacío, obtendrás un error.
Si ya sabes qué elementos quieres poner en la matriz, puedes añadir valores separados por comas entre los paréntesis al declarar la matriz:
my_array = ["Steve", 36, "ST-3V3 - Steve Street"];
diff --git a/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm b/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm
index 0de40e14c..ec55e3d4e 100644
--- a/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm
+++ b/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm
@@ -3,8 +3,8 @@
- Visión general del código GML
-
+ Resumen de {GML_Code}
+
@@ -14,17 +14,17 @@
-
Visión generaldel código GML
-
Esta sección del manual contiene toda la información necesaria para entender y utilizar Código GML. Las funciones de runtime en este lenguaje se pueden utilizar para crear sus juegos y se añaden en objects desde el Editor de Objetosaunque también se puede utilizar junto con GMLVisual. A continuación puedes ver una imagen típica de un object con el editor de código abierto en un evento:
-
Cada evento tiene su propia pestaña en el editor y puede añadir, editar o eliminar código de ellos en cualquier momento (para más información sobre los eventos, consulte Eventos de objetos). El código en sí debe tener una estructura básica y puede contener índices de recursos, variables, funciones, expresiones, palabras clave, etc., todo lo cual se explica en las secciones siguientes. Si es un principiante en la programación o en la realización de la switch desde GML Visual, se recomienda que empiece con la página sobreEstructura básica del código y luego lea todas las demás páginas de esta sección, probando el código de cada una dentro de GameMaker mismo.
-
Puede utilizar Feather para completar el código de forma inteligente e informar de los errores en su GML Code scripts.
-
-
Fundamentos del código GML
+
Resumen de GML Code
+
Esta sección del manual contiene toda la información necesaria para entender y utilizar GML Code. Las funciones de runtime en este lenguaje se pueden utilizar para crear sus juegos y se añaden en objects desde el Editor de Objetosaunque también se puede utilizar junto con GMLGML Visual. A continuación puedes ver una imagen típica de un object con el editor de código abierto en un evento:
+
Cada evento tiene su propia pestaña en el editor y puede añadir, editar o eliminar código de ellos en cualquier momento (para más información sobre los eventos, consulte Eventos de objetos). El código en sí debe tener una estructura básica y puede contener índices de recursos, variables, funciones, expresiones, palabras clave, etc., todo lo cual se explica en las secciones siguientes. Si es un principiante en la programación o en la realización de la switch desde GML Visual, se recomienda que empiece con la página sobreEstructura básica del código y luego lea todas las demás páginas de esta sección, probando el código de cada una dentro de GameMaker mismo.
+
Puede utilizar Feather para completar el código de forma inteligente e informar de los errores en su GML Codescripts.
Esta variable contiene una matriz que se utiliza junto con la variable de sólo lectura argument_count en funciones o métodos descript. Cada posición de la matriz contiene un valor de entrada para la función y se utiliza específicamente con funciones de argumento variable .
Tenga en cuenta que también hay una serie de variables independientes de ámbito global que también se pueden utilizar en las funciones definidas por el usuario para hacer referencia a los diferentes argumentos de entrada: argument0, argument1, argument2, etc... hasta argument15.
NOTA: Esto ya no es estrictamente necesario y se proporciona como soporte de legado más que nada. Todas las funciones definidas por el usuario aceptarán argumentos variables, y cualquier argumento que se pase a una función que no forme parte de las entradas con nombre se inicializará a indefinido por defecto, lo que puede comprobarse mediante la función is_undefined().
Esta variable de sólo lectura devuelve el número de "argumentos" que se pasan a una función de script o a un method. Normalmente se utiliza junto con una matriz de argumentos (argument[0...15]) para permitir variar los argumentos de entrada de una función determinada.
NOTA: Esto ya no es estrictamente necesario y se proporciona como soporte de legado más que nada. Todas las funciones definidas por el usuario aceptarán argumentos variables, y cualquier argumento que se pase a una función que no forme parte de las entradas con nombre se inicializará a indefinido por defecto, lo que puede comprobarse mediante la función is_undefined().
Esta variable es de alcance global y se utiliza para mantener un mapa DS cuando se utiliza en los Eventos Asíncronos, y -1 en todas las demás ocasiones. El contenido real del mapa DS dependerá del tipo de llamada de retorno del evento asíncrono, así como de la función que se utilizó para desencadenar el evento, así que consulte las páginas individuales de esos eventos para obtener detalles completos de todos los posibles contenidos del mapa DS.
Esta variable es de alcance global y se utiliza para mantener un valor numérico que normalmente se utiliza para la salud del jugador. Esta variable sólo está diseñado para apoyar a los proyectos de legado de las versiones anteriores de GameMaker y debe no debe utilizarse en proyectos nuevos ya que puede ser obsoleta en el futuro.
Esta variable es de alcance global y se utiliza para mantener un valor numérico que normalmente se utiliza para las vidas de los jugadores. Esta variable sólo está diseñado para apoyar a los proyectos de legado de las versiones anteriores de GameMaker y debe no debe utilizarse en proyectos nuevos ya que puede ser obsoleta en el futuro.
Esta variable es de alcance global y se utiliza para mantener un valor numérico que normalmente se utiliza para la puntuación del jugador. Esta variable sólo está diseñada para soportar proyectos heredados de versiones anteriores de GameMaker y debe no debe utilizarse en proyectos nuevos ya que puede ser obsoleta en el futuro.
Por ejemplo, digamos que usted define la siguiente macro "total_weapons":
#macro total_weapons 10
Sintaxis de la macro...
-
La sintaxis mostrada arriba debe utilizarse correctamente para definir las macros. No puede utilizar un signo de igualdad (como en las variables) ni poner un punto y coma al final (como en una sentencia normal). Si lo hace, su definición de macro no será válida.
-
- Por ejemplo, esta no es la forma correcta de definir una macro:
-
- #macro total_armas = 10;
-
+
La sintaxis mostrada arriba debe utilizarse correctamente para definir las macros. No puede utilizar un signo de igualdad (como en las variables) ni poner un punto y coma al final (como en una sentencia normal). Si lo hace, su definición de macro no será válida.
+
+ Por ejemplo, esta no es la forma correcta de definir una macro:
+
+ #macro total_armas = 10;
+
Quitando el signo igual y los dos puntos se convierte en una definición de macro válida.
A continuación, puede utilizar esto en su código de la siguiente manera:
@@ -115,7 +115,7 @@
Constantes incorporadas
pointer_null
-
Esta constante indica que el puntero no apunta a nada significativo (lo mismo queNULL en C++ o null en C#).
+
Esta constante indica que el puntero no apunta a nada significativo (lo mismo queNULL en C++ o null en C#).
Este valor es falso.
@@ -124,7 +124,7 @@
Constantes incorporadas
undefined
-
Esta constante se devuelve cuando una función tiene que devolver algo pero no tiene un valor apropiado o "correcto" que devolver.
+
Esta constante se devuelve cuando una función tiene que devolver algo pero no tiene un valor apropiado o "correcto" que devolver.
Este valor es falso.
Esta función se puede utilizar para obtener el valor en un punto específico en el tiempo de una estructura de canal. Se suministra el puntero struct para el canal (tal como lo devuelve la función animcurve_get_channel()o como se devuelve en animation curvestruct desde la función animcurve_get()) y la posición "x" (tiempo) a lo largo del canal de la curva a evaluar. Esta posición debe estar entre 0 y 1, y la función devolverá el valor de la curva en esa posición, o devolverá 0 si el canal struct suministrado no es válido.
Esta función permite crear una nueva estructura de canal animation curve. Un canal struct tiene las siguientes variables:
@@ -82,11 +82,11 @@
animcurve_channel_new
-
+
Por defecto, cuando se crea un nuevo canal struct, la variable "nombre" será un string vacío, el "tipo" será animcurvetype_linear y las "iteraciones" serán 16. Todas estas variables pueden ser ajustadas a los valores que usted desee (tenga en cuenta que el valor de "iteraciones" no tiene efecto en los tipos de curva lineal). Una vez creada la curva, hay que añadir puntos a la misma, lo que se hace añadiendo diferentes puntos structs a la matriz de"puntos". Estos puntos structs pueden crearse utilizando la función animcurve_point_new().
Esta función creará una estructuraanimation curve vacía, lista para que la rellenes con los datos de los canales. La función devolverá un puntero a la estructura struct y ésta se utilizará para añadir canales y otros datos a la estructura animation curve. También puede suministrarla a funciones como animcurve_get() para obtener posteriormente los datos de la curva.
Cuando se utiliza esta función, el struct creado no tendrá datos en él, y para utilizarlo se debe añadir al menos un canal y el canal debe tener puntos añadidos. Para añadir un canal, vea la función animcurve_channel_new()y para añadir puntos al canal, vea la función animcurve_point_new(). Además, puede dar un nombre a animation curvestruct estableciendo la variable "name" (como se muestra en el código de ejemplo, abajo). Los canales añadidos a un nuevo animation curve deben añadirse como una matriz, donde cada elemento de la matriz hace referencia a un canal struct, y los puntos de un canal también deben añadirse como una matriz, donde cada elemento de la matriz hace referencia a un punto struct.
Ten en cuenta que los animation curves creados de esta manera deben ser eliminados cuando ya no se necesiten, ya que de lo contrario ocuparán espacio en la memoria, lo que puede provocar una fuga de memoria, ralentizando y eventualmente colapsando tu juego. Puedes eliminar un animation curve cuando ya no lo necesites utilizando la función animcurve_destroy(). No es necesario limpiar los datos de los canales o de los puntos dentro de la curva, ya que esto lo hará el recolector de basura automáticamente cuando se destruya la curva.
Esta función puede utilizarse para destruir cualquier animation curves que se haya creado previamente con la función animcurve_create(). Al llamar a esta función se eliminará el animation curve de la memoria y se limpiarán también los canales o puntos que contenga (estos nunca necesitan ser limpiados manualmente). Tenga en cuenta que no puede destruir ningún animation curves creado en el navegador asset, sólo los creados en runtime.
Esta función devolverá una estructura que contiene todos los datos del animation curve dado. Usted proporciona el ID de animation curveasset (como se define en el navegador Asset ), y la función devolverá un struct con las siguientes variables:
Al igual que en el caso de los canales, los puntos de un mismo canal se almacenan como structs en una matriz, donde cada elemento de la matriz es un único punto struct. El punto struct se explica en esta página.
Tenga en cuenta que si la función falla (por ejemplo, la Curva de Animación dada asset no existe) entonces la función devolverá -1.
Esta función devolverá la estructura que contiene los datos del canal especificado en un animation curveasset. Usted suministra el ID de animation curve o struct así como el nombre o índice del canal, y la función devolverá un struct con el siguiente formato:
@@ -51,7 +51,7 @@
animcurve_get_channel
-
+
El ID de animation curve es el nombre del animation curve tal y como se definió en el navegador Asset, o el puntero struct devuelto por la función animcurve_create(). El nombre del canal es un string que se refiere al canal tal y como fue definido en la Curva de Animación asset, o puede suministrar un valor de índice, que va de 0 a n, donde n es el último canal de la curva asset (por ejemplo: si un animation curve tiene 4 canales, serán indexados de 0 a 3). Tenga en cuenta que pasar un valor de índice requerirá menos procesamiento que pasar un nombre de canal. Si la función falla (es decir, no existe ningún canal con el nombre o el índice dado), obtendrá un error.
Los puntos de un mismo canal se almacenan como structs en una matriz, donde cada elemento de la matriz es un único punto struct. El punto struct tiene las siguientes variables:
Esta función devolverá el valor del índice para cualquier canal animation curve dado. Usted suministra el ID de animation curve o struct, donde el ID de la curva es el nombre del animation curve tal y como fue definido en el navegador Asset, o el puntero struct devuelto por la función animcurve_create(). A continuación, se proporciona el nombre del canal, como string, y la función devolverá el valor del índice asociado a ese canal. Tenga en cuenta que si la curva o el canal no existen, obtendrá un error.
Esta función puede utilizarse para crear una nueva estructura de puntos que se añadirá a un canal de animation curve. Cuando se crea una estructura de puntos struct está vacía y es necesario establecer las siguientes variables para generar los datos de los puntos:
@@ -47,7 +47,7 @@
animcurve_point_new
Cada punto struct que cree debe añadirse a un array y éste es el array que se añade a la variable "channels" del canal animation curvestruct (como se muestra en el ejemplo siguiente).
Con esta función puede añadir una o más etiquetas strings a cualquier asset del navegador asset. Se suministra el nombre asset (como string) o su índice asset, así como una sola etiqueta string o una matriz donde cada elemento es una sola etiqueta string. Si suministra un valor de índice asset, tendrá que suministrar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos puede tener el mismo índice, aunque no puedan tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
@@ -75,7 +75,7 @@
asset_add_tags
Si la función consigue añadir la(s) etiqueta(s) devolverá true de lo contrario devolverá false.
Con esta función puede borrar todas las etiquetas presentes en cualquier asset desde el navegador asset. Se suministra el nombre de asset (como string) o su índice asset, y si se suministra un valor de índice asset, será necesario suministrar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos pueden tener el mismo índice, aunque no puedan tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
Puede utilizar esta función para obtener el índice de identificación único de un juego asset a partir de su nombre. Si no se encuentra el asset, la función devolverá un valor de -1, de lo contrario devolverá el id de índice único para el asset que se está comprobando. Este identificador se puede utilizar en otras funciones como cualquier otro valor de índice, como el sprite_index o el path_indexpor ejemplo. Por favor, tenga en cuenta que aunque esta función puede usarse para referenciar assets desde strings (ver ejemplo más abajo) siempre debe asegurarse de que el asset existe antes de usarlo, de lo contrario puede obtener errores que bloquearán su juego.
Con esta función puede recuperar todas las etiquetas asignadas a un asset desde el navegador Asset. Se proporciona el nombre asset (como string) o su índice asset, y la función devolverá una matriz de etiquetas para ese asset. Si no se encuentra ninguna etiqueta o hay un error (es decir, el nombre string dado no existe), la matriz devuelta estará vacía. Si proporciona un valor de índice asset, entonces tendrá que proporcionar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos puede tener el mismo índice, aunque no pueden tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
Con esta función se puede obtener el tipo de asset al que se hace referencia a partir de su nombre (un string). Se devolverá una de las constantes que se indican a continuación.
Con esta función puede comprobar si una o más etiquetas strings están asignadas a cualquier asset del navegador asset. Se suministra el nombre asset (como string) o su índice asset, así como una sola etiqueta string o un array donde cada elemento es una sola etiqueta string. Si suministra un valor de índice asset, tendrá que suministrar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos puede tener el mismo índice, aunque no puedan tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
Con esta función puede comprobar si una o más etiquetas strings están asignadas a cualquier asset del navegador asset. Se suministra el nombre asset (como string) o su índice asset, así como una sola etiqueta string o un array donde cada elemento es una sola etiqueta string. Si suministra un valor de índice asset, tendrá que suministrar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos puede tener el mismo índice, aunque no puedan tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
Con esta función puede eliminar una o más etiquetas strings a cualquier asset del navegador asset. Se suministra el nombre asset (como string) o su índice asset, así como una sola etiqueta string o un array donde cada elemento es una sola etiqueta string. Si suministra un valor de índice asset, tendrá que suministrar el argumento opcional de tipo asset (una constante), ya que assets de diferentes tipos puede tener el mismo índice, aunque no puedan tener el mismo nombre. Los tipos disponibles de asset se enumeran en la siguiente tabla:
Con esta función puede obtener todos los assets de un tipo determinado que tengan asignadas las etiquetas dadas. Se suministra una sola etiqueta (como string) o una matriz, donde cada elemento de la matriz es una etiqueta (como string), así como el tipo de asset a comprobar. el tipo de asset debe ser una de las siguientes constantes:
@@ -77,7 +77,7 @@
tag_get_asset_ids
La función devolverá una matriz, donde cada elemento de la matriz será un único valor de índice de asset. Si no hay ningún assets del tipo que tenga la(s) etiqueta(s) dada(s), se devolverá un array vacío.
Con esta función puede recuperar los nombres de todos los assets a los que se ha asignado la etiqueta o etiquetas dadas. Puede proporcionar una sola etiqueta string o una matriz, donde cada elemento de la matriz es una etiqueta string. La función devolverá una matriz en la que cada entrada es el nombre (como string) del asset con la etiqueta dada. Si necesita el índice único de asset, puede utilizar la función asset_get_index() junto con el nombre devuelto. Si no hay assets con la(s) etiqueta(s) dada(s), o si hay un error (por ejemplo: las etiquetas dadas no existen), entonces se devolverá un array vacío.
Una vez que se ha creado un queue, puede utilizar el índice de queue devuelto igual que el índice de sonido de cualquier sonido normal para reproducirlo, pausarlo, reiniciarlo o cambiar su ganancia y tono. Lo único que no puedes hacer es obtener la longitud de la pista o establecer la posición de la misma, pero aparte de eso, un audio queue puede ser utilizado como cualquier otro sonido. También debes tener en cuenta que algunas de las funciones de audio queue también activarán un Evento Asíncrono de Reproducción de Audio.
-
Audio buffers también le permitirá grabar sonido desde cualquiera de las fuentes disponibles (como micrófonos o el SO), que luego puede ser puesto en cola y transmitido usando las funciones anteriores (por ejemplo). La grabación de audio activará un Evento Asíncrono de Grabación de Audio que contendrá información específica sobre lo que se está grabando.
-
+
Audio buffers también le permitirá grabar sonido desde cualquiera de las fuentes disponibles (como micrófonos o el SO), que luego puede ser puesto en cola y transmitido usando las funciones anteriores (por ejemplo). La grabación de audio activará un Evento Asíncrono de Grabación de Audio que contendrá información específica sobre lo que se está grabando.
+
Para la grabación de audio, están disponibles las siguientes funciones:
Con esta función puedes crear un nuevo sonido a partir del contenido de un buffer. El buffer habrá sido creado previamente (ver las funciones del buffer para más detalles sobre cómo hacerlo), y se le habrán añadido o cargado datos. A continuación, se pasa a esta función con el formato de los datos (actualmente sólo se admite buffer_u8 o buffer_s16 ), la frecuencia de muestreo (que puede estar entre 1000hz y 48000hz), y un desplazamiento en el buffer para obtener los datos. También es necesario proporcionar el número de muestras en buffer y los canales que requiere el sonido. Estos canales están definidos por una de las siguientes constantes:
@@ -47,7 +47,7 @@
audio_create_buffer_sound
Tenga en cuenta que después de haber creado un sonido, debe liberar el índice de puntero asociado a él cuando ya no sea necesario utilizando la función audio_free_buffer_sound(). Si no hace esto y luego reasigna la variable o cambia rooms etc... el índice del sonido se perderá y tendrá una fuga de memoria. También tenga en cuenta que no puede borrar el buffer si se ha creado algún sonido a partir de él y el sonido no ha sido liberado primero. Por lo tanto, primero debe liberar el sonido (o los sonidos) y luego borrar el buffer. También vale la pena señalar que añadir cualquier cosa a buffer, o cambiar el tamaño de buffer, después de que se haya creado un sonido a partir de él dará resultados inesperados y no se recomienda - una vez que haya comenzado a crear sonidos a partir de cualquier buffer no debe manipularlo de ninguna otra manera después.
Esta función prepara un bufferqueue para el audio. Se pasa el formato de datos (actualmente sólo se admite buffer_u8 o buffer_s16 ), la frecuencia de muestreo (que puede estar entre 1000hz y 48000hz), y los canales que requiere el audio a partir de una de las constantes listadas a continuación:
@@ -37,7 +37,7 @@
audio_create_play_queue
-
+
Tenga en cuenta que debe liberar cualquier audio queues creado con esta función cuando ya no sea necesario para evitar fugas de memoria utilizando la función audio_free_play_queue().
Con esta función puede liberar el valor del índice del puntero asociado al ID del sonido. Los sonidos liberados no estarán disponibles para ser reproducidos, y si se están reproduciendo varias instancias del sonido, todas se detendrán. Tenga en cuenta que antes de poder eliminar
el propio buffer, debe liberar primero todos los ID de sonido asociados a él.
Esta función se utiliza para liberar la memoria asociada al audio dado queue. El índice queue es el valor devuelto cuando se creó el queue utilizando la función audio_create_play_queue()y esta función debe ser llamada cuando el queue ya no sea necesario para evitar fugas de memoria. Al liberar el queue se detendrá cualquier sonido que se esté reproduciendo, y no se puede eliminar el buffer desde el que se está transmitiendo un sonido hasta que se haya liberado el queue al que está asignado. Esta función activará un Evento Asíncrono de Reproducción de Audio, y en este evento se creará un mapa DS especial en la variable async_load con los siguientes pares clave/valor:
"queue_id" - el queue que ha terminado de reproducir datos
Esta función devolverá el número de fuentes de grabación de audio (como micrófonos, etc...) actualmente disponibles para su juego. Así, si tiene un valor de retorno de, por ejemplo, cuatro, entonces tendrá entrada de audio en las fuentes 0, 1, 2 y 3, siendo uno de estos valores el que utilice para empezar a grabar desde la función audio_start_recording(). Este valor puede cambiar en cualquier momento a medida que se conectan/desconectan micrófonos u otras fuentes de entrada al dispositivo. Tenga en cuenta que puede utilizar la función audio_get_recorder_info() para obtener información sobre cada dispositivo conectado.
IMPORTANTE Esta función siempre devolverá 1 en el objetivo Opera GX.
Esta función devolverá un Mapa DS con información sobre el índice de la fuente de grabación dada. Puede averiguar cuántas fuentes de grabación están disponibles utilizando la función audio_get_recorder_count()y el mapa devuelto contendrá los siguientes pares clave/valor:
"nombre" - un nombre para describir el dispositivo
@@ -28,7 +28,7 @@
audio_get_recorder_info
NOTALa mayoría de las plataformas admiten la grabación de audio de alguna forma, pero eso no significa que todos los dispositivos lo permitan, aunque la plataforma lo haga, por lo que siempre debe comprobar que la función audio_get_recorder_count() devuelva un valor superior a 0 para verificar que los dispositivos de grabación están disponibles antes de utilizar el resto de las funciones de grabación.
Esta función agregará los datos de un buffer en el audio queue que usted creó previamente usando la función audio_create_play_queue(). Se especifica el índice de queue al que se va a añadir, y el ID de buffer del que se van a obtener los datos, así como la posición (offset) dentro de buffer y el número de bytes que se van a añadir. Una vez que haya añadido audio de un buffer a un queue, el buffer no podrá ser eliminado hasta que haya liberado primero el queue utilizando la función audio_free_play_queue()y las propiedades de buffer deben coincidir con las del queue al que está añadiendo el sonido.
Esta función iniciará la grabación de audio desde la fuente de grabación indexada. Puede obtener el número de fuentes de grabación utilizando la función audio_get_recorder_count(), y una vez que comience a grabar el audio se almacenará en un buffer temporal y comenzará a disparar un Evento Asíncrono de Grabación de Audio. Este evento se dispara a cada paso que se produce la grabación y creará el mapa especial DS en la variable async_load con los siguientes pares clave/valor:
"buffer_id" - el ID del buffer temporal que puede utilizar para recuperar los datos de audio
@@ -26,7 +26,7 @@
audio_start_recording
NOTALa mayoría de las plataformas admiten la grabación de audio de alguna forma, pero eso no significa que todos los dispositivos lo permitan, aunque la plataforma lo haga, por lo que siempre debe comprobar que la función audio_get_recorder_count() devuelva un valor superior a 0 para verificar que los dispositivos de grabación están disponibles antes de utilizar el resto de las funciones de grabación.
Esta función detendrá la grabación en el canal de la grabadora dado (el índice del canal se devuelve cuando se llama a la función audio_start_recording()). Cuando se detiene la grabación, no se desencadenarán más eventos asíncronos de grabación de audio para el canal de la grabadora dado, por lo que normalmente se utilizaría esta función en el evento asíncrono real para asegurarse de que se han capturado todos los datos.
NOTALa mayoría de las plataformas admiten la grabación de audio de alguna forma, pero eso no significa que todos los dispositivos lo permitan, aunque la plataforma lo haga, por lo que siempre debe comprobar que la función audio_get_recorder_count() devuelva un valor superior a 0 para verificar que los dispositivos de grabación están disponibles antes de utilizar el resto de las funciones de grabación.
Esta función devuelve si un emisor de audio existe (true) o no (false). Tenga en cuenta que si el índice que busca no ha sido inicializado previamente, esta función causará un error ya que está buscando índices inexistentes.
Con esta función puedes establecer la distancia de caída de un emisor. Se trata de la distancia a la que debe estar el emisor antes de que el sonido "caiga" a un volumen de 0. El valor por defecto es 100, pero tenga cuidado de no establecer un valor inferior a 1, ya que hará que cualquier sonido reproducido a través de este emisor sea inaudible para el oyente, sin embargo, cualquier otro valor hará que el sonido se desvanezca cuanto más lejos esté el emisor del oyente.
La forma en que se escuche el sonido dependerá de la referencia de decaimiento (que es la distancia por debajo de la cual el volumen de la fuente normalmente caería a la mitad) y del factor de decaimiento (que afecta al sonido más allá de la distancia de referencia de decaimiento solamente). El factor por defecto es normalmente 1, y el efecto de los diferentes valores de decaimiento dependerá del modelo elegido.
Para una guía completa de los diferentes modelos de decaimiento y cómo se utilizan estos valores, consulte la función audio_falloff_set_model().
Con esta función puedes eliminar de la memoria el emisor dado. Esto debe hacerse siempre que el emisor no vaya a ser utilizado más en el room o en el juego, es decir: en el Evento de Destrucción de la instancia o en el Evento de Finalización de la Sala, de lo contrario puedes terminar con una fuga de memoria que ralentizará y eventualmente bloqueará tu juego.
Esta función establece la ganancia máxima (volumen) del sonido. El volumen percibido para un sonido puede cambiar dependiendo del valor de caída y de la posición que tenga con respecto al oyente, pero al establecer la ganancia con esta función, el volumen total nunca superará el valor de ganancia especificado. La imagen siguiente ilustra cómo la ganancia afecta al volumen del emisor cuando el fall-off es mayor que 0:
Esta función cambiará el volumen del sonido mientras se está reproduciendo, así como todos los sonidos posteriores que se reproduzcan a través del emisor dado. Ten en cuenta que en algunas plataformas puedes tener una ganancia superior a 1, aunque un valor de 1 se considera "volumen máximo" y cualquier valor superior puede introducir recortes de audio o distorsión.
NOTAel volumen final también se verá influenciado por la ganancia de audio global que se haya establecido mediante la función audio_master_gain().
Esta función devuelve la ganancia actual (volumen) establecida para el emisor de audio dado, normalmente entre 0 y 1, donde 0 es silencio y 1 es volumen completo. Tenga en cuenta que en algunas plataformas puede tener una ganancia mayor que 1, aunque un valor de 1 se considera "volumen completo" y cualquier cosa mayor puede introducir recortes de audio.
Esta función devolverá los datos de la máscara de bits que definen los oyentes de audio de los que un emisor debe reproducir sonidos. Para más información, consulte la sección sobre oyentes de audio.
Esta función puede utilizarse para cambiar el tono de todos los sonidos emitidos por el emisor dado. Es un multiplicador de tono, en el sentido de que el valor de entrada multiplica el tono actual por esa cantidad, por lo que el valor por defecto de 1 es ningún cambio de tono, mientras que un valor de menos de 1 bajará el tono y mayor de 1 subirá el tono. Es mejor utilizar incrementos pequeños para esta función, ya que cualquier valor inferior a 0 o superior a 5 puede no ser audible de todos modos.
Los sonidos que ya se están reproduciendo en el emisor de audio no tienen que reiniciarse para que el cambio de tono sea audible. El cambio de tono se aplica inmediatamente.
Con esta función puedes cambiar la posición de un emisor de audio dentro del espacio de audio 3D. La posición afectará al sonido de diferentes maneras dependiendo de dónde se encuentre el oyente dentro del espacio de audio también (la posición por defecto es (0, 0, 0). Consulte audio_listener_position() para más información), por lo que, por ejemplo, si la posición del emisor se establece en (100, 0, 0) y el oyente actual está en (200, 0, 0), el audio transmitido desde el emisor aparecerá a la izquierda del campo de audio. La imagen siguiente muestra una representación visual de los emisores y sus posiciones relativas respecto al oyente:
Esta función puede utilizarse para establecer la máscara de bits de un emisor, de modo que todos los sonidos reproducidos a través del emisor se reproduzcan sólo desde los oyentes especificados. Se puede crear una máscara de bits utilizando la función audio_get_listener_info() y luego usando el bitwise or ("|") para crear una máscara personalizada con aquellos oyentes de los que se requiere que el sonido se reproduzca, y luego aplicar esta máscara personalizada al emisor. Esta máscara anulará la máscara por defecto o la que hayas establecido con la función audio_set_listener_mask().
Sintaxis:
-
audio_emitter_set_listener_mask(emitterID, mask);
+
audio_emitter_set_listener_mask(emitterID, mask);
diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm
index 5318ceabb..2b18cd67d 100644
--- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm
+++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm
@@ -3,7 +3,7 @@
- velocidad del emisor de audio
+ audio_emitter_velocity
@@ -14,11 +14,11 @@
-
velocidad del emisor de audio
+
audio_emitter_velocity
Esta función se puede utilizar para dar a un emisor efectos Doppler y simular el movimiento del audio basado en el vector que se resuelve desde las posiciones relativas x, y y z dadas. Si el emisor en sí no se va a mover nunca, normalmente no necesitarás establecer estos valores, pero, por ejemplo, si estás haciendo un juego de disparos con desplazamiento en el que los enemigos vienen de la derecha y se desplazan hacia la izquierda, deberías establecer esto para tener una velocidad de (hspeed, 0, 0) en el evento de creación de los enemigos (y actualizar el emisor de cada instancia en el evento de paso usando audio_emitter_position()) para dar a cualquier sonido emitido por las instancias enemigas el Doppler correcto al pasar por la instancia del jugador (que a su vez estaría usando la función audio_listener_position() para poner el oyente en la posición correcta).
Con esta función puedes reproducir cualquier recurso sonoro a través de un emisor, con cualquier cambio en la ganancia, posición, tono o velocidad del emisor que afecte a cómo el usuario oye el sonido final que se reproduce. Se proporciona el índice del emisor que se va a utilizar, el índice del sonido que se va a reproducir y, a continuación, se especifica si el sonido va a loop o no. A continuación, puede asignar una prioridad, que se utiliza para determinar cómo se tratan los sonidos cuando el número de sonidos que se reproducen supera el límite establecido por la función audio_channel_num(). Los sonidos de menor prioridad se detendrán en favor de los de mayor prioridad, y el valor de la prioridad puede ser cualquier número real (el valor real es arbitrario, y puede ser de 0 a 1 o de 0 a 100, ya que GameMaker les dará la misma prioridad). Tenga en cuenta que cuando se trata de la prioridad, cuanto mayor sea el número, mayor será la prioridad, de tal manera que un sonido con prioridad 100 será favorecido sobre un sonido con prioridad 1.
Esta función también devolverá un número de índice único para el sonido que se está reproduciendo, el cual puede ser almacenado en una variable para que puedas pausarlo o detenerlo con las funciones apropiadas. Esto significa que si tienes varias instancias del mismo sonido reproduciéndose en un momento dado, puedes apuntar a una sola instancia de ese sonido para tratarla con las funciones de audio.
Esta función cargará en memoria todos los sonidos marcados como pertenecientes al Grupo de Audio dado. La función devolverá true si se inicia la carga y false si el ID del grupo no es válido, o ya ha sido marcado para la carga. La función es asíncrona, por lo que tu juego continuará ejecutándose mientras se carga el audio en segundo plano. Esto significa que también lanzará un Evento de Carga/Guardado Asíncrono para informarle que todo el grupo ha sido cargado en la memoria y que los sonidos ya pueden ser utilizados.
Esta función devolverá un string que contiene el nombre del grupo de audio dado para su visualización o comprobación. Cuando se define un grupo de audio en las Opciones de Juego, se le da un "nombre" único que es realmente una constante para usar como valorde ID para el grupo. Todo lo que hace esta función es tomar el ID y devolver un string del nombre del ID que le diste.
Con esta función se puede hacer un fundido de entrada o salida de un grupo de sonidos durante un tiempo determinado, o se puede utilizar para ajustar la ganancia del grupo instantáneamente.
El tiempo se mide en milisegundos, y la función requiere que se introduzca un nivel final de ganancia para que el grupo haya alcanzado al final de ese tiempo. Esta ganancia puede estar entre 0 (silencio) y 1 (volumen total) y la escala es lineal, de forma que un valor de 0,5 sería la mitad del volumen. Para cambiar instantáneamente la ganancia, basta con poner el argumento del tiempo a 0. Ten en cuenta que en algunas plataformas puedes tener una ganancia mayor que 1, aunque un valor de 1 se considera "volumen completo" y cualquier cosa mayor puede introducir recortes de audio.
Esta función descargará en la memoria todos los sonidos marcados como pertenecientes al Grupo de Audio dado. La función devolverá true si se inicia la descarga y false si el ID del grupo no es válido, o ya ha sido marcado para su descarga. Tenga en cuenta que cualquier sonido que se esté reproduciendo cuando se llame a esta función se detendrá.
Cuando se trata de situaciones de audio complejas, puede ser útil definir en qué lugar del entorno de audio debe situarse el oyente. Cuando se trabaja con las funciones de audio simples, normalmente no es necesario que el oyente se cambie de ninguna manera, sin embargo, cuando se utilizan emisores para generar audio realista dentro del espacio de audio 3D, es importante que el oyente se cambie y se mueva correctamente, o de lo contrario el sonido estará en la posición incorrecta para la persona que juega su juego.
-
Por defecto, hay un oyente creado automáticamente en el juego, que utiliza el ID 0 (para referencia en las funciones del oyente).
-
+
Por defecto, hay un oyente creado automáticamente en el juego, que utiliza el ID 0 (para referencia en las funciones del oyente).
+ GameMaker proporciona las siguientes funciones de escucha:
Algunas plataformas de destino permiten más de un oyente, por lo que es importante saber cuántos tiene el destino antes de cambiar o utilizar diferentes oyentes. Esta función devolverá el número de escuchas disponibles.
Esta función creará un mapa DS y lo rellenará con información para el oyente dado.
NOTAUsted es responsable de la destrucción de los DS Map devueltos utilizando la función correspondiente.
El mapa DS contendrá las siguientes claves:
@@ -27,7 +27,7 @@
audio_get_listener_info
El valor de la máscara se puede utilizar para establecer que un sonido o emisor se reproduzca desde varios oyentes a la vez, simplemente utilizando el bitwise or "|" para generar una máscara para el sonido (ver el código de ejemplo más abajo), mientras que el índice se utiliza para establecer las propiedades como la posición o la velocidad para un oyente determinado utilizando funciones como audio_listener_set_position().
Esta función creará un mapa DS y lo rellenará con los valores de posición, velocidad y orientación para el oyente dado. El índice del oyente por defecto es 0, pero se puede utilizar la función audio_get_listener_info() para obtener los diferentes índices disponibles para la plataforma de destino. Si proporcionas un índice de oyente incorrecto, la función devolverá -1.
NOTAUsted es responsable de la destrucción del mapa DS devuelto mediante la función correspondiente.
Con esta función puede cambiar la orientación del oyente dentro del espacio de audio 3D. La dirección de la mirada y la dirección hacia arriba se basan en los vectores que se resuelven a partir de las posiciones relativas x, y y z dadas, y por defecto son (0, 0, 1) para la dirección de la mirada y (0, 1, 0) para la dirección hacia arriba, como se muestra en la siguiente ilustración:
Cambiar la orientación del oyente con esta función cambiará la forma en que el sonido creado por los emisores de audio alrededor del juego room es percibido por el jugador de su juego. En el ejemplo siguiente, los sonidos creados por el emisor cuando el oyente está en la posición predeterminada parecerían venir de abajo y a la derecha del oyente, pero con la nueva posición y orientación del oyente ahora se percibirán como procedentes de arriba y a la derecha.
Con esta función puede cambiar la posición del oyente dentro del espacio de audio 3D. La imagen de ejemplo siguiente muestra la posición por defecto del oyente en el espacio de audio:
Como puedes ver, la posición por defecto es (0, 0, 0) pero normalmente usarás esta función para mover el oyente con el jugador object dentro de tu juego y así cambiar la forma en que el audio creado por los emisores es escuchado por el jugador, por ejemplo, en la imagen de abajo de un juego de arriba hacia abajo, la instancia del jugador establece el oyente que hará que el audio de los diversos emisores "cambie" a medida que el jugador se mueve alrededor del nivel:
Con esta función puede cambiar la orientación del oyente dado dentro del espacio de audio 3D. El índice del oyente por defecto es 0, pero puede utilizar la función audio_get_listener_info() para obtener los diferentes índices disponibles para la plataforma de destino.
El vector de observación y el vector ascendente se basan en los valores que se resuelven a partir de las posiciones relativas x, y y z dadas, y por defecto son (0, 0, 1) para el vector de observación y (0, 1, 0) para el vector ascendente, como se muestra en la siguiente ilustración:
Con esta función puedes cambiar la posición de un determinado oyente dentro del espacio de audio 3D. El índice del oyente por defecto es 0, pero puede utilizar la función audio_get_listener_info() para obtener los diferentes índices disponibles para la plataforma de destino. La imagen de ejemplo siguiente muestra la posición por defecto del oyente en el espacio de audio:
Como puedes ver, la posición por defecto es (0, 0, 0) pero normalmente usarás esta función para mover el oyente con el jugador object dentro de tu juego y así cambiar la forma en que el audio creado por los emisores es escuchado por el jugador, por ejemplo, en la imagen de abajo de un juego de arriba hacia abajo, la instancia del jugador establece el oyente que hará que el audio de los diversos emisores "cambie" a medida que el jugador se mueve alrededor del nivel:
Esta función puede utilizarse para dar al oyente dado efectos Doppler y simular el movimiento del audio basado en el vector que se resuelve a partir de las posiciones relativas x, y y z dadas. El índice del oyente por defecto es 0, pero se puede utilizar la función audio_get_listener_info() para obtener los diferentes índices disponibles para la plataforma de destino.
Si el oyente dado no se va a mover nunca, o el movimiento no es un movimiento constante, normalmente no necesitarás establecer estos valores, pero, por ejemplo, si estás haciendo un juego de desplazamiento en el que el jugador tiene un movimiento constante de abajo a arriba y los enemigos un movimiento constante de arriba a abajo, deberías establecer las velocidades del oyente y del emisor (para los emisores usarías audio_emitter_velocity()) a los vectores apropiados para simular el efecto Doppler correcto a medida que se mueven más allá de la instancia del jugador.
La imagen siguiente muestra cómo podría configurarse para el juego de ejemplo dado anteriormente:
Esta función se puede utilizar para dar al oyente efectos Doppler y simular el movimiento del audio basado en el vector que se resuelve a partir de las posiciones relativas x, y y z dadas. Si el oyente en sí no se va a mover nunca, o el movimiento no es un movimiento constante, normalmente no necesitarás establecer estos valores, pero, por ejemplo, si estás haciendo un juego de desplazamiento donde el jugador tiene un movimiento constante de abajo a arriba y los enemigos un movimiento constante de arriba a abajo, establecerás las velocidades del oyente y del emisor (para los emisores usarías audio_emitter_velocity()) a los vectores apropiados para simular el efecto Doppler correcto mientras se mueven más allá de la instancia del jugador.
Cuando se utilizan varios oyentes en un sistema, se puede establecer la máscara de bits para un sonido y hacer que se escuche sólo desde el oyente marcado. Sin embargo, también puede establecer la máscara global utilizando esta función y todos los sonidos reproducidos normalmente se escucharán desde los oyentes marcados por esta máscara, sin necesidad de establecer la máscara para cada sonido individualmente.
Crea un grupo de sincronización y devuelve un valor de identificación único para él, que debe utilizarse en todas las llamadas posteriores a la función de audio para este grupo. Si quieres que el grupo sea loop entonces pasa en true, de lo contrario pasa en false, pero ten en cuenta que si quieres que sean loop, todas las pistas añadidas posteriormente tienen que tener la misma longitud. Tenga en cuenta que cuando cree un grupo de sincronización, tendrá que liberar la memoria y los sonidos asociados a él cuando no estén en uso utilizando la función audio_destroy_sync_group() por ejemplo, en los eventos Room End o Destroy.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Los grupos de sincronización de audio deben ser destruidos cuando no estén en uso para liberar la memoria y los recursos de sonido asociados a ellos utilizando esta función. Toma el índice del grupo tal y como se devolvió cuando se creó el grupo mediante la función audio_create_sync_group()y libera todos los recursos utilizados por el grupo.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
esta función pondrá en pausa el grupo de sincronización dado si está reproduciendo, siendo el índice del grupo el valor devuelto al crear el grupo mediante la función audio_create_sync_group(). Esto no detiene el sonido, y al llamar a audio_resume_sync_group()se iniciará la reproducción desde la misma posición en la que se detuvo.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Con esta función puede asignar un sonido a un grupo de sincronización creado previamente. El índice del grupo es el valor devuelto al crear el grupo mediante la función audio_create_sync_group()y el índice del sonido es el índice de cualquier sonido comprimido (*.ogg o *.mp3) del navegador Asset. Esta función sólo añade el sonido al grupo, pero no reproduce el sonido. El valor de retorno será >= 0 si tiene éxito y -1 si falla, donde un valor exitoso indica el orden del sonido en el grupo de sincronización (así que 0 sería el primer sonido añadido, 1 sería el segundo, etc...).
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Esta función reanudará el grupo de sincronización dado si se está reproduciendo y se ha puesto en pausa previamente (utilizando la función audio_pause_sync_group). El índice del grupo es el valor devuelto al crear el grupo mediante la función audio_create_sync_group().
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Con esta función puedes empezar a reproducir un grupo de sincronización previamente creado. Es necesario suministrar el índice del grupo, que es el valor devuelto al crear el grupo mediante la función audio_create_sync_group().
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Esta función detendrá el grupo de sincronización dado si se está reproduciendo, siendo el índice del grupo el valor devuelto al crear el grupo mediante la función audio_create_sync_group().
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
sta función puede utilizarse para mostrar información de depuración sobre un grupo de sincronización determinado (el índice del grupo es el valor devuelto cuando se creó el grupo mediante la función audio_create_sync_group()). Puede llamar a la función con un valor de -1 para que switch desactive la superposición.
Cuando esté debugging los grupos de sincronización de audio, se mostrará la superposición:
@@ -42,7 +42,7 @@
audio_sync_group_debug
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Esta función devuelve la posición de reproducción actual del grupo de sincronización dado. El índice del grupo es el valor devuelto al crear el grupo mediante la función audio_create_sync_group()y el valor de retorno es el tiempo en segundos que han estado reproduciéndose las pistas.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Con esta función puedes establecer cuántos canales de audio están disponibles para reproducir audio en GameMaker. Lo que esto significa básicamente es que usted da el número de sonidos simultáneos que pueden ser reproducidos en cualquier momento, y si el número excede la cantidad, aquellos sonidos con una prioridad más baja son detenidos para liberar un canal para los sonidos con una prioridad más alta. Puedes utilizar esta función para optimizar tu juego para los dispositivos, ya que cuanto menor sea el número de canales para el audio, mejor será el rendimiento, pero ten en cuenta que esto también puede causar un corte notable de ciertos sonidos si se reproducen muchos a la vez.
Con esta función se puede crear un nuevo índice de sonido que luego se puede utilizar en las funciones de audio regulares para transmitir audio directamente desde una fuente de archivo OGG externa. La función requiere el nombre del archivo (que puede ser un archivo incluido, por ejemplo) y devolverá el nuevo índice de sonido para su uso. Tenga en cuenta que cuando ya no necesite el sonido deberá llamar a la función audio_destroy_stream() con el índice de sonido para eliminarlo de la memoria, de lo contrario puedes obtener una fuga de memoria que ralentizará y eventualmente bloqueará tu juego.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Esta función puede utilizarse para mostrar información de depuración sobre el sistema de audio, con true encendiéndola y false para switch apagándola. Cuando se debugging audio de esta manera, la superposición mostrará la siguiente información:
@@ -30,7 +30,7 @@
audio_debug
NOTAEsta función no funciona en la plataforma de destino HTML5.
Si ha creado previamente un flujo de audio desde un archivo utilizando la función audio_create_stream() y ya no necesita ese sonido, puede llamar a esta función para borrarlo de la memoria. Cualquier otra llamada al índice de sonido después de que haya sido destruido dará un error. Hay que tener en cuenta que esto liberará el flujo, pero en la plataforma de destino esto puede no aparecer en un gestor de memoria. Esto se debe a que GameMaker agrupa los recursos de memoria para evitar la sobrecarga de asignación de memoria, y por lo tanto la memoria permanecerá asignada hasta que se requiera para otra cosa o se reutilice para un nuevo flujo.
NOTA: Esta funcionalidad no está disponible para la plataforma de destino HTML5.
Esta función devuelve si un sonido existe (true) o no (false). Tenga en cuenta que si el índice que busca no ha sido inicializado previamente, esta función causará un error ya que está buscando índices inexistentes asset. El sonido a comprobar puede ser una única instancia de un sonido (el índice de los sonidos individuales que se reproducen puede almacenarse en una variable cuando se utiliza la función audio_play_sound() o audio_play_sound_at() ) o un sonido asset.
Con esta función puedes obtener el valor absoluto del volumen global de todos los sonidos y la música para un oyente específico. El índice del oyente por defecto es 0, pero puede utilizar la función audio_get_listener_info() para obtener los diferentes índices disponibles para la plataforma de destino. El valor de ganancia devuelto se basa en una escala lineal de 0 (silencio) a 1 (volumen máximo). Ten en cuenta que en algunas plataformas puedes tener una ganancia mayor que 1, aunque un valor de 1 se considera "volumen completo" y cualquier valor mayor puede introducir recortes de audio.
Esta función devolverá el nombre de un recurso de audio dado como string. El valor del "índice" puede ser el del propio recurso (como se ve en el Navegador Asset ) o el valor de identificación único que se da cuando se reproduce el sonido utilizando, por ejemplo,
audio_play_sound(). Tenga en cuenta que el string devuelto no es el mismo que el ID del recurso y no puede utilizarse para acceder al recurso en sí, por lo que sólo debe utilizarse para la visualización o la comprobación de errores.
Cuando se añade audio a GameMaker, éste puede ser transmitido o en memoria. Si usted necesita saber si un índice de sonido dado es para el audio transmitido o no puede
utilizar esta función que devolverá 1 para el streaming, 0 para el sonido en la memoria, y -1 si hay algún error o el índice no apunta a un recurso de sonido válido.
Esta función comprobará el sonido dado para ver si está actualmente en pausa. El sonido puede ser una sola instancia de un sonido (el índice de los sonidos individuales que se reproducen puede almacenarse en una variable cuando se utiliza la función audio_play_sound() o audio_play_sound_at() ) o un sonido asset, en cuyo caso se comprobarán todas las instancias del sonido dado y si alguna de ellas está en pausa la función devolverá true, en caso contrario devolverá false.
Esta función comprobará el sonido dado para ver si se está reproduciendo actualmente. El sonido puede ser una instancia única de un sonido (el índice de los sonidos individuales que se están reproduciendo puede almacenarse en una variable cuando se utiliza la función audio_play_sound() o audio_play_sound_at() ) o un sonido asset, en cuyo caso se comprobarán todas las instancias del sonido dado y si alguna de ellas se está reproduciendo la función devolverá true, en caso contrario devolverá false. Tenga en cuenta que esta función seguirá devolviendo true si el sonido que se está comprobando ha sido pausado previamente utilizando la función audio_pause_sound() función.
Con esta función puedes establecer el valor absoluto del volumen global de todos los sonidos y la música. Se basa en una escala lineal que va desde 0 (silencio) hasta cualquier valor superior a 0, aunque normalmente se consideraría que el volumen máximo es 1. Se puede utilizar cualquier valor superior a 1 pero, dependiendo del sonido utilizado y de la plataforma en la que se compile, se puede producir distorsión o recorte cuando se reproduzca el sonido. Esta función afectará al volumen relativo de todos los sonidos y la música que se reproduzcan en el juego.