Menú

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.

Menú Mostrar Mensajes

Temas - kostra

#1
Nombre del creador: Kostrón Sobakón
Breve descripción de su función: Nunca te ha pasado que quieres transformar en string una ds_list, pero el json solo sirve para ds_maps?, te da pereza tener que ingeniartelas cómo hacerlo? para qué, si ya lo hice yo por ti!! c:
Versión GM utilizada: GMS2.. pero meh, seguro sirve para todos o casi todos los GM
Modo de uso:
En el encoder, como argumento hay que poner una ds_list y devuelve un json (un ds_map transformado en string)
En el decoder, como argumento hay que poner un json (string que representa un ds_map... obviamente un json sacado de un jsln_encoder, si no no sirve!!!)
CódigoS (son 2, el encoder y el decoder):
[gml]
#region jsln encode
   function jsln_encode(_ds_list) {
      var _list = ds_list_create();
      ds_list_copy(_list,_ds_list);
      var _map = ds_map_create();
         ds_map_add_list(_map,"list",_list );
         var _json = json_encode(_map);
      ds_map_destroy(_map);
         
      return _json;
   }
#endregion
#region jsln decode
   function jsln_decode(_json) {
      var _map = json_decode(_json);
         var _ds_list = ds_list_create();
         ds_list_copy(_ds_list,_map[? "list"]);
      ds_map_destroy(_map);

      return _ds_list;
   }
#endregion
[/gml]

Adaptaciones a los antiguos scripts...
[gml]
///jsln_encode(ds_list)
var _list = ds_list_create();
ds_list_copy(_list,argument[0]);
var _map = ds_map_create();
   ds_map_add_list(_map,"list",_list );
   var _json = json_encode(_map);
ds_map_destroy(_map);
         
return _json;
[/gml]
[gml]
///jsln_decode(json)
var _json = argument[0];
var _map = json_decode(_json);
   var _ds_list = ds_list_create();
   ds_list_copy(_ds_list,_map[? "list"]);
ds_map_destroy(_map);

return _ds_list;
[/gml]

Cualquier duda, pss pregunten
#2
NOTA IMPORTANTE!!! No se flipen con el tamaño de la password (no es necesario) pk peta con stack overflow!! (me acabo de dar cuenta xd)

Nombre del creador: Kostrón Sobakón
Breve descripción de su función: Encripta una string con apariencia de base64 pero cuando alguien trate de decodificarlo verá que no conseguirá nada aunque lo decodifique varias veces en cadena, pues pa eso está la "password" c:
Versión GM utilizada: GMS2.. pero meh, seguro sirve para todos o casi todos los GM
CódigoS (son 2, el encoder y el decoder):
[gml]
#region mega64_encode
   function mega64_encode(_string,_password) {
      var _str = _string;
      for (var i = 0; i < string_length(_password); ++i) {
         _str = string_char_at(_password,i+1)+base64_encode(_str);
      }
      return _str;
   }
#endregion
#region mega64_decode
   function mega64_decode(_mega64_string,_password) {
      var _str = _mega64_string;
      var _reversed_pass = "";
      for (var i = 0; i < string_length(_password); ++i) {
         _reversed_pass += string_char_at(_str,0);
         _str = string_copy( _str,2,string_length(_str)-1 );
         _str = base64_decode(_str);
      }
         
      var _pass = "";
      for (var i = 0; i < string_length(_reversed_pass); ++i) {
         _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
      }
         
      if (_password == _pass) { return _str; }
      else { return false; }
   }
#endregion
[/gml]

Adaptaciones a los antiguos scripts...
[gml]
///mega64_encode(string,password)

var _string = argument[0];
var _password = argument[1];
var _str = _string;
for (var i = 0; i < string_length(_password); ++i) {
   _str = string_char_at(_password,i+1)+base64_encode(_str);
}

return _str;
[/gml]
[gml]
///mega64_decode(mega64_string,password)

var _mega64_string = argument[0];
var _password = argument[1];
var _str = _mega64_string;
var _reversed_pass = "";
for (var i = 0; i < string_length(_password); ++i) {
   _reversed_pass += string_char_at(_str,0);
   _str = string_copy( _str,2,string_length(_str)-1 );
   _str = base64_decode(_str);
}
         
var _pass = "";
for (var i = 0; i < string_length(_reversed_pass); ++i) {
   _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
}
         
