Tengo la versión 8. Y en muchos códigos veo que la gente antes de la utilizar la variable, la declara con var.

Osea...

var numero;
numero = 10;


Por lo que entiendo, esto se hace cuando se crean variables que no van a durar mucho en el juego. Yo normalmente, utilizo el evento Create para dar un valor a la variable y punto. En otros lenguajes si se debe declarar el tipo de dato. Por ejemplo en Pascal.

¿Se puede prescindir de esta palabra reservada?

Se puede prescindir de ella si quieres pero no es del todo aconsejable, supongamos que declaras una variable "a" en un script

[gml]a = 325;[/gml]

y ahora llamas ese script desde un objBola, el objBola ahora tendrá una variable "a", pero puede que esa variable a solo la utilices en ese script y ya

[gml]
a = argument[0] * argument[1];
if (a < 100){
   show_message("Felicitaciones");
}
[/gml]

Esto significa que ahora tu objeto objBola tiene una variable inútil que no vas a necesitar, ahora bien, esto no es un gran escándalo al fin y al cabo es una variable, pero... y si fueran 100? y no un objeto quien llama el script sino 20? tendrás muchas mas variables inútiles en memoria. Puede que no afecte visiblemente al juego, pero por consejo de buenas practicas de desarrollo yo diría que es buena idea que las declares como temporales:

[gml]
var a;
a = argument[0] * argument[1];
if (a < 100){
   show_message("Felicitaciones");
}
[/gml]

Saludos 8)

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


131072. Ciento treinta y un mil setenta y dos.

Ese es el número de variables de GM que necesitarías crear para ocupar un Megabyte de memoria RAM en tu PC. Dudo que haya un juego en GM que siquiera se acerque a esa cifra.

Teniendo en cuenta que para "gastar" un Megabyte de memoria necesitas más de cien mil variables, francamente una, cien, mil o diez mil variables "inútiles" no significan nada. Hubo una época en que 100 o 1000 variables inútiles sí hacían diferencia, pero esa época quedó en el pasado y no volverá.

No pasa nada si nunca usas "var" en tu juego. El manual no te obliga a usar tal o cual tipo de variable es específico. Pero en muchas ocasiones sí resulta cómodo usar var, porque no tienes que andar entrando a un CREATE y a otro y a otro para declarar variables, símplemente las declaras en el momento que las necesitas. Yo lo veo más como una manera de hacer el código más flexible que como una manera de economizar recursos.

Yo lo uso siempre que uso variables auxiliares que necesito en ese instante para almacenar ciertos valores, pero que no necesitaré fuera de ese fragmento de código ni será llamada por otro objeto, en ese caso uso el evento create. Mola, porque así no lleno create de variables estúpidas.

Pero... tengo en mente C++, no sé si GML hace igual... pero, al declarar una variable dentro de un if, un for, etc, en teoría, al acabar, la variable no debería desparecer? Al salir del "ámbito de visibilidad" de la variable ésta desaparece. En ese caso var es un tanto estúpido.

Por ejemplo en C++ no hay var. Haces un "int x = 10", SIEMPRE, al hacerlo dentro de un for, por ejemplo, al salir del for la variable se destruye, pero si lo haces al iniciar el programa esa variable existirá durante TODO el programa, al haberla creado fuera. C++ no distingue "var", pues es algo automático: al salir fuera del ámbito de visibilidad de la variable se destruye. En teoría var hace eso.. o a caso en GML, al crear una variable dentro de un for, ésta no se destruye en cada nueva iteración y al salir del for? Espero que sí, sería muy jodido si no lo hace. Y si lo hiciera, var no tendría sentido (o no he entendido bien qué hace var)