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

136
Intercambio / Game Maker Studio 2 - Primera Impresión
Agosto 27, 2017, 01:34:19 PM
Bueno, ayer adquirí la licencia para Android de GM Studio 2 y quiero compartirles mi experiencia para aquellos que están con las dudas de comprarlo o no, ya que el descuento de 40% acaba el 31 de Agosto.

Al abrir el programa, me sorprendió la interfaz(muy profesional y con una navegación sencilla), también se nota que GM Studio 2 ha sido programado en C, en vez del GM Studio 1 que fue programado en delphi, lo que le daba algunos que otros problemas y no permitía hacer grandes updates.
Lo primero que hice fue importar mi proyecto de GM 1 al 2, a primera vista parece que funcionaba, pero al pasar del Menú y entrar a la pantalla se quedaba todo en negro, estuve una hora probando cosas, sin resultado.
Así que hice la matada de copiar y pegar cada sprite, objeto, codigo del GM 1 a un nuevo proyecto del 2. Unas 3 horas tardé en pasarlo todo, y cambiando todos los "instance_create" por "instance_create_depth". Luego, al pasar todo e iniciar el juego, vi un problema, las animaciones de los sprites iban 4 veces más lentas de lo que deberían, así que investigué un poco y al parecer, al editar un sprite, se le asigna una velocidad de animación de 15 frames por segundo, yo creí que eso era solo para la previsualización, pero no, afecta al juego, así que puse todos a 60, para que fuesen a la misma velocidad que con el GM 1.

Lo que más me sorprendió es que mi juego pasó de ir a 80-300fps en debug con GM 1, a ir a 800-1000 fps con GM 2, un verdadero logro desde luego si quieres exportar a Android.

La edición de sprites es muy potente, aunque a mi no me afecta ya que las suelo hacer con Photoshop.
La zona de trabajo es un poco... claustrofóbica y el sistema de ventanas/que se crean putas ventanas de objetos por todo el mapa del Workspace, en un poco incómodo a la hora de moverte(pero es cosa de acostumbrarse).
El sistema de layers... bru-tal. Acaban de llevar el 2D en GM a algo totalmente nuevo.

Básicamente lo que me ha hecho GM 2 es mejorar el rendimiento de mi juego y hacer que programar sea más rápido y menos cansino.
137
Y las tienes asignadas en Game Maker?
138
Mercado / Re:Consejos sobre Marketing
Agosto 27, 2017, 01:13:34 PM
Yo personalmente publicité mi juego con adwords usando una campaña tipo: Campaña universal de aplicaciones. Te dejo adjuntado los datos de las 3 campañas que hice para esa aplicación. He llegado a casi anunciar con Facebook Ads, ya que  dicen que actualmente es lo más potente que hay, ya que te anuncia en dos de las redes sociales más usadas del mundo (Facebook e Instagram). Pero personalmente, lo que hizo que mi app haya llegado a 75.000 descargas en 2 meses no han sido los anuncios, ha sido sobre todo el Posicionamiento ASO y que el tipo de app estaba dentro de las tendencias del mercado actual.
139
No no tienes mínimo esas versiones es que tienes el SDK Manager desactualizado.
140
Ejecuta el programa como administrador y borra la cache

Nombre del paquete
Ir a la configuración global de juegos >> ficha de Android y asegúrese de haber introducido un nombre de paquete válido.
Si cree que es un nombre de paquete válido, borre todos los campos y, a continuación, escriba manualmente su nombre de paquete una vez más para descartar posibles nuevos operadores de línea.


Diseño predeterminado de PackageName:
com.companyName.applicationName

Su nombre de paquete puede contener letras mayúsculas o minúsculas ('A' a 'Z'), números y subrayados ('_').
Sin embargo, las partes de nombre de paquete individuales sólo pueden comenzar con letras.


Instala lo necesario del SDK Manager
TOOLS:
* Android SDK Tools (25.2.2)
* Android SDK Platform-tools (25)
* Android SDK Build-tools (24.0.3)

Android 7.0 (API 24):
* SDK Platform (2)
* Google APIs (1)

Extras:
* Android Support Repository (39)
* Google Play Services (37)
* Google Repository (38)
* Google Play APK Expansion Library (3)
* Google Play Billing Library (5)
* Google Play Licensing Library (2)
* Google USB Driver (11)