if (_password == _pass) { return _str; }
else { return false; }
[/gml]

Supongo que no hace falta explicar su uso a detalle... se usa igual que el base64 pero con una pasword que tú te inventes.. poniendo siempre la misma que uses al encriptar.. para desencriptar, que si no la lías parda!! D:
Sé que se podría aprovechar mejor la pass, pero lo hice rápido, si alguna vez lo actualizo avisaré. Se aceptan sugerencias (otra cosa es que haga caso xD)
#3
Buenakas! ando haciendo un plagio genérico de maincra, tengo ya 170 items programados, mecánicas sofisticadas, crafteos, construcción etc... muy muy avanzado. Y actualmente empecé a hacer pruebas para la generación de un mapa muy muy grande. El tamaño que he considerado para la room principal de la superficie, la cual trato de generar un terreno pseudo-aleatorio de tierra y más alante poner bordes de arena simulando playas, es de exactamente 12800x12800px, usando una view de 640x352px

Como la interacción con esta tierra base, es mínima y la puedo detectar de muchas maneras, he decidido usar tiles que es mil veces más eficientes que poner una cantidad muy muy masiva de objetos, aun desactivándolos a fuera de la room, entonces, mi generación consiste en un objeto, con un sprite de 2048x2048 las cuales tiene unos cuantos frames con distintas formas que funcionarán como plantillas de pseudo-aleatoriedad. Uso un objeto con este sprite, con el siguiente código:

create:
[gml]///init

//coloco el generador con el sprite plantilla en el centro de la room, snapeado a una grid de 16x16
x = floor( (room_width/2)/16 )*16;
y = floor( (room_height/2)/16 )*16;
image_speed = 0;

//el centro tendrá la plantilla del frame 0 siempre
image_index = 0;
image_angle = irandom(359);

//inicializamos variables de la generacion
procesos = 100; //veces que la plantilla cambiará de forma y se moverá de lugar
tubo = 0; //variable para controlar una barra de carga basada en los procesos

//rellenar la plantilla principal
for (var i=x-1024;i<x+1024;i+=16) {
    for (var j=y-1024;j<y+1024;j+=16) {
        if collision_point(i,j,oterraingen,true,false) {
            tile_add(tdirt,0,0,16,16,i,j,5);
            }
        }
    }

//actualizacion de variables
procesos--;
tubo++;
[/gml]

step:
[gml]///generar terreno

if procesos {
    //mover plantilla
    x = floor( irandom_range(2048,room_width-2048)/16 )*16;
    y = floor( irandom_range(2048,room_height-2048)/16 )*16;
   
    //cambiar de forma
    image_index = irandom(image_number-1);
    image_angle = irandom(359);
   
    //rellenar plantilla nueva con tiles
    for (var i=x-1024;i<x+1024;i+=16) {
        for (var j=y-1024;j<y+1024;j+=16) {
            if collision_point(i,j,oterraingen,true,false)
            && !tile_layer_find(5,i,j) {
                tile_add(tdirt,0,0,16,16,i,j,5);
                }
            }
        }

    //actualizacion de variables
    procesos--;
    tubo++;
    }
else {
    //volver al centro, crear al jugador y destruirse para empezar la partida
    x = room_width/2;
    y = room_height/2;
    instance_create(x,y,oplayer);
    view_object[0] = oplayer;
    instance_destroy();
    }[/gml]

y de extra, irrelevante al problema, el tubo de carga en ev draw:
[gml]///draw tubo loading

var _tmaxlengh = 500;
var _tmax = 100;
var _tpos = tubo*_tmaxlengh/_tmax;

var _x = view_xview[0]+view_wview[0]/2-_tmaxlengh/2;
var _y = view_yview[0]+view_hview[0]/2;

draw_set_colour(c_black);
draw_rectangle(0,0,room_width,room_height,false);

draw_set_colour(c_white);
draw_rectangle(_x,_y-2,_x+_tmaxlengh,_y+2,true);
draw_rectangle(_x,_y-2,_x+_tpos,_y+2,false);[/gml]


Una vez hayan entendido el método que hice, veo que solo con 100 procesos (y no niego que me encantarían más), se me genera un terreno (una especie de gran isla) que me acaba de gustar sin que quede tierra suelta inaccesible y/o formas muy raras que no me convencen... Observo que usar tiles, probablemente sí ayuda, incluso si están activos todos a la vez ( hablamos de +300k tiles ), pero claro, como podrán adivinar... se me tira ~20 mins generando terreno y esto me parece un problema MUY GORDO que hará que el jugador se canse de esperar y cierre el juego...

