Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Temas - correojon

Páginas: 1
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:
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;
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
Preguntas y respuestas / ¿Qué afecta para que los juegos sean lentos?
« en: Octubre 26, 2007, 04:55:58 pm »
¿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.

Páginas: 1

Warning: Parameter 1 to spoiler_buffer() expected to be a reference, value given in Unknown on line 0

Warning: Parameter 1 to custom_report_ob() expected to be a reference, value given in Unknown on line 0