Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: nahured en Diciembre 17, 2017, 12:15:05 AM

Título: ¿algún PDF en español con todas las funciones de Game Maker y su descripción?
Publicado por: nahured en Diciembre 17, 2017, 12:15:05 AM
Hola.

me dirijo a ustedes con la intriga de si saben si existe (yo creo que si) un PDF con todas las funciones y sus descripción de para que sirve y como funciona.

Estoy espesando en esto de la programación: la verdad es que solo quiero hacer una historia en forma de juego y tengo que saber programar así que si me pueden ayudar me gustaría mucho. :D
Título: Re:¿algún PDF en español con todas las funciones de Game Maker y su descripción?
Publicado por: Clamud en Diciembre 17, 2017, 10:28:55 PM
No he visto una versión del manual completo en pdf.
Estaba la traducción completa del manual de GM6, pero hace poco la página desapareció.
Ahora se está realizando la tradución de GMS1.4 https://bygdle.xyz/gamemaker/manual/Referencia/

Normalmente en un juego no es necesario utilizar todas las funciones, solo se usa un pequeño conjunto que permite resolver problemas específicos. Deberías seguir tutoriales sobre juegos similares al que quieres hacer, para aprender más fácil.
Título: Re:¿algún PDF en español con todas las funciones de Game Maker y su descripción?
Publicado por: Naitsabes0 en Diciembre 18, 2017, 07:37:36 PM
Te puedo dejar mis investigaciones personales.

Copia todo esto y pegalo en un world, después lo estudias y haces experimentos, espero que te sirva.

Área código:

// es un comentario (no afecta la programación) le da un título o descripción a los códigos, muy útil para resumir en que sirve el código empleado.
/// es un comentario para game maker (no afecta la programación) le da un nombre a la acción del evento, muy útil para buscar códigos de forma rápida.

///Verde (información para el programador)
Rojo (variable preconcebida, no hace falta declarar, no cambia)
Amarillo (es función)
Gris (variable de instancia, se le debe dar un nombre)

If          (condición inicial) si se cumple has esto
Else if  (condición alternativa) si ocurre esto otro has esto
Else    (condición final) si no ocurre ninguna de las condiciones anteriores has esto ultimo

image_speed = 1 (velocidad del cambio de imagen ej 1 =100%)
image_alpha = 1 (trasparencia de la imagen ej 1 = 100%)
image_angle = (rotación anti horaria ej 0 , 360  180)
image_blend = (cambia el color de la imagen ej Image_blend=c_red)
image_index = ( selecciona la imagen que se quiere mostrar ej 1)
image_xscale = 1 ( tamaño del personaje ej 1 =100% -1 efecto espejo) nota: recuerda centrar
image_yscale = 1 ( tamaño del personaje ej 1 =100% -1 efecto espejo) nota: recuerda centrar
image_number = (cuantas veces está el mismo objeto en la room)
hspeed = (velocidad horizontal de objeto, -izquierda +derecha) ej: hspeed = 5
vspeed = (velocidad vertical de objeto, -arriva +abajo) ej: vspeed = 5
view_xview[0] = (coordenadas x de la vista del cuerto) ej:
view_yview[0] = (coordenadas y de la vista del cuerto) ej:
view_hview[0] = (altura del cuarto) ej:
view_wview[0] = (largo del cuarto) ej:
view_object[0] = (ve el objeto) ej;  view_object[0] = obj_puerta
view_hspeed[0] = (velocidad horizontal de la vista) ej; view_hspeed[0] = 3
view_wspeed[0] = (velocidad vertical de la vista) ej; view_wspeed[0] = 3
view_angle[0] = (rota la vista) ej;
room_height = (altura del cuarto) ej; if y<0 { y = room_height; }
                                                          if y> room_height { y = 0; }
room_width = (ancho del cuarto) ej;
cursor_sprite = (le da un sprite al cursor del raton) ej; cursor_sprite = spr_corazon
os_type = (que sistema operativo estas usando) ej; os_type = os_android { show_message ("estas usando Android!") }

direction = (dirección del objeto) ej; direction = 45 diagonal derecha
0º(360º), 90ºarriva 180º, 270ºabajo)
keyboard_string= (es una variable que va acumulando todo lo que se escribe en el teclado)