Alguna sugerencia para mejorar este método. O incluso alguna idea para tener una generación parecida aun que deba de cambiar radicalmente el método?
#4
Tengo el clásico sistema de pathfinding que enseñan en el 99% de los tutoriales

[gml]///AI_init(width,height,precise)

precise = argument[2];
width = argument[0];
height = argument[1];

_grid = mp_grid_create(0,0,ceil(room_width/argument[0])
,ceil(room_height/argument[1]),argument[0],argument[1]);
_path = path_add();
_obstacles = ds_list_create();

mp_grid_add_instances(_grid,obj_wall,precise);

_priorityGrid = ds_grid_create(width,height);
[/gml]

y

[gml]///AI_patrol(x,y,allowDiagonal,speed)

if !mp_grid_path(_grid,_path,x,y,argument[0],argument[1],argument[2]) {
    //show_debug_message("Path could not be computed")
    return false;
    }
else{
    path_start(_path,0.6,path_action_reverse,true)
    return true;
    }[/gml]

me funciona bien pero... solo si pongo una speed >= 1... si pongo una speed < 1 por ejemplo 0.6 pues ya no funciona cuando ha de dirigirse hacia abajo y/o derecha, sin embargo arriba y/o izquierda sí funca... me topé con el mismo problema con más velocidad cuando implementé estos scripts en el evento step, entonces lo cambié a un bucle de 2 steps en una alarm y se arregló, hasta ahora que lo estoy intentando con menos velocidad.

Antes que comentéis lo que me imagino, la razón por la que la quiero poner en bucle es porque mi juego, a parte de que el pathfinding lo hago para los enemigos sigan al player (y el player obviamente se mueve xd),  también he de resetear a tiempo real los obstáculos, ya que es un juego estilo minecraft y las paredes, agua, etc (obstáculos) pueden cambiar en cualquier momento.

