Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - Mgbu

1
Tengo un problema con mi IA, relacionado con eso de que se queda trabado dando vueltas sin moverse

El problema es que mientras se queda trabado dando vueltas scr_get_camino() sigue devolviendo 1
No entiendo, la única forma de que ocurra es que uno se esté moviendo hacia el lugar donde esta parado. Pero como no encuentro donde me estoy moviendo hacia donde estoy parado queria saber si hay alguna forma de saber cuando estoy parado realmente

Lo raro es que salvo que haya un error muy pavo, nunca me muevo a mi posición y nunca me muevo a una posición si scr_calcular_camino devuelve 0. Hay alguna forma de que al calcular un camino el script scr_get_camino() sea 1?
2
Propuestas y soporte / Añadir un tema a la sección de FAQ
Septiembre 14, 2013, 08:48:28 PM
Me parece que el tema de regular ángulos es muy frecuente y puede ir en la sección de FAQ
Me refiero a hacer que un ángulo se mantenga dentro de los 0 y 360 grados

Lo más correcto me parece agregarlo, se puede agregar este código:
//set_angulo(angulo);
var angulo;
angulo = argument0;
return (angulo mod 360 + 360) mod 360;

Dando referencia a este tema o a [user]Markus[/user] como creador

Obviamente explicando que para usarlo hay que pegar ese código en un script nuevo y bla bla bla...
3
Yo tengo un fondo de unas montañas que debo repetir horizontalmente, para dibujarlo uso draw_background_tiled(), pero eso tambien me repite el fondo verticalmente.

Cual es la solucion más correcta? dibujarlo varias veces con draw_background()? Hacer un background super ancho que abarque toda la room?
4
Propuestas y soporte / Actualizar seccion de FAQ
Abril 07, 2013, 10:42:41 PM
He visto que los adjuntos de la seccion de FAQ han desaparecido. Me gustaria volver a hacerlos para actualizar la seccion. Tambien estaria bueno agregar un articulo de Paralaje
5
Creador:
Yo, Mgbu



Versión de GM utilizada:
:GM8:  GM8, se deberia poder usar en la mayoria de las versiones con pequeñas modificaciones


Descripción:
Es una pregunta bastante común, ¿Como hacer dos object_follow en una sola view?
El resultado sería algo así como la cámara de Super Smash Bros, que siempre muestra a todos los jugadores son importar lo separados que están, y si los personajes están juntos se hace zoom para no desperdiciar pantalla. Este script soporta a dos objetos, si necesitas mas puedes modificarlo. No es un script muy complejo


Código:
actualizarView(borde_h, borde_v, prop_h, prop_v, min_h, min_v, obj0, obj1);
EDIT: gusfavio me dio el consejo de añadir una fricción a la camara. Para no hacer demasiados argumentos es mejor poner todo en un objeto:

CREATE:
[gml]
//************//
// ARGUMENTOS //
//************//

//Bordes: Distancia del objeto al borde de la pantalla
borde_h = 100 //Borde horizontal
borde_v = 100 //Borde vertical

//Proporciones: Relacion de aspecto de la view, por ejemplo las pantallas de PC son 3:2,
//              las pantallas anchas 16:9, etc. Se puede obtener dividiendo el ancho por
//              el alto del puerto
prop_h = 3 //Numero antes de los dos puntos (horizontal)
prop_v = 2 //Numero despues de los dos puntos (vertical)

//Minimo del tamaño de pantalla: Porque si se acercan mucho los jugadores se
//                               podría ver con mucho zoom, deberia seguir la relacion de aspecto
min_h = 300
min_v = 200

//Objetos a seguir       
obj0 = obj_0
obj1 = obj_1

// Velocidad de la cámara
// En porcentaje, 0.5 = 50%, 0.25 = 25%, etc. Valores mayores a 0 y menores a 1 para no hacer lio (salvo que seas Chuck Norris, claro)
vel_mov = 0.1 // Porcentaje de distancia a la que se mueve la camara en cada step (si se pone 1 siempre va a moverse a
//             la posición ideal instantaneamente, si se pone 0.5 sólo se mueve la mited de lo que debería)
vel_zoom = 0.1 // Porcentaje de tamaño que se modifica por step (pasa lo mismo que con el anterior)
[/gml]
STEP:
[gml]
//************//
//   CODIGO   //
//************//

// -----------------OBTENER POSICION OPTIMA------------------
// Es decir la posición donde debería ir la cámara

//Saber la altura y anchura de la view

optimo_ancho = abs(obj0.x-obj1.x) + borde_h //El ancho de la view es la distancia horizontal entre los jugadores mas el borde
optimo_alto = abs(obj0.y-obj1.y) + borde_v //El alto de la view es la distancia vertical entre los jugadores mas el borde
if optimo_ancho<min_h optimo_ancho=min_h //Si el ancho de la view es muy poco limitarlo al minimo
if optimo_alto<min_v optimo_alto=min_v //Si el alto de la view es muy poco limitarlo al minimo

