Hola, me gustaría saber si es posible hacer un highscore en GM, ya sea local (mismo móvil), o a través de internet, como por ejemplo hacer un highscore global de toda la gente que ha jugado, etc..

Empezando por lo básico, luego ya si se puede hacer otros highscore mas a nivel global ya buscare mas, pero por ahora como podría hacer un highscore con la variable "global.enemigos_matados", gracias!  :)

Un highscore es una tabla, por lo que se puede usa un arreglo o una lista (o una mapa, si prefiere) para guardar los valores. Lo demás es comparar si determinada puntuación es mayor o menor (o igual). Esto se puede hacer con if o con funciones como min() y max().

Por las funciones de las listas, que ofrecen más versatilidad que los arreglos, a mi me parecen mejor opción para manejar highscores (además que las listas se pueden ordenar de manera fácil). Si no has trabajado con listas, creo que lo mejor es empezar con arreglos. En el caso de los arreglos, el proceso para acomodar los valores en orden implica repetición, por lo que lo más inteligente sería usar al menos un ciclo que controle la comparación y colocación de puntuaciones dentro del arreglo

#2 Marzo 14, 2015, 12:43:32 AM Ultima modificación: Marzo 14, 2015, 12:45:38 AM por desplo
Aqui una manera de hacer un highscore muy facilmente:

objetos:

  • jugador
  • comando_score
  • enemigo

enemigo:
[create]
globalvar enemigos_matados, highscore_enemigos_matados;

global.enemigos_matados=0

if file_exists("highscore.ini")
{
ini_open("highscore.ini")
global.highscore_enemigos_matados=ini_read_real('enemigos','high',0);
ini_close()
}
else{
global.highscore_enemigos_matados=0
}


[destroy]
global.enemigos_matados+=1;

jugador:

[destroy]
instance_create(0,0,comando_score);

comando_score:
[draw]
if global.enemigos_matados>global.highscore_enemigos_matados
{
global.highscore_enemigos_matados = global.enemigos_matados
}

draw_text(room_width/2,room_height/2,"Tu highscore es:" + string(global.highscore_enemigos_matados));


[game_end]
ini_open("highscore.ini")
ini_write_real('enemigos','high',global.highscore_enemigos_matados);
ini_close()


En este momento estoy en mi teléfono y no he probado el código.

Si necesitas que te haga un ejemplo con gusto te lo podría pasar

Otra forma es usar el highscore que ya trae Game Maker, aunque solo trae 10 posiciones pienso que son mas que suficientes, ademas que agregar nuevos puntajes lo hace automaticamente. En el ejemplo no viene como poner nombres pero es parecido a poner puntajes.

Perfecto! Muchísimas gracias, ya lo he conseguido hacer gracias a vuestras explicaciones, un saludo :)