Cómo soluciono esto? me encantaría poner enemigos lentos :(
#5
Intento hacer lo que dice el título, teniendo la carpeta "maps" con varios archivos ini, necesito agarrar todos los nombres y meterlos en una array para previo uso, he encontrado funciones file_find_ y he mirao por google, gmc, reddit, intento implementarlo pero no me sale

mi código actual:
[gml]
if directory_exists(working_directory+"/maps") {
    var i=0;
    var dir = file_find_first(working_directory+"/maps/",fa_readonly);
    while (string_length(dir) > 0) {
        file = dir;
        show_debug_message(string(file));
        dir = file_find_next();
        i++;
        }
    file_find_close();
    } else show_debug_message("nope")
[/gml]

he probado el fa_readonly, el fa_directory, pero no entiendo eso del todo, tampoco entiendo lo del string_lenght, también probé con dir != "" que vi en otro ejemplo... el manual de gm no te sale ningún ejemplo completo, nada más que una linea que no me ayuda nada... si alguien me dice cómo hacerlo bien y de paso si me explica de forma que lo ENTIENDA, pues se agradece
#6
A alguien no le ha ocurrido que programa un juego que necesita un host, pero como apenas usa el host para 3 o 4 archivitos de texto? entonces pilla un host gratis porque pagar uno solo para usar una diminuta parte no vale la pena... pero siempre está el miedo de que al ser gratis, acabe dándote problemas o incluso tenga problemas de que te lo borren todo porque al host le dio la gana? pues sugiero a CGM que pudiese abrir un espacio en su servidor para que los desarrolladores lo usen para ello pagando una cuota que, obviamente sería una cuota mucho más baja que el precio que cobra un host, algo que sea proporcional al uso que le de, algo así como contratar un "microhost", y con esto, pues de paso CGM podría ir sacando para pagar la mensualidad que le pertoca... algo así como "alquilar" partes del host que ya tiene contratado...

Es una idea muy abstracta que se me acaba de ocurrir, yo lo suelto y ya que opinen y hagan lo que quieran (yo igual no tengo ni medio céntimo, pero no me cuesta nada compartir la idea a ver si no es tan loca xD)
#7
Estoy poniendo una neblina con effect_create_above(ef_cloud,xx,yy,2,c_white); el problema es que al juntar varias nubes, al tener un blanco no tan blanco, pues se ven nuber demasiado grises.

Y me gustaría que fuese más blanco (un poquito gris lo tolero, pero es demasiado y no quiero bajar la cantidad de nubes que creo)...

He probado una tontería a ver si cuela, que es usar el mismo truco que se usa para poner un sprite en blanco y probé esto:
d3d_set_fog(true, c_white, 0, 0);

Pero no funciona, y el que conozca mejor esa función sabrá que probé una tontería seguamente xD

El caso es.. qué puedo hacer?

(si me obligan a usar surfaces, que espero que sea el ÚLTIMO recurso, me gustaría un códiguito y no solo el concepto, aun no estoy muy familiarizado con las surfaces, sería muy de agradecer)
#8
Buenas, necesito a gente que tenga algún mando/control/joystick/gamepad comoquieras llamarlo... que haga un pequeño test y me pase un pequeño informe para poder adaptar mi proyecto a distintos tipos de mandos.

Solo tienen que bajar el .exe que adjunto aquí en el post (hecho con GMS), abrirlo con tu mando conectado (en el puerto id 1, si no funca, prueba en todos los puertos usb que tengas). y cuando pulse un botón, en la room se verá un número, cada botón que pulses saldrá un número (mantener pulsado), si no pulsas nada, saldrá un 0.

Entonces, necesito saber el número que sale en TODOS los botones (el stick y el panel de flechas no cuentan)

En los de tipo ps tendremos cuadrado,X,triángulo, círculo, L1,L2,L3,R1,R2,R3select y start (L3 y R3 son los clicks de los stick/palancas)
Y en los de Xbox tendremos A,B,X,Y,LB,LT,RB,RT, y no sé como se llaman los 2 del centro xD y no sé si hay click en la palanquita, deconozco mucho el control de xbox, solo intenten no dejarse ningún botón pls

Entonces, pulsen un botón, apunten el número, pulsen otro botón, apunten el número, y así con todos, y me responden en este post la lista con todos los botones con su respectivo número (id) y el tipo y/o marca del mando que has usado.


PD: me interesa sobretodo controles de xbox, indiquen si son de xbox, xbox 360, xbox one, y si es ps, indiquen si es ps1, ps2, ps3, mando genérico, etc...

Muchísimas gracias por su humilde colaboración. Archivo de testeo adjunto, cualquier duda preguntenla.
#9
Autor: Kostrón Sabrosón
Versión de GM: Studio 1.4.9999.
Descripción: Metes un valor o variable y te devuelve una constante de esta lista https://i.gyazo.com/814f6cb922f0d1484f1991349c6ae8db.png
evadiendo "buffer_f16" y "buffer_text" que según he leido, GM no los soporta.

script:
[gml]///buffer_type(value)

var val = argument[0];

if is_string(val) {
    return buffer_string; //string
    exit;
    }
else if is_bool(val) {
    return buffer_bool; //bool
    exit;
    }
else {
    var str = string(val);
    if string_count(".",str) > 0 {
        if val >= 16777216
        && val < 16777216 {
            return buffer_f32; //f32
            exit;
            }
        else {
            return buffer_f64; //f64
            exit;
            }
        }
    else {
        if val < 0 {
            if val >= -128 {
                return buffer_s8; //s8
                exit;
                }
            else if val >= -32768 {
                return buffer_s16; //s16
                exit;
                }
            else if val >= -2147483648 {
                return buffer_s32; //s32
                exit;
                }
            else {
                return buffer_u64; //u64
                exit;
                }
            }
        else {
            if val <= 127 {
                return buffer_s8; //s8
                exit;
                }
            else if val <= 255 {
                return buffer_u8; //u8
                exit;
                }
            else if val <= 32767 {
                return buffer_s16; //s16
                exit;
                }
            else if val <= 2147483647 {
                return buffer_s32; //s32
                exit;
                }
            else if val <= 4294967295 {
                return buffer_u32; //u32
                exit;
                }
            else {
                return buffer_u64; //u64
                }
            }
        }
    }[/gml]

ejemplos:
buffer_type(24) te debolverá la constante "buffer_s8"

buffer_type(false) te devolverá la constante "buffer_bool"

var ejemplo = -2345303.23;
buffer_type(ejemplo) te devolverá la constante "buffer_f32"

var global.ejemplo2 = "ola k ase";
buffer_type(global.ejemplo2) te devolverá la constante "buffer_string"


Eso es todo, si alguien que sea más pro que yo se le ocurre una manera mejor sin tener que poner 500 ifs embedidos unos a los otros, es libre de comentarlo y aportar mejoras ;)
#10
Buenas, ando haciendo unos scripts para facilitar la vida un poco más al que pretende hacer un juego online, el caso es que para enviar un paquete de buffer al servidor, hay que indicar qué tipo de dato se envía, con "buffer_u8", "buffer_f16", etc..