//Hacer las proporciones

if optimo_ancho*prop_v > optimo_alto*prop_h { //Si el ancho es mayor que lo que deberia
    optimo_alto = optimo_ancho / (prop_h/prop_v) //Hacer el alto como corresponde
}
else { //Si en cambio el alto es mayor que lo que deberia
    optimo_ancho = optimo_alto * (prop_h/prop_v) //Hacer el ancho como corresponde
}

//Mover la camara

optimo_x = (obj0.x+obj1.x)/2 - (optimo_ancho/2) //La coordenada horizontal es igual al promedio de la posicion de los
                                                     //jugadores, es decir justo al medio. Luego se le resta la mitad del
                                                     //ancho porque la coordenada correponde a la esquina superior izquierda
optimo_y = (obj0.y+obj1.y)/2 - (optimo_alto/2) //La coordenada vertical es igual al promedio de la posicion de los
                                                     //jugadores, es decir justo al medio. Luego se le resta la mitad del
                                                     //alto porque la coordenada correponde a la esquina superior izquierda

                                                     
// -----------------MOVER CAMARA------------------
// Mover la cámara respetando las velocidades

view_xview -= (view_xview - optimo_x)*vel_mov
view_yview -= (view_yview - optimo_y)*vel_mov

view_wview -= (view_wview - optimo_ancho)*vel_zoom
view_hview -= (view_hview - optimo_alto)*vel_zoom
[/gml]
Recuerda activar "Enable the use of views", "Visible when room starts"


Ejemplo de uso adjuntado

Moverse con WASD y flechas

ejemplo.gmk es la versión vieja, no incluye fricción pero contiene todo en un script
ejemplo avanzado.gmk tiene fricción y es lo mismo que está escrito arriba
6
Juegos completos / Pioneer
Enero 28, 2013, 06:48:39 PM

Pioneer

Plataformas

GM8

Un juego de plataformas no muy largo pero interesante hasta el final

Eres un astronauta en la reciente base en Marte, pero todo era normal ¡Hasta que llegaron esos aliens!¿Cómo llegaron hasta ahí? Es tu tarea descubrir la respuesta y sobrevivir a la primera oleada hasta que te logren rescatar

Debes eliminar a los robots creados por los extraterestres, eliminar a la tripulación de su nave y dejar inutilizable su fábrica

Juego participante del concurso anual CGM!




Descargar desde Dropbox

7
Preguntas y respuestas / Fisicas para juego de autos
Enero 12, 2013, 01:52:59 AM
Estoy pensando hacer un juego de autos 2D visto de arriba (algo asi como micromachines)

Me gustaria hacerlo bastante realista respecto a fisicas, hacer un motor que funcione para pistas de cemento o tierra, ya que la diferencia es solo el rozamiento no?. Tambien hay que tener en cuenta que el rozamiento no es el mismo cuando se derrapa que cuando no (las ruedas solo giran hacia delante), habría que separar la velocidad en un componente de hacia delante y otro para movimiento hacia los costados para restarles el rozamiento de otra manera o algo así.
Otro tema es que no es lo mismo doblar con las ruedas bloqueadas que frenar antes de la curva (supongo que es porque el rozamiento hacia delante es el mismo que para el costado cuando las ruedaa no giran )
Tampoco quiero un simulador, quiero un juego que por lo menos se deba tomar el radio de las curvas y frenar antes (o sea no un NFS)

El problema es que no se demasiado de fisicas, sumar y restar vectores sí, pero no conozco muchas leyes y eso.

Que tengo que hacer? Buscar un libro de fisica o un tutorial de  autos? No he visto unos que sean mas avanzados que esos que ni permiten derrapar al auto (directamente modifican direction XD)
Alguien conoce un buen tutorial? No importa el lenguaje
8
Propuestas y soporte / Pregunta sobre los puntos
Diciembre 28, 2012, 02:45:13 PM
Los puntos solo pueden ser dados en los posts? Porque hoy cuando estaba por reportar un spam, me di cuenta que él tenía 6 puntos y 1 mensaje. Mientras que el mensaje que estaba por reportar no había recibido puntos.
Hice un screen para que entiendan mejor



Se puede dar puntos fuera de posts? Un error?
9
Quería saber x, para un valor conocido de a,b,c y d, parece que hay que sumar X3 con X, si fueran 2 sabría hacerlo con la formula para las ecuaciones cuadraticas, pero esto es al cubo

X2( X – a + b + c ) = d

