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 - Clamud

931
No debe ser una suma, sino una multiplicación.
También puedes dibujar el sprite de esta forma
[gml]
draw_sprite_ext( sprite,subimg, x*sx,y*sy, sx,sy, 0,c_white,1 );
[/gml]
932
La forma de calcular las proporciones no es muy correcta; este código
[gml]
var x32 = w / (w/32);
var y32 = h / (h/32);
[/gml]
equivale a esto
[gml]
var x32 = 32;
var y32 = 32;
[/gml]
de modo que no hay un ajuste verdadero.
La proporción se debería tomar con las medidas de la pantalla y de la view:
[gml]
sx = display_get_width() / view_wview[0]; //escala horizontal
[/gml]
si la view tiene la misma relación aspecto de la pantalla, entonces la escala vertical debería ser igual a la horizontal
[gml]
sy = display_get_height() / view_hview[0]; //escala vertical
[/gml]
despues usa alguno de los valores de escala dentro de la función draw_sprite_stretched
933
Por lo general, los iconos se ejecutan más rápido. En GMS casi no hay diferencia, pero en GM8 los iconos son hasta 30% más rápidos. Me imagino que el intérprete de código es más eficiente en GMS, y tal vez no hay diferencia si se usa el YoyoCompiler.
934
room_instance_add
935
Disculpa kostra, no se porqué me imaginé el nombre y el avatar de Marth  :-[
936
General / Re:Mi primer Sprite
Febrero 16, 2016, 05:18:06 PM
Yo no logro entender bien lo que representa el sprite, es un buen inicio, pero necesitas practicar más. Uno de los consejos que he leido de animadores profesionales (como Richard Williams) es que antes de ser un buen caricaturista o animador hay que aprender a dibujar cosas reales, pienso que tienen razón.
937
Marth me ganó, de todos modos voy a mostrar lo que escribí, es una ligera variación.
¿Quieres hacer un juego de pelea al estilo Street Fighter?, si apenas comienzas con GameMaker no te recomiendo que lo hagas, un juego como ese requiere muchos conocimientos y mucho trabajo. Como sea, esta es la solución que se me ocurrió:

En un objeto controlador, en el evento Create, inicia una alarma de 20 segundos y una variable para contar las rondas
[gml]
alarm[0] = 20*room_speed;
ronda = 0;
[/gml]
Para dibujar los segundos, sin decimales, puedes hacer esto (en el evento Draw)
[gml]draw_text( x,y, string( alarm[0] div room_speed ));[/gml]
En el evento Alarm 0 (del controlador), guarda los resultados y restablece los puntos de los jugadores y sus posiciones. También revisa si se ha alcanzado el número máximo de rondas para terminar el juego.
[gml]
resultado1[ronda] = obJugador1.puntos; //puntos del jugador 1
resultado2[ronda] = obJugador2.puntos; //puntos del jugador 2

obJugador1.puntos = 0;
obJugador2.puntos = 0;

obJugador1.x = obJugador1.xstart;
obJugador1.y = obJugador1.ystart;
obJugador2.x = obJugador2.xstart;
obJugador2.y = obJugador2.ystart;

ronda += 1; //incrementar contador de rondas
if( ronda >= 5 ) //si es 5 el juego termina
{
    total1 = 0; //preparar variables
    total2 = 0;
    for( i=0; i<ronda; i+=1 )
    {
        total1 += resultado1; //sumar los resultados
        total2 += resultado2;
    }
   
    if( total1 > total2 ){
        //el jugador 1 gana
    }
    else if( total2 > total1 ){
        //el jugador 2 gana
    }
    else {
        //empate
    }
}
[/gml]
Faltan varios detalles dentro del código, pero esa es la idea.
938
Juegos completos / Re:Gurí
Febrero 16, 2016, 04:44:58 PM
Los gráficos son bonitos y los controles funcionan a la perfección, pero el juego es demasiado difícil. El primer nivel debería ser pequeño y fácil, y aumentar gradualmente la dificultad. Los pirmeros niveles darían rápidamente una recompensa al jugador para engancharlo, y después deberían presentanrse los verdaderos retos. Sería bueno tener un sistema de checkpoints o vidas, para no tener que repetir los niveles con tanta frecuencia, y con el mismo objetivo, serían muy buenos algunos powerups u objetos coleccionables, que además invitarían a la exploración. Intentaré terminar esta versión, pero me encantaría ver un rediseño.
939
Si son sprites diferentes puedes usar la función choose, con 16 argumentos como máximo:
[gml]sprite_index = choose( spr1, spr2, spr3 );[/gml]

Si cada consejo es una sub-imágnenes de un sprite usa la función irandom:
[gml]
sprite_index = spr1;
image_index = irandom( image_number - 1 );
[/gml]
940
Hay muchas formas de ajustar el juego a la pantalla. Es necesario tomar varias consideraciones para usar la más apropiada, por ejemplo: la resolución de los gráficos, la proporción de los personajes en relación a la pantalla, el área de los niveles que debe ser visible, la posición de los elementos del HUD.

He usado dos formas de ajuste. En la primera, la room es de 740x480 (los gráficos deben verse ligeramente pixelados) y la view se ajusta a la proporción de la pantalla, pero siempre manteniendo un área igual (o aproximada) a 307200 pixels, así la escena se recorta por los lados, o arriba y abajo, pero no demasiado. En otro juego he usado rooms de cualquier tamaño, y la view se hace igual al tamaño de la pantalla, pero como es en 3D, la cantidiad de escenario visible se controla con el FOV (field of view).
941
GIMP: lo he usado para practicar (ejemplos adjuntos), pero no permite hacer animaciones fácilmente
GraphicsGale: tiene varias herramientas para facilitar las animaciones, pero la versión gratuita no permite exportar ciertos formatos
Aseprite: me gusta menos que el anterior y la versión gratuita no permite guardar
Piskel: no lo he usado mucho porque no permite pegar imágenes del portapapeles
942
Otra solución es destruir obj_hitbox_sword al mismo tiempo que obj_player.
943
Lo que entiendo es que el objeto ob_cambio es una puerta que transporta a otra room.
La solución es poner un creation code diferente a cada instancia, para hacer eso ve el editor de rooms, haza click derecho en las instancias de ob_cambio y selecciona creation code, ahí puedes asignar los valores individuales.
944
El problema es que pueden ocurrir retardos al reproducir algunas pistas, causando desincronización.
Para evitar eso podrías hacer canciones con múltiples canales y usar una extensión o dll que permita cambiar el volumen de cada canal.
Otra opción es usar música escrita en un tracker y usar una extensión o dll que la reproduzca; las ventajas de este último método es que hay un mayor control de la velocidad de  reproducción y de los canales a utilizar, también puedes avanzar compases de forma precisa, además los archivos de música suelen ser más ligeros que el mp3 y tienen buena calidad de sonido. Este formato se utilizaba en el juego Unreal de 1998 y tenía música adaptativa.
Busca estensiones aquí: http://www.gmtoolbox.com/

Si usas GMS es más fácil, porque tiene funcionces para sincronizar audio: http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio%20synchronisation.html

Quizá lo más dificil sea el método para determinar el inicio del combate y su finalización.
945
Con los scripts que mostrados, es un poco difícil saber.
¿En qué momento se utiliza la función room_goto?