Lo que quiero saber es si hay alguna manera de saber qué tipo de estos es una variable, para hacer un script... he visto que hay funciones por ejemplo "is_int32", "is_int64"... pero claro, ahí no hay ni signed/unsigned, ni hay float... entonces investigando en google, vi una manera de sacar cuándo es unsigned, simplemente convirtiendo el número decimal a número binario y simplemente mirar cuántas cifras quedan mirando su "lenght".. pero claro, aquí no entran ni los números con signos ni los decimales... entonces, aquí me he estancado... alguna sugerencia??

Me gustaría crear un script donde le metas un argumento y te devuelva un tipo (con un número que lo identifique o algo)
#11
Preguntas y respuestas / Dibujar parábola con puntitos
Septiembre 11, 2019, 11:30:12 PM
Hola, alguien sabría decirme, o pasarme algún tuto sobre cómo hacer una parábola dibujada con puntitos? (no hace falta que seté animada)

Es para que me sirva de "mini tutorial"

Digamos, yo tengo un objeto que dependiendo de donde clickes con el mouse, hará un salto, y este tiene gravedad y quisiera que se viese con puntitos (spr_punto por ejemplo) la parábola que el objeto va a hacer... espero explicarme bien... osea ya no es hacer una simple parábola, sino que éste coindida con el sped y la gravedad que tengo asignada en el objeto (que es el player), entonces que yo mismo pueda calibrar algunas variables
#12
tengo

var res = json_decode(result);

siendo result una string en formato json que devuelve de una tabla sql con 2 columnas, las columna "nick" y la columna "sc"
y las quiero poner en 2 arrays, por ejemplo "nicktable[n]" y "sctable[n]"
#13
Bueno, la idea es crear un plataformero donde, en vez de mover al player, lo que se mueve es la room entera, así como se suele hacer en los endless, nunca lo he hecho, y supongo que si me pongo lograré hacer un sistema que funcione y se muevan el duelo y las paredes pero... Y cuando quiero poner más cosas? Un enemigo que se mueve, un cañón que dispare, etc.. Osea otras cosas que a parte de moverse junto al obj_wall, tienen además su propio movimiento y es aquí donde me explota la cabeza xd

Alguien sabe si existe algún tutorial que trate sobre esto? Ni siquiera sé qué términos usar en google, no importa en qué idioma, y si no hay tuto, pues algún conesjo , apunte, lo que sea para tener alguna idea de qué me enfrento xd

Graxie :B
#14
Wenas, miren intentamos implementar el Facebook SDK para el analitys. Ponemos la extensión, ponemos unos objetos de prueba para ver si funca o no, añadimos la app en el facebook developer y tal, compilamos, probamos y el analitys, donde la "depuración de eventos" no registra nada, no sale nada.

Buscamos tutoriales pero no hay apenas info sobre este tema, si alguien puede ayudar sería buenísimo, gracias de antemano. Pregunten cualquier duda por si me dejo detalles.
#15
Hola, miren necesitamos saber si para crear el archivo .ipa para trabajar en apple store, se necesita sí o sí pagar la licencia de la misma apple store, o es suficiente con tener el modulo en game maker?
#16
[gml]///draw iluminacion disparos

if image_index == 0
    yy = y+254;
else
    yy = y+250;

switch canon {
    case 0:
        draw_set_alpha(alpha);
        draw_set_colour(color);
        draw_rectangle(armaI-16,yy-2,armaI+15,yy+1,false);
        break;
    case 1:
        draw_set_alpha(alpha);
        draw_set_colour(color);
        draw_rectangle(armaC-16,yy-2,armaC+15,yy+1,false);
        break;
    case 2:
        draw_set_alpha(alpha);
        draw_set_colour(color);
        draw_rectangle(armaD-16,yy-2,armaD+15,yy+1,false);
        break;
    }[/gml]

