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.

Mensajes - brunoxzx

391
Preguntas y respuestas / Re:Coliciones exactas
Febrero 18, 2012, 08:43:38 PM
Cita de: esbxp en Febrero 18, 2012, 04:31:55 PM
Creo que voy a buscar un manual con técnicas sugerencias y recomendaciones, puesto que acá, fue mas bien como aplicar, las funciones optimas para rendimiento.

Sino habria que escribir un manualcillo, con técnicas y sugerencias de rendimiento, y detallar algunas experiencias de cada cual, para resolver ciertas cosas, eso si que nos seria de provecho, puesto que va mas halla de conocer el leguaje, ahora hay que saber como sacarle mejor partido ...
heheh ...

gracias a todos !!!


pues esta el post de ¿Qué afecta para que los juegos sean lentos? pero se le pueden añadir algunas cosas mas, tal vez ya este algo desactualizado hace tiempo le envié un mp a correjon para que añadiera lo de no usar colisiones precisas pero aparentemente ya no se conecta tal vez debí haber enviado el mp a un moderador o administrador mas activo, pero debo admitir que no lo he echo por pura flojera.
392
Preguntas y respuestas / Re:Seguimiento a un jugador
Febrero 18, 2012, 08:12:44 PM
La verdad yo no he entendido muy bien, ¿podrías subir la imagen?.
393
Cita de: fifofaifer en Febrero 17, 2012, 01:02:20 PM
De todas formas tiene mucho sentido que tire del .NET Framework de microsoft ya que puede utilizar librerias muy comunes para este tipo de aplicaciones
Sí, creo que ahora toda la IDE esta programada usando librerías en .NET lo cual no me agrada para nada, me va mas lento y se ve un efecto feo cuando muevo ventanas dentro de gm y hace mucho mas difícil la posibilidad de una versión multiplataforma.
394
Cita de: fifofaifer en Febrero 17, 2012, 10:57:07 AM
Si tienes Windows 7 no es necasario actualizar .NET Framework ya que viene incorporado, yo tengo la licencia original de GM HTML 5 y la he probado en WinXP y en Win7 y en ningun momento necesita .NET Framework eso que comentas es RARO RARO RARO

Si estas instalando una versión pirata olvidate ya que solo con las últimas actualizaciones de GM HTML 5 el ejecutable piarata te va a dar probelmas en la compilacion de juegos que van a afectar a los navegadores con los que intentes probar tus aplicaciones ya que solo si compras una licencia actualiza el programa para corregir todos los bugs que disponia la primera versión de GM HTML5 (Y estoy hablando de bugs demasiado importantes)

Pues a mi me daba errores al instalar en windows xp y se repararon al instalar .NET Framework 3 o 4 no recuerdo cual y era con licencia.
395
Preguntas y respuestas / Re:full screen
Febrero 17, 2012, 08:27:16 AM
Claro que es posible, usando la función  "window_set_region_scale()" que lo que hace es escalar la pantalla si en el primer argumento usas 1 la pantalla se quedara del tamaño original, si usas 0 se escalara para usar la pantalla completa pero sin mantener la escala inicial (como usar "full scale" en global game setings), y si usas un valor negativo se hará del mayor tamaño posible manteniendo la escala inicial (es como usar "Keep aspect ratio" en global game setings). El segundo argumento indica si el tamaño de la ventana debe ser adaptado si el room escalado no encaja.

Bien puedes usar la información anterior para hacer que al presionar f4 o cualquier tecla o algun boton se ejecute el codigo siguiente, recuerda que tienes que declarar la variable global.escalado en el primer objeto creado en el juego en en creation code del primer room.

Código (Presionar F4) [Seleccionar]
if global.escalado{
    window_set_region_scale(1,1);
}else{
    window_set_region_scale(-1,1);
}
global.escalado=!global.escalado;


Ah  lo olvidaba en global game setings en la pestaña graphics tienes marcar la casilla fullscreen mode y en la pestaña other quitar donde dice "Let <F4>. etc".
396
Lo siento Munguia parece que la prisa me hizo cometer bastantes errores  ???, así que aquí te dejo el código como debería ir  :-[.


for(i=0;i<room_width;i+=16){
     for(j=0;j<room_height;j+=16){
          instance_create(i,j,obj_cuadrito);
     }
}


Si, no sabes que hace un bucle for, puedes buscar en google, si no entiendes pregunta aquí mismo o en un nuevo post  ;).
397
Para juegos cenitales yo uso este código, espero que le sirva a todos ya que me he topado con algunos juegos cenitales en los que al colisionar con un muro se quedan algo atascados.

