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

1
A veces necesitas chequear si tu personaje está colisionando con una instancia de un objeto, pero si hay varias a la vez las funciones de colisión de GM devolverán una al azar, lo que puede no valernos para lo que queramos hacer. Por ejemplo: si nuestro personaje está encima de una plataforma que se mueve en horizontal y nos chocamos con otra que se mueve en vertical, al chequear las colisiones en código las funciones de GM (instance_place(), collision_point()...)nos devolverán una de las dos plataformas, pero no podremos acceder a la otra.

Con este código, podremos chequearlo sin problemas:
[gml]var vPlatform, vTempPlatform;

vPlatform = noone;
vTempPlatform = noone;

var iSS, vI, vExtraCheck;
for (iSS=0; iSS<instance_number(objSemisolidPlatform); iSS+=1){
    vI = instance_find(objSemisolidPlatform, iSS);
    vExtraCheck = false;
    if (vPlatform = noone) vExtraCheck = true;
    if (vExtraCheck){
        vTempPlatform = instance_place(x, y, vI);
        if (vTempPlatform != noone) vPlatform = vTempPlatform;
    }
}
return vPlatform;[/gml]
Utilizando la función instance_find() y un bucle for podemos chequear todas las instancias del objeto indicado una a una. Podemos indicar el object_index de un objeto parent y todos sus hijos se chequearán también (muy útil para chequear colisiones con distintos tipos de plataformas, enemigos...).

En el ejemplo he utilizado instance_place(), pero puede utilizarse cualquier otra función de chequeo de colisiones.

Además, si tenemos instancias desactivadas (por ejemplo, plataformas fuera de la vista) la función instance_find() las descarta automáticamente, por lo que el código es bastante eficiente.

Espero que a alguien le sirva de ayuda ;)
2
?Est?s haciendo un juego pero al probarlo has visto que todo se mov?a muy despacio? ?Quieres saber c?mo solucionar este problema? Entonces sigue leyendo ;)

Hay muchos factores que afectan a la velocidad de los juegos. Lo m?s com?n suele ser saturar la memoria gr?fica o sobrecargar el procesador con operaciones innecesarias. En esta lista encontrar?s los consejos m?s ?tiles para que tu juego funcione a la velocidad del rayo:


  • No uses sprites o fondos muy grandes. Cuanto mayor sea la imagen, m?s espacio ocupar? en memoria.
  • No uses sprites, fondos, m?sicas o sonidos que ocupen mucho espacio.
  • Si vas a usar un fondo que no sea transparente, utiliza el formato jpg para la imagen
  • Cargar los recursos desde fuera del juego aumenta la velocidad y reduce el tama?o del mismo (usa las funciones tipo sprite_add())
  • Borra todos los recursos que no necesites. Por ejemplo, al matar a un jefe de fin de nivel puedes borrar su sprite ya que no lo volver?s a usar en el juego (usa las funciones tipo sprite_delete())
  • Usa scripts para evitar c?digo repetido
  • Usa parent objects para evitar objetos repetidos
  • No abuses de los eventos step y draw. Como estos eventos se ejecutan en cada step del juego pueden ralentizarlo much?simo. No es aconsejable usar el evento step en objetos de los que vayan a haber muchas instancias
  • Preferiblemente, utiliza potencias de 2 para el tama?o de tu sprites, fondos y superficies, como 16x16, 32x32, 64x64...
  • No uses superficies mayores de 1024x1024. La mayor?a de tarjetas gr?ficas no las soportan
  • Al usar el evento de colisi?n entre dos objetos diferentes, col?calo en el objeto del que vayan a haber menos instancias. As? se reduce el n?mero de chequeos que se ejecutan
  • Desactiva las instancias que est?n fuera de la vista (usas las funciones instance_deactivate())
  • Desactiva el c?digo de dibujo cuando tengas varias vistas. De esta forma evitar?s que se dibujen cosas que luego no se van a ver (usa la variable view_index[] para ver cu?l es la vista activa)
  • Destruye todos los sistemas de part?culas, estructuras de memoria y superficies que ya no necesites
  • No abuses de los sistemas de part?culas
Si tienes m?s sugerencias env?ame un mensaje privado poniendo en el t?tulo ?Qu? afecta para que los juegos sean lentos? Si tu sugerencia es aceptada se incluir? en este tema.