Pon lo anterior en GM:S
Build Tools: 24.0.3
Support Lib: 24.2.1
Target SDK: 24
Min SDK: Su API mínima soportada (9+)
Compile SDK: 24
141
Preguntas y respuestas / Re:Dudas sobre HTML5
Agosto 26, 2017, 08:01:49 PM
Aquí te dejo lo básico sobre la exportación a HTML5, traducido de https://help.yoyogames.com/hc/en-us/articles/216754018-HTML5-Issues-And-Differences

En comparación con el resto de los módulos de destino de GameMaker: Studio, existen ciertas diferencias entre cómo funcionan las cosas en HTML5 (y los módulos de JS en general) y lo que puede esperar. Estas diferencias también variarán dependiendo de si tiene habilitado WebGL para el destino o no. En general, con WebGL habilitado, tu juego debería ejecutarse casi exactamente igual que para los otros módulos de destino como Windows o Android y se recomienda que dejes esta opción en Activado o Automático en la Configuración global del juego.

Ejecutar el index.html Localmente

No se recomienda que ejecute el archivo index.html localmente (es decir: desde su propia computadora), ya que encontrará que las cosas no funcionan como se esperaba. De hecho, intentar ejecutar el juego localmente mostrará un diálogo de advertencia que le aconsejará que utilice una configuración de servidor web en su lugar.

Esto se debe a que los navegadores no podrán cargar los recursos o ejecutar su juego debido a secuencias de comandos entre sitios, a menudo abreviado a XSS, que es un sistema de protección dentro del navegador diseñado para bloquear el código de un sitio web que afecta negativamente a una máquina local. Si el archivo html es local, será muy estricto con la protección. Normalmente, esto resultará en que los activos de juego no se carguen y, posiblemente, su código de juego se ignora también, lo que lleva a accidentes, sin embargo, los principales navegadores difieren en la forma estricta de hacer cumplir esto y su juego puede correr. Si desea leer los detalles de XSS.

Para evitar problemas, puedes subir tu juego a algún host del servidor y probarlo "en vivo" de esa manera.

Texto / Sprites / Fondos no colorean correctamente

Si logra que su juego se ejecute localmente, puede experimentar problemas con sus imágenes (texto, fondos y sprites) que no están dibujadas o coloreadas correctamente. La mezcla de imágenes no está disponible en HTML5, por lo que GameMaker: Studio "engaña" un poco y copia la imagen, bloquea sus píxeles y vuelve a colorearlos utilizando código JavaScript para mezclar cada píxel individualmente. Hay algunos trucos involucrados en el motor para acelerar las cosas, pero ser capaz de obtener en los bits de una imagen es vital para que esto funcione.

Sin embargo ... ciertos navegadores (como Firefox y Chrome) tienen configuraciones de seguridad que no nos permiten modificar las imágenes cuando se han cargado desde una fuente local. Ellos lo consideran como una amenaza a la seguridad y simplemente no lo permiten. Esto significa que usted está atascado usando la imagen original y, en cosas como las fuentes, que significa una fuente blanca. No hay nada que podamos hacer al respecto, y recomendamos que el contenido HTML5 se cargue a través de un servidor web, que es GameMaker: Studio viene con un servidor web incorporado para que puedas ver tus juegos. Así que en lugar de hacer clic en el archivo, realmente debería verlo a través del servidor web incorporado, o probablemente no se vea correcto (es decir: utilice el botón "reproducir" de la interfaz GMS).

Mezcla de imágenes

Si no tiene habilitado WebGl, la mezcla de imágenes en HTML5 puede ser un proceso costoso. Como se mencionó anteriormente, GameMaker: Studio tiene que crear copias del sprite - una para cada color. Ahora, si usted tiene, por ejemplo, un sprite de color aleatorio usando

Image_blend = make_colour_hsv (aleatorio (255), 255, 255);

Entonces usted encontrará rápidamente que su juego se ralentiza y tiene problemas.

La solución es utilizar sólo un número fijo de colores y también establecer el caché de sprite para el número correcto. Puede obtener más información del manual aquí: sprite_set_cache_size (). Tenga en cuenta sin embargo, cada sprite que el color utilizará la memoria, por lo que probablemente no sólo debe establecer todos ellos a grandes números, ya que volverá a tener cosas malas suceden. Esto también causa problemas para la mezcla de fuentes, por lo que debe tenerse cuidado con ellos también.

Gradientes de color

Si no está utilizando WebGL, puede notar que los formularios dibujados con GameMaker: las funciones de Studio (como draw_rectangle_colour (), por ejemplo) se están dibujando con un solo color de relleno. Esto se debe a que los degradados no se pueden realizar correctamente en el objetivo HTML5 estándar por razones técnicas. Por lo tanto, si tu juego depende de estos efectos, deberías pensar en hacer de WebGL una opción requerida (de la Configuración global del juego) o usar sprites pre-renderizados.