Código (Ev step) [Seleccionar]

//.
dirx=0;
//.
diry=0;
//Variable que indica si te has movido en este step.
mover=0;
//Belocidad del personaje
vel=4;


Código (Ev step) [Seleccionar]
/**************************MOVIMIENTO***********************/

dirx=keyboard_check(vk_right)-keyboard_check(vk_left);
x+=dirx*vel;
//Si queda dentro de un muro sale de el moviéndose en dirección contraria pixel a pixel hasta que no haya colisión.
while (!place_free(x,y)){
    x-=dirx;
}

diry=keyboard_check(vk_down)-keyboard_check(vk_up);
y+=diry*vel;
//Lo mismo que anteriormente pero en Y.
while (!place_free(x,y)){
    y-=diry;
}

//Básicamente mover dirá si presionaste alguna tecla de movimiento en este step.
mover=sign(abs(diry)+abs(dirx));


Explico lo de "keyboard_check(vk_right)-keyboard_check(vk_left)" por si no lo entiendes.

Bien, lo que hace la función "keyboard_check" es devolver si se esta pulsando determinada tecla en este step, por lo que si se esta pulsando la tecla devuelve "1", de lo contrario "0".

Citar
dirx=keyboard_check(vk_right)-keyboard_check(vk_left);
//Reemplazando por lo que devuelve cada uno y considerando que se esta presionando la tecla izquierda.
dirx=(0)-(1);
//entonces
dirx=-1;

entonces seguidamente se ejecuta esto.

x+=dirx*vel;
//reemplazando
x+=(-1)*(4);
//reemplazando otra vez
x+=-4;
//Por lo que se moverá 4 pieles a la izquierda en este step.


De allí en mas te imaginaras como funciona todo, "sign()" devuelve el signo de un numero y abs() el absoluto de un numero por si aun no sabias, y conforme al bucle while la verdad casi no dormí y tengo sueño, ademas tal vez sea algo pronto para explicarte así que si quieres busca en google lo que hace hay miles de explicaciones ya que esta en la mayoría, si no es que en todos los lenguajes de programación.

P.D: ah lo olvidaba los sprites si quieres ponerlos puedes usar un switch() o "if y elses" y usar las variables "mover", dirx y diry para que se seleccione el sprite correcto, yo uso otros métodos pero son algo avanzados y es mejor que lo hagas tu mismo. Tal vez el código no sea el mas corto del mundo pero es bastante bueno, es posible hacer el movimiento en un solo renglón pero bah no es tan legible y no te quedarían variables para definir cual es el sprite actual.
398
Preguntas y respuestas / Re:Coliciones exactas
Febrero 16, 2012, 08:57:43 PM
asdkasdfkas ya había escrito todo y al momento de previsualizar me llevo a iniciar sesión y se borro el mensaje  :'(.

Ahora que el tema cumple las reglas contesto.

Bien tu problema es que no usas las variables prediseñadas por gm, las variables referentes a sprites son estas.

Citar
x: Coordenada x actual del objeto.
y: Coordenada y actual del objeto.
sprite_index: Indice del sprite actual.
image_index: Indice de la subimagen o frame actual.
image_xscale: Escala horizontal del sprite actual.
image_yscale: Escale vertical del sprite actual.

En game maker cuando no tienes nada en el evento draw game maker dibuja automáticamente esto.
[gml]
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);[/gml]

Bien básicamente lo que tienes que hacer es usar las variables descritas en lugar de las que tu creaste, esto se hace por que la "mascara" (que es el sprite que determina la colisión) usa todas las variables anteriormente descritas para determinar su posición, escala, angulo, etc. Otra cosa, para dibujar un sprite diferente no es necesario ponerlo en el evento draw como lo hiciste basta con cambiar el sprite actual utilizando la variable "image_index", el problema de ello es que al cambiar de sprite también cambiaría su colisión para evitar esto y hacer que el sprite de colisión siempre sea el mismo puedes definir una mascara distinta en las propiedades del objeto o bien utilizando la variable "mask_index".

