Marzo 12, 2014, 05:09:47 AM Ultima modificación: Marzo 12, 2014, 05:30:09 AM por vampy09
Al navegar por la sección de preguntas y respuestas del foro, me doy cuenta que la gran mayoría de preguntas se solucionan con el uso práctico de funciones, osea la solución era usar tal función en conjunto con las variables de quien realiza la pregunta.

Bueno, el no uso y mal uso de las funciones del GM es algo común en las primeras etapas. Y esto lo se, porque cuando yo inicie con el GM, yo no tenia ningun conocimiento de lógica para computación.( eso que nos ayuda a crear lindos algoritmos ) Por tanto, se que la mente de una persona que usa el GM en esa etapa y no tiene conocimientos en programación, es el de tratar de crear su algoritmo ( código ) practicamente desde cero. Lo cuál no esta del todo mal, pero si se desea avanzar y sacar "el jugo" al GML, debemos inicialmente incluir el uso de funciones de una forma más habitual y progresiva.

Como ejempo tomo la siguiente pregunta, realizada por [user] _-Caleb-_[/user] : "Boundary Views..¿ Que estoy haciendo mal?
http://www.comunidadgm.org/preguntas-y-respuestas/boundary-views-que-estoy-haciendo-mal/msg94227/#msg94227

En ella el compañero deseaba una manera que los enemigos se empezarán a mover solo si se encontraban dentro de la view.
Una de las respuestas fue de [user]ivn_eze[/user], ( lo siento serás mi conejillo de indias ;D ) y de forma general proponia lo siguiente:
"poner objetos cuadrados y trasnparentes del tamaño de la room a los objetos y al jugador, y que el que tuviera el jugador lo siguiera y cuando este objeto colisionara con algun otro objeto se empezara a mover"

Aunque la respuesta para mi es muy ingeniosa e imaginativa, es algo complicada.
El problema aqui es que se puede lograr lo mismo y algo mas con el siguiente código, que como observarás esta formado con dos funciones:
{
instance_activate_all();
instance_deactivate_region(view_xview[0],view_yview[0], view_wview[0],view_hview
[0],false,true);
}


Aclaro:
Yo fue quien posteo el código de arriba como respuesta y este ejemplo NO ES para vanagloriarme ni mucho menos, si no para que te des cuenta de como aveces pensamos y hasta nos complicamos cuando no usamos funciones.
Porque, repito, el pensamiento que realiza [user]ivn_eze[/user] es sumamente ingenioso, pero te pregunto: que pasaria si combinaramos este ingenio con las funciones pre-fabricadas del GM?
El cielo es el limite!

En gran medida este "desperdicio de habilidad" sucede por algo que [user]penumbra[/user] ha repetido varias veces: no leemos el manual del GM! (de donde crees que saque mi respuesta!)
Porque tal vez no lo creas pero en el encontraremos pequeñas llaves con las que, en la mayoria de veces, podemos abrir esas puertas que bloquean la creación de nuestro juego.

CitarDado que el GM tiene tantos años de haberse creado, muchas de las posibles situaciones que podamos enfrentarnos en la creacion de un juego, ya han sido de una manera solucionadas por otras personas. El codigo que he puesto es de esos codigos ( smart codes ) que deben estar en el block de notas de todo usurio del GM.
Date cuenta que al contrario de los graficos o el sonidos, el codigo puede y debe ser reutilizado y tampoco es necesario que sea 100% creado por uno mismo.
Para mi, tu dominio del GML dependera de cual habil seas en combinar funciones con las estructuras de control ( if, switch, while, do-while, for, repeat) "sazonandolas" con elementos de Programacion Orientada a Objetos ( principalmente herencia ).

Me gustaría agregar mas ejemplos, pero no me gusta hacer los temas muy largo, así que si deseas poner un ejemplo que demuestre el poder de las funciones eres libre de hacerlo.
Saludos!
The next best thing to knowing something,
is knowing where to find it.

#1 Marzo 26, 2014, 03:48:04 PM Ultima modificación: Marzo 26, 2014, 04:38:53 PM por _-Caleb-_
Anda me ha tocado ser "ejemplo malo"  :-[

Yo con el tiempo voy viendo que se repiten las mismas preguntas hasta la saciedad en preguntas y respuestas.
El "problema" no es no leer el manual, es no encontrar esas funciones que necesitamos especificamente para algo los más novatos.
Obviamente, si yo en su día hubiera tenido el conocimiento del lenguaje que tengo hoy, no lo hubiera preguntado, pero la cosa es que por ejemplo:

{
instance_activate_all();
instance_deactivate_region(view_xview[0],view_yview[0], view_wview[0],view_hview[0],false,true);
}


Al no saber que existían las funciones instance_activate e instance_deactivate pues eso... preguntaba cómo hacerlo :)