device_get_tilt_x() = (le el sensor de movimiento x (para móviles)
device_get_tilt_y() = (le el sensor de movimiento y (para móviles)
device_get_tilt_z() = (le el sensor de movimiento z (para móviles)

file_text_open_write() = (crea el archivo de texto) ej; file = file_text_open_write("archivo.txt")
file_text__write_string() = (el texto escrito en letras) ej; file_text__write_string (file, "Texto que quedara escrito.")
file_text__write_real() = (el texto escrito en numeros) ej; file_text__write_real (file, 12)
file_text__writeln () = (salta la línea de texto escrito) ej; file_text__writeln (file)
file_text__close() = (cierra el texto escrito) ej; file_text__close (file)
file_text_open_read() = (lee el archivo de texto) ej; file = file_text_open_read("archivo.txt")
file_text _read_string() = (lee un archivo de texto especifico en letras) ej; resultado = file_text _read_string(file)
file_text _read_real() = (lee un archivo de texto especifico en numeros) ej; numero = file_text _read_real(file)
file_text _readln () = (salta la línea de un archivo de texto especifico) ej; file_text _readln (file)






url_open = (abre la dirección de internet) ej; url_open (http://www.guinxu.com)
string_width = (el largo de las letras)
string_height = (el alto de las letras)

window_get_fullscreen =(consulta si la pantalla esta completa) ej; if keyboard_check_pressed(vk_enter)
{ if window_ get_fullscreen() = false { window_set_fullscreen(true); } else { window_set_fullscreen(false);
} }



instance_exists() = (existe una instancia (objeto) ej: If instance_exists (obj_jugador)

instance_create() = (crea el objeto) ej: Instance_create (100,100,obj_jugador)
coordenada x, coordenada y, nombre del objeto ,3 valores

instance_nearest() = (ve al objeto más cercano) ej: Instance_nearest (x,y,obj_jugador)
coordenada x, coordenada y, nombre del objeto ,3 valores

instance_destroy() = (destruye el objeto)

instance_number() = (cuantas veces se repite el mismo objeto) ej; instance_number(obj_jugador)

place_empty () = (comprueba si las coordenadas están vacías) ej;; If place_empty (x+4, y) {x=x+4;}
coordenada x, velocidad , coordenada y,3 valores NOTA: avanza hasta que algo bloque camino

place_free () = (comprueba si las coordenadas están libres) ej;; If place_free (x+4, y) {x=x+4;}
coordenada x, velocidad , coordenada y,3 valores NOTA: avanza traspasando

mouse_check_button(mb_left) = (detecta si estas manteniendo el botón)

mouse_check_button_pressed(mb_left) = (detecta solo cuando hundes el boton)

mouse_check_button_released(mb_left) = (detecta solo cuando sueltas el boton)

move_towards_point = (mueve al punto) ej: move_towards_point (500,16 ,4)
coordenada x, coordenada y, velocidad ,3 valores

action_potential_step() = (sigue al objeto) ej: action_potential_step(ob_player.x,ob_player.y,4,true)
el objeto. x, el objeto. y, velocidad, true (no traspasa objeto) false (traspasa objeto) 6 valores

show_message() = (crea un mensaje) ej: show_message("Hola jugador.#Bienvenido!");
# siguiente línea de texto 1 valor

show_guestion() = (respuesta si o no) ej: if show_guestion ("¿Quires comprar?") = true
{ room_goto (rom_tienda) } else { room_goto (rom_casa) }

get_integer (obtener valor entero) ej: nvidas = get_integer ("¿Cuántas vidas quieres?" , "21")
                                                           nvidas = nvidas*2 – 7 + 24)*3
                                                           show_message ("Tienes" + string (nvidas) + " vidas.");

effect_create_above(ef_) = (crea efectos encima de los objetos) ej:       effect_create_above (ef_explosion,x,y,2,c_gray); (tipo de efecto, coordenada x, coordenada y, tamaño (0-2), color)

effect_create_below(ef_) = (crea efectos debajo de los objetos) nota: 0.1.2

game_save() = (guarda la partida) ej: game_save("partida.sav")

game_load() = (carga la partida) ej: game_load("partida.sav")

game_restart() = (reiniciar la partida, borra todo el progreso) ej: game_restart("partida.sav")

game_end() = (cerrar la partida)

room_goto_previus() =  (cuarto anterior)

room_goto_next() = (siguente cuarto)

room_goto() = (lleva a un cuarto especifico) ej room_goto(rm_casa)
elige cuarto, 1 valor
room_restart() = (reinicia el cuarto)

get_string() = ("Escribe tu nombre",")
current_hour = (la hora es)
current_minute = (el minute es)
current_second = (el Segundo es)
current_day = (el dia es)
current_month = (el mes es)
current_year = (el año es)
if current_hour>8 and current_hour<20
{
    background_index[0]=bg_dia
}
else
{
    background_index[0]=bg_noche
}
background_hspeed[0] = (velocidad horizontal de la room) ej:  background_hspeed[0] = 10
velocidad 1 valor

background_vspeed[0] = (velocidad vertical de la room) ej:  background_vspeed[0] = 10
velocidad 1 valor

background_alpha[0] = (transparencias) ej: background_alpha[0] = 0 invisible 255 visible
opacidad (0-255) 1 valor

background_blend[0] = (da un color al fondo) ej: make_color_rgb(0,0,0)
rojo,verde,azul 3 valores

audio_play_sound() = (reproduce el sonido) ej: audio_play_sound(snd_melodia,100,false)
la melodia, la prioridad(0-100), true (se reproduce siempre) false (solo una vez) 3 valores

audio_pause_sound() = (pausa el sonido) ej; audio_pause_sound(snd_melodia)
la melodia,1 valor

audio_stop_sound() = ( detiene el sonido) ej; audio_stop_sound(snd_melodia)

la melodia,1 valor
audio_resume_sound() = (continua la pausa del sonido) ej; audio_resume_sound(snd_melodia);

la melodia,1 valor
audio_stop_all() = ( detiene todos los sonidos) ej; audio_stop_sound()

draw_set_color() = (dibujo el color) ej: draw_set_color (c_black)

draw_set_alpha() = (dibuja la transparencia) ej: draw_set_alpha(0.5)

draw_circle() = (dibuja un circulo) ej:  draw_circle (100,100,50,0)
coordenada x ,coordenada y, radio, 0 completo 1 contorno, 4 valores

draw_line() = (dibuja una línea) ej:  draw_line(400,10,500,300)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto) 4 valores

draw_line_width() = (dibuja una línea gruesa) ej;  draw_line_width(400,10,500,300,10)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto), grosor, 5 valores

draw_rectangle() = (dibuja un rectangulo) ej:  draw_line_width(400,10,500,300,1)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores

draw_line_roundrect() = (dibuja un rectangulo punta redonda) ej:  draw_line_width(210,35,500,300,0)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores
draw_ellipse () = (dibuja una elipse) ej:  draw_ellipse (210,35,500,300,0)
coordenada x ,coordenada y, (1° punto) superior izquierda coordenada x ,coordenada y (2° punto) inferior derecha, 0 completo 1 contorno, 5 valores

draw_triangle () = (dibuja un triángulo) ej:  draw_triangle (210,35,500,300,750,100,0)
coordenada x ,coordenada y, (1° punto) coordenada x ,coordenada y (2° punto), coordenada x ,coordenada y (3° punto) 0 completo 1 contorno, 7 valores

draw_text () = (dibuja un texto) ej  draw_text (210,35, "Viva yo")
coordenada x , coordenada y ,texto , 3 valores

draw_set_font () = (dibuja una fuente de letra) ej  draw_text (210,35, "Viva yo")
coordenada x , coordenada y ,texto , 3 valores

draw_set_halign () = (dibuja la alineación horizontal de texto) ej  draw_set_halign (fa_center)

draw_set_valign () = (dibuja la alineación vertical de texto) ej  draw_set_valign (fa_center)

draw_background () = (dibuja el fondo seleccionado) ej  draw_background (background1,210,35)
el fondo, coordenada x , coordenada y , 3 valores

draw_sprite () = (dibuja el sprite seleccionado) ej:  draw_sprite (sprite1, 3, 210, 35)
el sprite, la sub-imagen, coordenada x , coordenada y , 4 valores

draw_sprite_ext() =(dibuja el fondo seleccionado) ej: draw_sprite_ext (sprite1,3,210,35,2,4,45, c_red,1)
el sprite, la sub-imagen, coordenada x, coordenada y , escala x, escala y, rotación, color, transparencia,  9 valores
draw_background_ext() =(dibuja el fondo seleccionado) ej: draw_background_ext (background1, 700,210,35,4,45, c_red,1)
el background, coordenada x , coordenada y , escala x, escala y, rotación, color, transparencia,  8 valores

draw_self() = (se dibuja así mismo (yo) ej: draw_self()

path_start() = (hace un patron de movimiento) ej; path_start(path0,4,path_action_stop,true)
nombre del patrón, velocidad ,que ocurre si llega al final, si es absoluto o relativo true = aparece de golpe en el inicio false = se traslada al inicio, 4 valores.

randomize() = (se coloca al inicio para asegurar la aleatoridad)
random() = (valor al azar (0-x numero indicado) ej; numero = random(6)
floor() = (redondea el valor hacia abajo) ej; numero = floor(3.7) // 3
ceil() = (redondea el valor hacia arriba) ej; numero = ceil(4.1) // 5
round() = (redondea a la unidad más cercana) ej; numero = round(4.2) // 4
numero = round(random(100))
choose() = (elige un valor aleatorio (16 parámetros max) ej; numero =  choose(1,2,3,4,5)

clamp() = (Con esta función puede mantener un valor de entrada entre un rango especificado)                        ej: speed = clamp(speed, 1, 10); variable, valor mínimo, valor máximo.
repeat () = la sentencia se repite el numero de veces que se indique en la expresión  ej: { repeat  (5) instance_create(random(400), random(400),  obj_ball); }


















El alcance de una variable de instancia está limitado a donde se crea. ¿Cómo se crea una variable de instancia? Sólamente hay que asignarle un valor, ej:

pociones = 12;
vida = 100;
nombre = "Billy";
fuerza = 5.5;
armadura = -2;

Sólo es necesario proporcionar un nombre y un valor (numérico o alfabético) para iniciar una variable y dejarla lista, se pueden usar y modificar dentro de la instancia de distintas maneras, ej

Vida -= 5 + armadura;

Si la "vida" está en 100, su valor cambiará a 97 (100 - (5 + -2) = 97). se podría reemplazar "armadura" por el valor -2, si se usa ese valor en distintos lugares y decides cambiarlo. Se tendría que ir por todo el código y cambiar cada -2 por el nuevo valor, consume tiempo y errores! pero al usar una variable, es reasignarle un nuevo valor, aumentando la flexibilidad y facilitando la corrección de errores.

Una variable local se declara, se usa y después se descarta. Solamente se crean para eventos específicos, cuando dicho evento finalice, la variable se descarta (La única excepción a esto son los scripts, donde una variable declarada como local se mantiene local al scri0pt, y luego se descarta). ¿Por qué necesitarla? Las variables ocupan espacio en memoria, sólamente las usaremos para una operación o función, es necesario tenerlas en memoria sólo el tiempo que sean usadas. Esto mantiene el código base limpio y ordenado. Para declarar una variable local usamos la función var.

var i, numero, texto;
i = 0;
numero = 24.5;
texto = "Hi there!";


Todas las variables del ejemplo anterior se "olvidarán" (desaparecerán de la memoria) al final del evento (o el script). cuidado de dar a una variable local el nombre de una variable de instancia ya creada dentro del objeto ejecutando el código, y además, no tener la intención de usar el valor de la variable local fuera del evento donde ha sido declarada. Estas variables son usadas de manera frecuente, sobre todo en ciclos, o cuando un valor se usa recurrentemente en una operación que no volverá a repetirse. ej:

var i = 0;
repeat (10)
   {
   inventario = 0;
   i+=1;
   }

El código anterior crea una variable local de nombre "i" y la inicia en cero, and sets it to 0, todo en la misma línea. En el ejemplo, el valor de la variable se usa para iniciar un arreglo. Como la variable "i" no va a ser usada en otras operaciones posteriores, puede tener un alcance local. Aquí hay otro ejemplo:

var xx,yy;
xx = x - 32 +irandom(64);
yy = y - 32 +irandom(64);
instance_create(xx, yy, obj_blood);

Aquí se ha usado la variable local para almacenar coordenadas aleatorias para crear una instancia. Es mucho más claro y obvio lo que se está haciendo, que usar código como este:

instance_create(x - 32 + irandom(64), y - 32 + irandom(64), obj_guts);

Al ser únicas al evento que las ejecuta, ¡también es posible usarlas en otras instancias mediante código! Es decir, podemos usar variables locales para ajustar y cambiar cosas en otras instancias mediante la sentencia "with()" (hay una sección sobre esto en sección Generalidades del lenguaje en el manual). El código es así:

var num = instance_number(obj_Enemy);
with (obj_Enemy)
   {
   if num>10 instance_destroy();
   }

Este código funciona porque la variable "num" es local al evento (o script) en el que está contenida, lo que permite usarla en cualquier función en cualquier objeto siempre y cuando esté en el mismo bloque de código.

Variables globales es un tipo de variable que una vez declarada no pertenece a ninguna instancia, pero puede ser leída por todas ellas. Las variables globales deben ser declaradas, tal como sucede con las variables locales, pero a diferencia de éstas, una variable global permanece en memoria hasta el final del juego. ej, se puede crear una variable global para llevar un registro del número de balas del jugador y actualizar en distintos puntos del juego. Una variable global no pertenece a una instancia en particular y puede ser leída, cambiada y usada por todas las instancias en cualquier momento, pero cualquier cambio hecho a la variable es también "global", es decir, el cambio afecta a todas las instancias que usen dicha variable. Veamos un ejemplo de esto:

globalvar food;
food = 5;

hemos creado una nuava variable llamada "food" la cual ha sido declarada como global. "food" esta disponible para cualquier instancia, por ejemplo, podría haber un objeto "food" contra el que el jugador colisione, y en ese evento de colisión tendríamos:

food +=1;

Podríamos tener otro objeto que dibuje el valor de "food", de esta manera:

draw_text(32, 32, "food = " + string(food));

Mediante variables globales podemos cambiar valores y ver reflejados esos cambios en todas las instancias que hagan referencia a esas variables. De la misma manera que con las variables locales, hay que tener cuidado de no nombrar de igual manera que alguna variable de instancia, ya que esto causaría problemas y se facilitaría la aparición de errores en el juego. Como recurso para evitar estos inconvenientes, podemos llamar a las variables globales usando la palabra reservada "global" seguida de un punto "." antes de la variable. Esto se ilustra a continuación:

global.food = 5;

Con este método, debemos usar la palabra "global" cada vez que deseemos usar la variable, por ejemplo:

global.food += 1;
draw_text(32, 32, "food = " + string(global.food));

La mayoría de las variables globales predefinidas son muy específicas y rara vez se les utiliza, pero hay tres variables en particular que son muy útiles y comunes, por lo que se describen a continuación listed below:


score
health
lives

score
Variable global para almacenar el marcador del juego.
Sintaxis:
score;

Devuelve: Real

Descripción
Esta variable tiene un alcance global y se usa para almacenar un valor numérico que generalmente se trata del marcador del juego, sin embargo no necesariamente debe ser así - que el nombre sea "score" (marcador) no significa que tenga que ser usada para el marcador... puede almacenar el valor que se desee.

Ejemplo:
if place_meeting(x, y, obj_Bullet)
   {
   score += 10;
   instance_destroy();
   }
Este código revisa la instancia actual para determinar si hay una colisión con alguna instancia del objeto "obj_Bullet", y si la hay, suma 10 al marcador global y a continuación se destruye.



health
Variable global para almacenar los puntos de salud.
Sintaxis:
health;

Devuelve: Real.

Descripción
Esta variable tiene un alcance global y se usa para almacenar un valor numérico que generalmente representa la salud del jugador health, pero hay que tener en cuenta que esto no necesariamente tiene por que ser así. A pesar de que el nombre es "health", se puede usar para almacenar cualquier valor numérico útil para el juego.




Ejemplo:
if place_meeting(x, y, obj_Enemy)
   {
   health -= 10;
   if health <= 0 instance_destroy();
   }
El código anterior revisa si hay una colisión con el objeto indexado en la variable "obj_Enemy", y de haberla, resta 10 puntos de la variable global health y luego determina si el valor de dicha variable es menor o igual a ceroSi se cumple esta condición, la instancia que ejecuta el código se destruye.