Por ultimo te recomiendo no usar colisión precisa amenos que sea completamente necesario ya que es MUCHO mas lenta que usar una cuadrada, tu deberías de saber esto ya que conoces como funciona internamente una colisión precisa, en realidad puedes usar cientos de colisiones precisas a la vez pero obviamente siempre sera mucho mas rápido usar una cuadrada te digo esto por que es muy común que la gente use colisiones precisas para cosas como muros. Hay muchas opciones de colision al crear sprites pero en realidad todas son precisas excepto la cuadrada.
399
for(i=0;i<(room_width div 16);i+=16){
     for(i=0;i<(room_heigth div 16);i+=16){
          instance_create(i,j,obj_cuadrito);
     }
}
400
Cita de: MaanuRP en Febrero 13, 2012, 06:53:35 AM
la funcion "choose" lo que hace es elegir al azar entre las opciones que vos le pongas dentro.
Estas opciones deben estar separadas por "," (Comas).
Acepta hasta 16 opciones solamente si no me equivoco
Solo para completar lo dicho por MaanuRP, realmente no hay mucho problema con el numero de argumentos puedes usar un choose dentro de otro choose, por ejemplo.
[gml]choose(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,choose(15,16,17));[/gml]
aunque de ese modo las probabilidades de que salga 15 16 o 17 son menores.
[gml]choose(choose(0,1,2,3,4,5,6,7,8),choose(9,10,11,12,13,14,15,16));[/gml]
Lo mismo puedes hacer con otras funciones como min() o max() de echo creo que esto venia en un  consejo de la anterior a la comunidad anterior xD  (no estaría mal volver a poner algo así).

Buen
Cita de: Spawn_x3 en Febrero 13, 2012, 06:38:00 AM
Excelente, me funciona perfecto y mucho más sencillo de como lo había realizado. No cabe duda de que hay varias soluciones a un solo problema. Una duda me podrías explicar un poco las funciones de cada parte del código, para entender lo que estoy usando.

En realidad tu idea no estaba tan mal, puedes usar ese método sin ningún problema aunque usar ifs no es lo ideal sería usar un switch que es muy parecido a usar muchos if y else de echo no dudo que internamente la función choose funcione así.

un ejemplo rápido sería así.

var a; // con esto se declara la variable temporal a.
switch(irandom(3)){// escoje un numero entero aleatorio entre 0 y 3.
     case 0: a=obj0 break;
     case 1: a=obj1 break;
     case 2: a=obj2 break;
     case 3: a=obj3 break;
}
instance_create(x,y,a);


En fin creo que esto ya se extendió demasiado y mi grafista me exige que trabaje...

P.D: ah lo olvidaba Bienvenido a comunidad gm "Spawn_x3" si tienes alguna duda no dudes en preguntar, pero antes de hacerlo no olvides buscar en el manual esperamos ver pronto un juego de tu autoría.

Edit: checando tu perfil me di cuenta de que eres de los primeros usuarios de la comu O.o! te registraste en el 2004, así que ignora lo que escribí arriba.
401
[gml]instance_create(x,y,choose(obj1,obj2,obj3,obj4));[/gml]
402
Cita de: Sdo.Ivan en Febrero 12, 2012, 09:47:56 AM
Cita de: brunoxzx en Febrero 11, 2012, 11:25:46 PM
Intenta reemplazano el image_angle=direction por esto.
[gml]image_angle=(image_angle+(sin(degtorad(direction-image_angle))*12))[/gml]

funciona muy muy bien...muchas gracias porque yo no habría dado con la solución nunca  :D insisto...mil gracias
xD!.

Escribo lo que iba a escribir en la tarde pero no tenia tiempo.
El código esta en los smart codes de yoyo, y lo que hace es rotar a una dirección progresivamente y de la manera mas corta, la verdad muy útil.
403
Preguntas y respuestas / Re:pathfinding y image_angle
Febrero 11, 2012, 11:25:46 PM
Intenta reemplazano el image_angle=direction por esto.
[gml]image_angle=(image_angle+(sin(degtorad(direction-image_angle))*12))[/gml]
404
Cita de: MaanuRP en Febrero 11, 2012, 01:37:54 AM
Si? Porque es ilegal? Porque no es la version completa?
De echo  :-[.

405
Cita de: elviskelley en Febrero 10, 2012, 02:16:20 PM
Si se puede usando el GMStudio,  búscalo que ya salio.

De momento es ilegal sacar un juego echo en gm studio, ademas de que aun esta en fase alpha, por lo cual esta lleno de bugs.