Probé con Wolfram Alpha pero parece que tiene 3 soluciones ¿Se puede calcular esto?
10
Preguntas y respuestas / Apuntar lanzado
Octubre 20, 2012, 07:53:44 PM
Es difícil, lo que necesito es que el enemigo sepa apuntar bien para que al lanzar un objeto (que va cayendo) pase por un punto especificado, o sea las coordenadas del jugador, acá hay una imagen para que se entienda:


Intenté hacerlo pero no pude, intente buscando la forma de hacerlo usando las ecuaciones de fisica de caida libre y tiro vertical. Las cosas importantes son que los disparos salen siempre con la misma velocidad, si se les hace mas facil regulando la velocidad del objeto no hay problema. Y la gravedad es siempre la misma (0,2) y va hacia abajo

¿Se les ocurre alguna forma? No tengo problema en hacerlo yo, me gustaria para prender, a lo mejor qon una pista me sale
Si prefieren hacerlo ustedes ¿Necesitan el editable o saber los tamaños de los objetos, la gravedad y eso? No tengo problema en darle algo
Si no se puede hacer exacto no hay problema, buscaría la forma de adaptar el arma (hacer como un cluster no estaria mal) mientras que no erre demasiado jaja
11
No es agregar ni quitar una regla, es solo añadir una recomendacion a la gente que pregunta
Porque por lo menos a mi se me hace mucho mas facil resolver un problema si me adjuntan su juego, porque es muchas veces que tengo un error lo arreglo probando varias veces, ya sea porque son varios errores o porque el error no es tan facil de arreglar. Tambien el error puede estar en algo que el que pregunta no especifica, y el uso del modo debug es muy util

Así que se me ocurre agregar una oracion asi como:
"Recuerda que tu editable es muy util para ayudarnos a resolver tu problema"
Asi nomas, sin obligar, si ustedes estan de acuerdo
12
Quiero que un objeto ejecute un código, una vez para cada instancia de tal objeto. Es dificil de explicar, lo que quiero hacer es que cada bala se desvie con varios imanes, entonces tiene que calcular la atracción una vez para cada imán.
El código es así y fuanciona bien cuando hay un imán:
Citardir=point_direction(x,y,obj_iman.x,obj_iman.y)
dist=distance_to_point(obj_iman.x,obj_iman.y)
motion_add(dir,(50/(dist+1)))

Lo que pasa es que ahora quiero agregar muchos imanes, y obviamente sólo tiene el cuenta el primero creado
¿Cómo puedo hacer para que sea atraído por todos los imanes?

Otra forma sería con un "with obj_iman" pero como hago para hacerle motion_add a cada bala?
13
Preguntas y respuestas / Tonos MIDI
Octubre 14, 2012, 12:13:48 AM
Puse el logo de pregunta porque es para cualquier version de GM pienso XD

Le estoy dando más atención a la música y estoy preparando unas melodías en MIDI, la pregunta es:
¿En todas las PC los MIDIs suenan igual? Escuché de los GM (General MIDI), esos tonos son algo así como los "mínimos" o "imprescindibles" para cada producto que soporta MIDI ¿Esos sí se escuchan igual en todos lados?¿O me conviene usar una DLL para MP3 o OGG para estar seguro?
14
Como necesito usar collision_circle varias veces por step qería saber si había diferencia de  rendimiento con collision_rectangle ¿Vale la pena chequear con rectángulos en vez de círculos para no exigir la PC?
15
Como vi que lo preguntaron bastante pero no hay un engine en esta sección hice uno bien simple:

Nombre del creador
Yo, Mgbu

Breve descripción de la función
Es un código que se fija continuamente si has escrito alguna de las palabras clave para ejecutar un código, en ese código podés darle más vida al jugador, darle municiones, puntos o lo que sea

Versión de GM utilizada
GM 8.0

Código de la función

Es un objeto que se fija continuamente si has escrito un truco para el juego.. Chequea cada vez que apretas una tecla desde la A a la Z, buscando si acabas de escribir el truco. Así que no hace falta apretar enter, abrir un cuadro de texto ni nada. Apenas uno termina de escribir la clave se ejecuta lo que uno quiere

Este es el código, esto va en un objeto obj_cheats (o como quieras llamarlo). Tiene que estar cuando lo necesitas, así que es bueno ponerlo en la primera room y hacerlo persistente. Pero cuidado que no se duplique!
Esto va en el evento Key Press>Any Key
[gml]
//Seteamos los trucos, esto puede ir en create/////
cantcheats=3  //Cantidad de trucos               //
cheats[0]='medico'                               //
cheats[1]='rambo'                                //
cheats[2]='piratas'                              //
///////////////////////////////////////////////////