la primera parte no funca bien, es como si fuese con retraso (o adelanto) y no se cuadran los rectángulos en la y, ni en image_index 0 ni en image_index 1, están al reves... y no es poner 1 en la primera linea, eso ya lo he probado.... el index 0 es más abajo y el index 1 es 4px más arriba

Conclusuión, pinto tres rectángulo encima de un sprite, con cierto color y cierta alpha, y va todo bien, menos la yy, que es la distancia entre la y de la istancia y la y de los rectángulos.
#17
miren, tengo un objeto con un sprite de 32x32px... lo pongo en la room y lo escalo manualmente al doble, por ejemplo a 32+64, lo que vienen a ser 2 tiles, sería lo MISMO que ponerle en código image_xscale = 2;

Y trato de sacar la variable que use el gm para hacer tal escalado... por lo visto no es xscale... ya que me devuelve 1, en vez de 2... y tampoco es sprite_width ni sprite_get_width(sprite_index)... estos me devuelven 32 en vez de 64 que es lo que realmente mide en la room... Necesito alguna variable o algo para sacar ese escalado, ya sea algo que devuelva 2, o 64, no me importa cuál... pero sobretodo, trato de evitar tener que usar elcreation code a caaaaada instancia que vaya a escalar en el editor... de alguna variable sacará gm el escalado para poder mostrarlo en pantalla no? :S
#18
Literalmente eso... Pasa que mi juego de repente, al cambiar las músicas de formato, a ponerlas ogg, de repente tooooodos los sonidos (wav) están desordenados... el rebote suena como el fuego, el fuego como el pickup, el pickupp como el rebote.... por poner un ejemplo... suena bizarro mi juego ahora :S

He probado cerrar y abrir GMS, he probado pasar el pincelito, he probado exportar el proyecto, crear uno nuevo e importarlo... sigue sonando fatal y esto me asusta mucho, espero qu no sea ningún tipo de corrupción :S pero no lo creo por que borré todos los recursos de .sound.gmx de la carpeta data y volví a guardar ALL para que se volvieran a generar, además de que he comprobado que los audios en la carpeta de la data "sounds/audio" originales suenen bien, y sí, están todos bien sin corromper... qué puedo hacer??? esto si que arruinaría mi proyecto T_T
#19
Juegos en desarrollo / Golfinity
Enero 05, 2019, 08:12:20 AM

-GOLFINITY-
HabilidadGM: Studio



Un simple juego de minigolf... ¿O quizás no? :B






-Nuevo- Windows 0.5.4.5a - https://mega.nz/#!lBklCaII!dOD-tHvoSjnGv9LFz18bXRFAO0qq7TXI2P5sdlGD9q8
Android 0.5.4a - https://mega.nz/#!wYkTBYRD!Yd5GaPPloiDa5gyqJZJqGIhnDAOLQkuk7rDhg4xEYwM
Windows 0.4.5a - https://mega.nz/#!BU1x0aJY!DkQL5F_uiwwmSuyq8Db_6PdccA4iehUYxo4doJpaMY4


Como algunos sabrán, empecé a hacer un remake (desde cero) del proyecto Golfinity, al cual dejé como Golfinity [Lite] en el foro. La razón de crear un nuevo post es que este juego es muy diferente al prototipo anteriormente programado. A diferencia del prototipo, donde juegas en un escenario fijo a un minigold infinito donde aparecen obstáculos aleatoriamente para llegar a un top, este nuevo juego es un minigolf de aventuras, con alguna que otra sorpresa y con todo el entusiasmo, les traigo una demo con 4 niveles, repartidos a 5 subniveles cada uno, más el tutorial con 6 subdivisiones, equivalen a un total de 21 rooms jugables!! Espero que lo disfruten y se aceptan criticas constructivas e ideas. Y si algún spriter y/o level designer muy aburrido le apetece aportar su crédito al proyecto, será bienvenido por el acojonante precio de CERO €/$/¥/... xD

Espero que se lo puedan pasar hasta el final, suelo hacer juegos dificiles, pero he testeado y CREO... que está fácil, solamente hay que apuntar, no ir a lo loco!! xD

-----------------------------------------------------------------
-----------------------------------------------------------------

ERRORES CORREGIDOS:
0.5.4.5a
-Bajada considerable en número de objetos y subida considerable en FPS, con lo cual, mucho menos lag.
-