De hecho hasta ese día no aprendí que una instance podía ser un objeto del nivel. :P (Llevaba como 10 días con gm, no me matéis)

La cosa es que al ir conociendo funciones y demás, yo, en lo personal, he ido quitando elementos de D&D y sutituyéndolos por scripts o porciones de código en lugares específicos que son luego menos liosos de controlar a la hora de llevar un proyecto.

Pero en lo que dices, tenéis razón, pero creo que la cosa no es el manual, sino el sistema de PyR del foro, o lo relativamente complicado que resulta buscar en la documentación. Por ejemplo el foro de PyR podría tener una serie de admins que marcasen los temas como solucionados y los enviasen a otro foro de "Preguntas solucionadas". No repitiendo temas hasta la saciedad Como: Las relacionadas con pulsar 2 teclas a la vez o las relacionadas con la barra de vida o score.

Y desde luego de la ayuda de GM, que es mi primera referencia siempre antes de venir aquí a llorar xD, si buscas palabras clave no aparece nada, tiene que ser un término similar, no hay búsquedas cruzadas. Por eso cuando leí el hilo de penumbra del manual sugerí usar algún sistema de wiki como dokuwiki, ya que así se pueden realizar búsquedas no sólo en el nombre de la función sino en el código de ejemplo y demás. (Y además es mucho más fácil de actualizar xD)

En fin, que os doy la razón en todo, pero los recursos (en castellano o no) podrían estar algo mejor organizados. Yo antes contestaba en PyR como han hecho conmigo (Sobre todo el amigo penumbra, que me ha ayudado un montón). Pero siempre entra alguno del rollo:

"Hola, quiero hacer un juego y que mi personaje les arranque las cabezas a los zombies y las meta al micro-ondas y que al pasar 2 minutos salga un caldo de pollo del micro y pueda restaurarle la salud.

Me hacen un script para esto?"

Lamentablemente es más o menos lo habitual, pero es que cansa un poco tener que re-enviar a la gente al primer resultado de youtube de "TUTORIAL GAMEMAKER ESPAÑOL"

Perdonad el tochazo xD

¡Saludos!
Visita mi proyecto: Space Cadet

Cita de: _-Caleb-_ en Marzo 26, 2014, 03:48:04 PM
Yo con el tiempo voy viendo que se repiten las mismas preguntas hasta la saciedad en preguntas y respuestas.

Esa es la palabra correcta, hasta la saciedad. Y desde mi punto de vista, no se trata de responder 10 o 20 veces lo mismo, por eso soy tan fastidioso con lo de consultar el manual y es un ode los motivos por los que nació  la propuesta de traducir el manual. Es claro que algo no se ha hecho, pero es necesario hacerlo para terminar con las mismas respuestas una y otra vez. Hace varios meses llegué a sugerir crear el canal oficial de la comunidad en Youtube, precísamente para subir videotutoriales resolviendo las preguntas más comunes y evitar la repetición en el foro (claro, otro contenido también, no solo tutoriales), pero se necesita de mucha participación de los miembros para hacer algo así y que funcione.

Ahora, siendo francos, casi todo ya está respondido en la sección de ejemplos de la comunidad.



El problema es el de siempre penumbra, que los que aún no tenemos un conocimiento extenso de las funciones y demás pues aún nos cuesta algo encontrar lo que buscamos, pero el foro está genial para eso.

Una cosa... y un canal de irc? Sería una buena idea, no?
Visita mi proyecto: Space Cadet

#4 Marzo 26, 2014, 11:16:42 PM Ultima modificación: Marzo 26, 2014, 11:28:50 PM por vampy09
Cita de: _-Caleb-_ en Marzo 26, 2014, 03:48:04 PM
"Hola, quiero hacer un juego y que mi personaje les arranque las
cabezas a los zombies y las meta al micro-ondas y que al pasar 2
minutos salga un caldo de pollo del micro y pueda restaurarle la salud.
Me hacen un script para esto?"
XD  XD  XD

Creo que el manual del GM:S en español sin duda ayudaría ha muchos ha buscar una solucion por cuenta propia y evitaria un poco las preguntas repetidas (aunque preguntar y recibir una respuesta es lo que el foro PyR se trata, pero creo que aveces se abusa, aunque por supuesto nadie esta obligado a responder tampoco).

Es por eso que que trato de ayudar a [user]penumbra[/user] con lo que pueda con su proyecto de traducir el manual:http://www.comunidadgm.org/propuestas-y-soporte/solicito-colaboradores-para-crear-manual-actual-del-gms/

Para que los makeros mas novatos tengan más opciones de respuesta o por lo menos busquen el código (funciones, variables, if, for, etc...) que les dieron como respuesta y traten de entenderlo con la ayuda del manual.
Saludos!
The next best thing to knowing something,
is knowing where to find it.