Tenga en cuenta que esto también afectará a cómo se dibujan las fuentes, así que sin WebGL habilitado no obtendrá ningún tipo de efecto de degradado para ellos tampoco.

Cuadros de mensajes

A diferencia de las ventanas, los cuadros de mensajes HTML5 no son capaces de skin y se fijan en 2 botones que dicen "Aceptar" y "CANCELAR". No puede establecer la fuente, el fondo, el color o el número de botones, lo que los hace muy limitados. Normalmente, tomaríamos el control del bucle del juego y escribiríamos el cuadro de mensaje con las funciones de GameMaker: Studio, pero los navegadores no te permitirían hacerlo. Esto significa que para mantener el mismo mecánico, estamos atrapados utilizando los sencillos y básicos cuadros de mensaje que vienen con cada navegador.

Esto dijo .... cuadros de mensaje estándar realmente no son una experiencia de juego bueno, y si usted necesita un cuadro de mensaje, usted realmente debe escribir uno usted mismo para que aparezca con una mucho mejor apariencia.

<,> Y = no dar los mismos resultados


Al hacer comparaciones en GameMaker: Studio, debe tener en cuenta que todos los números se tratan realmente como valores de coma flotante. Así que comprobar lo que parece ser un valor entero puede dar diferentes resultados en diferentes plataformas, y esto es especialmente cierto de la meta HTML5 que tiene menos precisión que, por ejemplo, el objetivo de Windows. Por ejemplo, tal vez quiera comprobar el índice de imagen de un sprite con una velocidad de imagen de 0,5. Usted esperaría que agregando o.5 cada paso, cada segundo paso el image_index tendría un valor entero ... pero no puede.

0.5 + 0.5 no es igual a 1 con matemáticas en coma flotante, y puede ser que 1 sea en realidad 1.000000000001 o algo así que la expresión nunca devolverá true. Si quieres saber más sobre por qué sucede esto, consulta el artículo aquí: http://floating-point-gui.de/

Hay un número de maneras de conseguir alrededor de esto. Puede comprobar si un valor es mayor o igual que otro, o puede utilizar las funciones floor () o round () para generar un valor entero fijo.