0.5.4a
-Pelota atraviesa pared por algunas esquinas (si vuelve a ocurrir agradezco notificación).
-Arreglada profundidad de la moneda recogida que va hacia la esquina superior-derecha, ahora no pasa por debajo de la baldosa de inicio ni de ninguna.
-Arreglados bugs con la cámara: confrontaciones con otros objetos, error al activarla mientras la bola está en movimiento.
-Reedición de niveles, con más spawns de vida para poder avanzar poco a poco y con cuidado, a buena distancia para poder verlo dentro del campo de visión, con o sin la cámara.
-Disminución de tiempo que tarda en spawnear un corazón en los spawns de vida.
-Arreglado error en un level que estaba cortado con lava y no se podía avanzar.
-Arreglado menu pausa en android y mejorado en windows

NOVEDADES:
0.5.4.5a
-Nuevos enemigos: "topo" y "murciélago" terminados (sprite del topo por mejorar).
-El tile de start, ahora también es un spawn de vida.

0.5.4a
-Camara de navegación (con límite de visualización en sincronía con la desactivación de instancias)
-Radar simple que señala dónde está la meta, pueden haber tantos radares como metas haya en la room (por mejorar)
-Menú principal
-Menú selección nivel (0 = tutorial)
-Menú pause (bug por arreglar en el fondo de pause)
-Más rooms
-Liberación considerable del uso de memoria (pero aun le queda más optimización)
-Pistas de música en .ogg

OBSERVACIONES:
0.5.4
-Ninguna observación, ya que nadie me comentó en el post...

0.4.5a
-Las cajas solo dropean una moneda, y comprové que no hubiesen dos cajas superpuestas y checkeé el código y está todo ok, probablemente te confundiste al dropear dos monedas a la vez, siendo una de estas, la anterior que aun no la agarraste y te seguía.
-Los pinchos, con cuidado son traspasables, eso es debido a la máscara de colisión, el cuál reduje para evitar muertes injustas y esto de que a veces se pueda aprovechar para cortar camino, pues la verdad, no me molesta, incluso sería una manera de explorar las posibilidades de pasarse un nivel :D por el momento así que queda.
-@Black_Cat esa idea sobre desviar la trayectoria a mitad de tirada, opino que el juego tiene la dificultad suficiente como para poder llegar a dominar una técnica de este calibre xD, igual, si mi juego llega a producir adicción a mucha gente, tanto como para compararse entre pros, entonces, recordaré esta idea, pero por lo general, sería tán dificil de dominar esa técnica, que opino que quedaría como una función casi inútil, corrígeme si me equivoco xD
-@Black_Cat el juego será, en un principio para android, pero no descarto la posibilidad de windows, claro que es algo de lo que aun no estoy seguro,, igual lo dejo en momentos separados en el tiempo. De todos modos, la pelota ya tiene varios estados que tienen distintas interacciones con las demás instancias.
-@Johann eso de que automáticamente haga el tiro, debe ser cosa de tu movil, porque eso no pasa xD

#20
Preguntas y respuestas / Complejidad del GML
Diciembre 13, 2018, 08:56:13 PM
Hola, quiero preguntar sobre la complegidad del lenguaje GML... puse el logo de Studio 1.4 ya que es el que yo uso y soy yo el interesado que crea el post xD

Quiero preguntarles para el que sepa más profundamente del tema, qué tan complejo es el lenguaje GML, en comparación a otros lenguajes de alto nivel... Ya sabemos que GML está preprogramado para uso exclusivo en videojuegos, pero también sabemos que se pueden hacer otras cosas, como herramientas, automatizaciones y algoritmos muy sofisticados pero... dónde está el límite... lo que son las operaciones matemáticas, vienen a ser iguales que en otros lenguajes? Se podría programar en GML tansolo usando matemáticas, arreglos, listas, etc... complegidades tan grandes como una inteligencia artificial? De ser posible, tal inteligencia artificial solo sería posible con estructuras limitadas a lo programado siendo solo una simulación de inteligencia, o se podría alcanzar similitudes a una Learning Machine? (obvio no tan complejo, pero hablo del término "aprender" dentro del contexto)...

Espero que este post de para mucho debate y no me corten a la primera... adoro experimentar con GML xD
Ah y tampoco quisiera comentarios cliché como "el límite es tu imaginación" :v
Powered by EzPortal
SMF spam blocked by CleanTalk