Crear snippets personalizados Game Maker Studio 2
Ya se que hace tiempo que no escribo, así que vengo con una novedad de la última versión de Game Maker Studio 2, a la hora de escribir código en GML.
Primero miramos el estilo a la hora de programar. ¿Como escribirías el siguiente código?
//opcion 1 if (x > 10){ x += 10; }
//opcion 2 if (x > 10) { x += 10; }
//opcion 3 if (x > 10) x += 10; }
//opcion 4 if (x > 10) { x += 10; }
//opcion 5 if x > 10 x += 10
Como ves, todas estas opciones funcionan, no da error del compilador, así que daría igual como lo escribes.
¿Pero realmente da igual?
Ya hemos dicho más de una vez que es muy importante que tu código fuente sea fácil de entender. Piensa que debes escribir para que otra persona lo entienda (aunque esa persona sea tu yo del futuro, ya sea de un mes o de aquí a 5 años 😀 ).
Game Maker Studio 2 nos ofrece una pequeña utilidad para ayudarnos a esta tarea, que son los snippets o los fragmentos de código.
¿Que son los snippets o fragmentos de código de Game Maker?
Esta opción ya existía con la versión anterior de Game Maker Studio, pero han hecho una pequeña mejora con la actualización de la última versión.
Mientras estamos escribiendo código GML, si pulsamos F4 (en GMs 1.4 pulsando F2), nos aparece un menú parecido a éste:
Vemos un pequeño menú, con un título y una numeración + letras. Si por ejemplo tecleamos un 2, el código escribe esto:
Ya vemos por dónde van los tiros… Este menú nos ayuda a escribir código. Otro ejemplo con switch
No sólo podemos escribir código más rápido, porque el editor de scripts ya lo hace, sino que ya lo formatea como nosotros queremos. Pero podemos ir más allá personalizando este menú.
Personalizando las opciones de snippets de Game Maker Studio 2
Desde la opción de fragmentos de código podemos, eligiendo con el ratón o con el método abreviado que aparece a la derecha, escribir una plantilla de código.
Este menú está configurado en un fichero, que se llama snippets.txt y está en la siguiente ruta
Si lo buscas en un ordenador con windows es
%ProgramData%\GameMakerstudio2\User
y si usas macOs
/Users/Shared/GameMakerStudio2/user/
Esta carpeta puedes encontrarla vacía, ahora veremos porqué. La ruta que hemos comentado no se modifica si hay una actualización de GMS 2, así que el archivo snippets.txt que crees aquí siempre permanece intacto.
Si buscas en la carpeta de instalación de GMS2, en la subcarpeta TextEditor, vemos que ya existe ese fichero, y que puedes copiar y usar de base, pero si lo modificas perderás los cambios en la próxima actualización (o reinstalación) del programa.
Bueno, hemos copiado el fichero a la carpeta User, lo abrimos con cualquier programa y vemos que tiene este aspecto:
1 - Block:{$ |// code here|$}$ 2 - If:if (|condition|) {$ // code here$}$ 3 - If-Else:if (|condition|) {$ // code here$}$else {$ // code here$}$ 4 - For Loop:for (|initialise|; condition; increment) {$ // code here$}$ 5 - For Loop (i..n):for (var i = 0; i < |condition|; ++i) {$ // code here$}$ 6 - While Loop:while (|condition|) {$ // code here$}$ 7 - Do-Until Loop:do {$ |// code here|$} until (condition);$ 8 - Repeat:repeat (|expression|) {$ // code here$}$ 9 - Switch:switch (|expression|) {$ case constant:$ // code here$ break;$ default:$ // code here$ break;$}$ 0 - With:with (|expression|) {$ // code here$}$ C - Line Comment:// |comment here| M - Multi-line Comment:/*$ |comment here|$*/ R - Region:#region |name here|$#endregion$
Parece complicado, pero verás que no lo es tanto.
Si lo comparamos con la siguiente imagen, en que hemos coloreado algunas partes, ya se parece más al lenguaje GML:
Como vemos, en rojo es lo que aparece en el menú, una letra que será el acceso rápido, separado por un guión “-“, y luego un poco de texto con dos puntos “:”. Por ejemplo:
1 - Block: 2 - If: F - Función que uso mucho:
Aunque veamos la letra en mayúscula, el acceso rápido funciona tanto en mayúsculas como en minúsculas.
Luego añadimos el trozo de código que se añadirá. Por ejemplo, la siguiente función para crear una instancia de una bala:
B - Crear Instancia bala:instance_create_layer(x, y, "Instances", obj_bala);
Veamos que funciona perfectamente (si tienes Game Maker abierto deberías reiniciarlo para ver los cambios).
pero podemos mejorarlo. Imagina que tienes diferentes tipos de bala, que hacen distinto daño, como obj_bala
, obj_misil
, obj_misil_grande
, etc..
Podríamos crear varias líneas tipo así:
B - Crear Instancia bala:instance_create_layer(x, y, "Instances", obj_bala); M - Crear Instancia misil:instance_create_layer(x, y, "Instances", obj_misil); G - Crear Instancia misil grande:instance_create_layer(x, y, "Instances", obj_misil_grande);
Pero simplemente podríamos modificar la parte del objeto. Si utilizamos la barra vertical “|”, depende del teclado, pero suele estar en la tecla del 1, lo que haría es que al añadir el trozo de código seleccionaría la parte que está entre las barras, por ejemplo |obj_bala|. En la imagen, es la parte que he coloreado de amarillo.
Quedaría así:
B - Crear Instancia bala:instance_create_layer(x, y, "Instances", |obj_bala|);
o incluso lo mejoramos, en mi opinión, así:
B - Crear Instancia bala:instance_create_layer(x, y, "Instances", obj_|bala|);
y así modificar brevemente. Pero aún podemos hacer más.
Imagina que, ya que estamos, queremos quitarle una vida. Utilizamos el carácter “$” como uno especial, para indicar que ahí hay un salto de línea. Recuerda que para que funciona bien el fichero de snippets, así que quedaría así:
B - Crear Instancia bala:instance_create_layer(x, y, "Instances", obj_|bala|);$lives--;
A partir de ahí, ya puedes modificar el fichero a tu gusto.
Conclusión final
Como ves, editando el fichero de snippets puedes conseguir que a la hora de escribir código puedas ir mucho más rápido, modifincándolo a tu estili de programación, e incluso añadir las funciones o código que te puede interesar.
Toda la información está sacada de la ayuda online que ofrece YoYoGames.
Guías Game Maker Studio 2 (en inglés)
A veces incluso hay cosas interesantes 🙂 .
¿Te interesa que adapte alguna? Pues dímelo en los comentarios aquí abajo!!
quiero aprender mucho a programar y cumplir mi sueño de programador
¡Pues a practicar mucho!
Y sobretodo no te rindas.
Fantástico artículo! Gracias 🙂
es mui chebre
Con la de años que llevo usando GM y me entero ahora de esto <3