142
Preguntas y respuestas / Re:Optimizar un Step
Agosto 26, 2017, 06:44:05 PM
Sera mejor el rendimiento en Game Maker Studio 2? Es que no se si merece la pena adquirirlo, a primera vista se ve bastante profesional y potente.
143
Preguntas y respuestas / Re:Optimizar un Step
Agosto 26, 2017, 04:04:42 PM
Bueno, me ha subido una media de 20 fps, lo que no es mucho, el juego va a una media de 300fps, segun el debug, y da bajones hasta los 90 fps, y suponiendo que el juego es para Android, es un rendimiento bastante bajo. Los otros dos datos que me da el debug(lo que está entre paréntesis suele estar en (40) (100) y va aumentando hasta aproximadamente (90) (200), que es cuando la oleada se acaba y se restaura.
144
Hay muchas formas de guardar un string ya sea con un .ini:


ini_open("nombre_del_archivo.ini");
ini_write_string("strings","string","Texto que quieres guardar");
ini_close();1


En una variable local:

texto="Texto que quieres guardar";


En una variable local:

global.texto="Texto que quieres guardar";


145
Preguntas y respuestas / Optimizar un Step
Agosto 26, 2017, 02:29:25 PM
Hola, cuanto tiempo sin subir un tema XD

Bueno os cuento, estoy con un proyecto que me encantaría mostraros dentro de poco, pero estoy teniendo unos problemas de rendimiento, sobre todo con el Step.
Creo que se que lo puede causar, el juego puede llegar a tener 100 enemigos ejecutando este código en el Step:

if hp<=0 {
    global.monedas+=mon;
    global.xp+=xp;
    instance_destroy();
}

if push {
    x+=spd*global.mspd*4;
    sprite_index=spr_caminar;
    image_speed=0;
    exit;
}

if distance_to_object(instance_nearest(x,y,obj_Aliado))<=rango {
    enemigo=instance_nearest(x,y,obj_Aliado);
    if image_index<=1 {
        recargado=true;
    }
    if image_index>img_ataque {
        if image_index<img_ataque+.5 {
            if recargado {
                recargado=false;
                if instance_exists(enemigo) {
                    if enemigo.object_index=obj_Caseta_1 {
                        global.hp-=dmg;
                    } else {
                        enemigo.hp-=dmg;
                    }
                }
            }
        }
    }
    sprite_index=spr_atacar;
} else {
    sprite_index=spr_caminar;
    x-=spd*global.mspd;
}


Creo que eso puede causar el bajo rendimiento, alguna sugerencia para optimizar ese código? Estoy pensando en crear un obj_aliado_cercano, que en el step tenga esto:

enemigo[0]=instance_nearest(x,y,obj_Aliado);
enemigo[1]=enemigo[0].x;


Y en los enemigos cambiarles el step por:

if hp<=0 {
    global.monedas+=mon;
    global.xp+=xp;
    instance_destroy();
}

if push {
    x+=spd*global.mspd*4;
    sprite_index=spr_caminar;
    image_speed=0;
    exit;
}

if distance_to_point(obj_aliado_cercano.enemigo[1],y)<=rango {
    if image_index<=1 {
        recargado=true;
    }
    if image_index>img_ataque {
        if image_index<img_ataque+.5 {
            if recargado {
                recargado=false;
                if instance_exists(obj_aliado_cercano.enemigo[0]) {
                    if enemigo.object_index=obj_Caseta_1 {
                        global.hp-=dmg;
                    } else {
                        enemigo.hp-=dmg;
                    }
                }
            }
        }
    }
    sprite_index=spr_atacar;
} else {
    sprite_index=spr_caminar;
    x-=spd*global.mspd;
}


Pero no estoy seguro si cambiaría algo.
146
Si no específicas mas... ¿Como consigues el texto? ¿Lo usarás en el mismo objeto donde lo guardas?
147
Preguntas y respuestas / Re:puntuacion
Agosto 25, 2017, 12:38:54 PM
Eso no se puede hacer como ha dicho el anterior usuario, eso lo haces en el evento draw:


punt_mostrar=string_format(punt,8,0); //Donde hay un '8', pones la longitud total máxima del número, asi que si tienes 1000 puntos, se añadiran 4 ceros detrás para hacer 8.
punt_mostrar=string_replace_all(punt_mostrar,' ','0') //Aquí sustituimos los espacios que crea la función anterior por '0'
draw_text(0,0,punt_mostrar);  //Mostramos los puntos


Debería funcionar, si es así no olvides darme un puntito ;D
148
Juegos en desarrollo / Re:Mine Thieves [Android]
Agosto 24, 2017, 08:45:43 PM
Si jugué una partida, morí a los pocos segundos jaja. Bueno también haría algo con los controles, son un poco... como decirlo.. sensibles? No se. Para la UI, no se si es por mi resolución (1920x1080), pero lo veo como muy borroso o... sucio por así decirlo. Te diría que cambies los gráficos de la UI de navegación a algo más intuitivo, con texto, ya que al ser únicamente imágenes, no sabes donde te llevan. Yo personalmente pondría una imagen con más relación y un texto que diga donde te lleva ("Tienda","Habilidades",...).
Otra cosa que me volvió loco es al acceder a la tienda o a algún sitio, en el momento de querer salirme, me decía: "Estás seguro que deseas salir?", y yo estaba como... Salir del juego o del menu? XD Yo quitaria esa pregunta, y saldría directamente.

Por lo demás... ganas de ver como evoluciona
149
Preguntas y respuestas / Re:Error con cofres
Agosto 24, 2017, 08:38:14 PM
A parte de la optimización que deberías meterle, por ejemplo no ponerle el random de oro en el step. Básicamente lo que le dices al código es que cambie la imagen de todos los cofres. Vas a hacer lo siguiente:

Evento create del cofre:

open=0;
abrir=0;
oro=irandom_range(0,7);


Evento Animation End del cofre(Esta en "other")

image_speed=0;


Evento Key Press ENTER del cofre:

if distance_to_object(obj_player)<15 {
    if (open) {
        show_message("Este cofre está vacío");
    } else {
        if oro=0 {
            show_message("No parece haber nada de oro en este cofre");
        } else {
            obj_player.dinero+=oro;
            show_message("Has obtenido "+string(oro)+" de oro");
            open=1;
            sprite_index=spr_cofreabriendose;
        }
    }
}


Con eso creo que te debería ir de perlas. Si te funciona no olvides darme un puntito  ;D
150
Esta chulo, pero   quedaría mejor si el texto que muestras lo pusieses mientras pasa en el juego, no quitandolo, mostrar el texto y luego que pase en el juego, no se si me explico :-[