if keyboard_lastkey>=ord('A') and keyboard_lastkey<=ord('Z') { //Si la tecla apretada es una letra
    for (i=0;i<cantcheats;i+=1) { //Probar con cada truco
        largo=string_length(cheats) //largo = largo del truco
        largoescrito=string_length(keyboard_string) //largoescrito = largo de keyboard_string
        escrito=string_copy(keyboard_string,largoescrito-largo+1,largo) //escrito = ultimos caracteres de keyboard_string (si el truco mide 6 se fija los ultimos 6, si el truco mide 5 se fija los ultimos 5 y así)
        if escrito=cheats { //Si lo escrito es igual al truco
            switch (cheats)
            case medico: {
                //Codigo a ejecutar si se escribio "medico"
            }
            case rambo: {
                //Codigo a ejecutar si es "rambo"
            }
            case piratas: {
                //Codigo a ejecutar si es "piratas"
            }
        }
    }
}
[/gml]

Después de resumirlo queda mas lindo pero mas dificil de entender, esto es lo mismo que lo que escribí antes
[gml]
//Seteamos los trucos, esto puede ir en create/////
cantcheats=3  //Cantidad de trucos               //
cheats[0]='medico'                               //
cheats[1]='rambo'                                //
cheats[2]='piratas'                              //
///////////////////////////////////////////////////

if keyboard_lastkey>=ord('A') and keyboard_lastkey<=ord('Z') { //Si la tecla apretada es una letra
    for (i=0;i<cantcheats;i+=1) { //Probar con cada truco
        if string_copy(keyboard_string,string_length(keyboard_string)-string_length(cheats)+1,string_length(cheats))=cheats { //Obtener lo último escrito y compararlo con el truco
            switch (cheats)
            case medico: {
                //Codigo a ejecutar si se escribio "medico"
            }
            case rambo: {
                //Codigo a ejecutar si es "rambo"
            }
            case piratas: {
                //Codigo a ejecutar si es "piratas"
            }
        }
    }
}
[/gml]

Luego lo que falta es escribir en los case, ahí pones lo que queres que se ejecute cuando se escribió el truco
16
Desarrolladores / BernardiGames
Septiembre 24, 2012, 08:51:45 PM


Mgbu
Julio de 2011
Argentina

Puse el nombre BernardiGames por primera vez como chiste, en el juego TANQUES! (mi tercer juego) y decía "Copyright 2012 BernardiGames (R)" eso fue en Julio de 2011. Y nada más, solamente un nombre de chiste.


- El Explorador (Perdí el .exe y el .gmk)
- SiMaCa
- TANQUES!
- T2
- Mach 0,5
- Guerrita
- Bloques
- Pioneer



Actualmente nada en Game Maker :(
De todos modos puedes ver avances de otros juegos en Facebook


bernardigames.tk
Wordpress de BernardiGames
Facebook de BernardiGames


martinber.710@gmail.com
17
Preguntas y respuestas / Saber nombre de objeto
Septiembre 19, 2012, 07:02:34 PM
Necesito saber el nombre del objeto a través de un id
Lo necesito para saber si debo borrar tal objeto o no, sería algo así:
with (borrar)
        {
        if mi_nombre(id)=obj_bloque instance_destroy()
        }


Hay alguna función para eso? busqué en el manual y encontre object_get_name(ind) pero parece ser para saber el nombre a través del index y no desde el id
18
Estoy haciendo una animacion para hacer desaparecer un HUD o algo
Para eso en una surface dibujo el HUD y antes poniendo bm_substract le voy pasando una pantalla que lo va borrando al HUD

El problema es que no encuentro un color que no me modifique lo que está abajo, segun se, el blanco al tener valor de 255,255,255 borra todos los colores, y el negro al tener 0,0,0 no borra nada. Pero el negro me borra lo que tengo abajo de todas maneras
Entonces cambio el negro por un color totalmente transparente, pero lo transparente me pone de color negro a lo blanco que tengo debajo

¿Cual color no modifica nada en bm_substract?
19
Preguntas y respuestas / Reemplazo a gravedad [Solucionado]
Septiembre 01, 2012, 08:14:05 PM
Necesito hacer una gravedad para llos objetos pero sin usar las variables speed y direction porque el juego funcionaría mal
Podría hacerse como en física, sacando el resultado de lso dos vectores pero no me funciona

¿Como se hace una gravedad que no sea la del GM?¿Se puede guardar valores en speed, pero que esos valores no me muevan el objeto?
20
Es dificil de explicar en el titulo, estoy haciendo un mini-sistema de campos de texto, los campos de texto tienen una propiedad que es el foco (o algo asi) que permite que puedas escribir en el, si no te das cuenta proba en cualquier programa que al hacer click en un cuadro de texto te lo resalta y le quita el enfasis a los otros. Bueno, quiero que al apretar enter el foco vaya al proximo cuadro de texto

Cada cuadro de texto tiene una variable "foco" que es 1 o 0
¿Como puedo saber la instancia que esta justo debajo sin usar for o chequeo de colisiones?