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

1

Eternal: Una aventura de amor

Plataformas

GM: Studio

Eternal: Una aventura de amor, es un videojuego de plataformas disponible para Android.
Sus personajes principales son dos cuadrados, uno azul (el controlado por el jugador) y otro rosa, una con la que el anterior tiene una historia de pasión.
La historia nos plantea una situación de amor metafórica (o, por qué no, real) entre dos simples cuadrados, los que se encuentran en medio de un ambiente gris y triste, salvándose del mismo gracias al enamoramiento. Es por eso que debemos guiar a nuestro amigo polígono hacia su salvación, alejándolo de la soledad de la que sufría a diario (y descubriendo algunas de sus confesiones mentales).
En el viaje nos encontraremos con varios obstáculos, que también deben ser entendidos como parte de la metáfora que engloba el juego, a los cuales podemos vencer o dejar ser (aunque, como nos aclara nuestro compañero azul, a algunos hay que aplastarlos).










https://play.google.com/store/apps/details?id=com.FRICO.Eternal


El juego cuenta con la opción de ser jugado en inglés o en español.
Eternal es el primer juego que realizo con Game Maker, por lo tanto no tiene "profesionalismo" es decir, es un juego simple. Me gustaría pedirle a todos aquellos que tienen un prejuicio sobre los juegos simples que le den una oportunidad. Eternal, no se destaca en lo visual, si no en la historia que cuenta.
Los comentarios son bienvenidos, ya que me gustaría saber que aspectos tengo que reforzar para futuros títulos.

A continuación el trailer del juego:
https://www.youtube.com/watch?v=v9JY4iuKNzk

2
Cita de: Clamud en Febrero 18, 2016, 08:26:36 PM
No debe ser una suma, sino una multiplicación.
También puedes dibujar el sprite de esta forma
[gml]
draw_sprite_ext( sprite,subimg, x*sx,y*sy, sx,sy, 0,c_white,1 );
[/gml]

Entiendo, pero son 4 botones que se presentan en la pantalla...
obj_button_left = aparece cerca de la esquina inferior izquierda
obj_button_right =aparece unos pixeles a la derecha de obj_button_left
obj_button_up = en la posicion antes mencionada...
obj_menu_back = en la misma posicion x que obj_button_up pero cerca de la esquina superior derecha...

Ahora si puedes ser tan amable como calculo estas 4 posiciones? Solo basta con reemplazar los valores de X,Y en donde yo los quiero por los valores de sx y sy? Es decir:
draw_sprite_stretched(spr_button_up,1,sx*1100,sy*550,148,148);

O usando tu forma, da igual...

El único problema que encuentro con este método es que la virtual key (aunque la multiplique por la misma posición de X e Y donde se dibuja el objeto) esta "adelantada" unos píxeles... Es decir si el objeto esta en posición x = 100, si pongo en esa posicion a la virtual key se crea en 150... Por lo que para que funcione debo ponerla en x=50...

[gml]

CREATE EVENT:

sx = display_get_width() / view_wview[0]; //escala horizontal
sy = display_get_height() / view_hview[0]; //escala vertical
left = virtual_key_add(sx*50,sy*620,150,200,vk_left);


DRAW GUI EVENT:

sx = display_get_width() / view_wview[0]; //escala horizontal
sy = display_get_height() / view_hview[0]; //escala vertical
draw_sprite_ext(spr_button_left,0,sx*100,sy*620,sx,sy,0,c_white,1);
if keyboard_check(vk_left){
                           draw_sprite_ext(spr_button_left,1,sx*100,sy*620,sx,sy,0,c_white,1);
                          }
[/gml]

Es esto normal? Agradezco la respuesta!
3
Cita de: Clamud en Febrero 18, 2016, 03:52:37 PM
La forma de calcular las proporciones no es muy correcta; este código
[gml]
var x32 = w / (w/32);
var y32 = h / (h/32);
[/gml]
equivale a esto
[gml]
var x32 = 32;
var y32 = 32;
[/gml]
de modo que no hay un ajuste verdadero.
La proporción se debería tomar con las medidas de la pantalla y de la view:
[gml]
sx = display_get_width() / view_wview[0]; //escala horizontal
[/gml]
si la view tiene la misma relación aspecto de la pantalla, entonces la escala vertical debería ser igual a la horizontal
[gml]
sy = display_get_height() / view_hview[0]; //escala vertical
[/gml]
despues usa alguno de los valores de escala dentro de la función draw_sprite_stretched

Disculpeme, entonces como debería hacer para que aparezca abajo a la derecha ya que cada dispositivo tiene un display diferente... Puesto que necesito hacerlo urgente! Si la view es de 1280x720... entonces que cuenta debería hacer para que se vea en todos los dispositivos en el mismo lugar?
Sería así correcto? : (El único problema que le veo es que el display es diferente en todos los móviles lo que haría que la suma no de el mismo resultado para X, ni para Y... pero realmente no se me ocurre otra cosa...)
[gml]
DRAW GUI EVENT:

sx = display_get_width() / view_wview[0];
sy = display_get_height() / view_hview[0];                         

draw_sprite_stretched(spr_button_up,0,sx+1100,sy+550,148,148);
if keyboard_check(vk_space){
                           draw_sprite_stretched(spr_button_up,1,sx+1100,sy+550,148,148);
                          }
[/gml]

Esa posición de la view (x = 1100, y = 550) es la ideal para los botones... necesito ponerlas en esa parte de la pantalla pero en todos los móviles...
4
Cita de: NiuWeb en Febrero 18, 2016, 05:08:15 AM
Antes de empezar, te recomiendo que encierres tu código con las etiquetas [gml] y [/gml], para que se pueda apreciar sin resultar con graves quemaduras en los ojos xDD

Ahora... Lo sabía xD, el problema es el mismo que han tenido prácticamente todos los ue han hecho una virtual key por primera vez (y también los que no las usan a menudo). Lo que sucede es que las virtual key se dibujan en las posiciones ABSOLUTAS del DISPLAY, por lo tanto, si dibujas una virtual key de 32*32 en una room de 640*480, al momento de probar el juego en una pantalla de 1280*960 la virtual key se verá el doble de pequeña...
Hace algún tiempo respondí un tema exactamente igual, y como mi nivel de flojera está al 10000%, pues sólo te cito el mensaje xDDD:

Cita de: NiuWeb en Febrero 02, 2016, 12:09:23 AM
Te voy a explicar, en el evento draw GUI normalmente haces esto:
[gml]
draw_sprite(el_sprite,0,32,32);
[/gml]
(Ignora las posiciones xD)

Pero ese es el error. Tanto en la GUI como con las virtual key las posiciones absolutas son un error. Debes usar posiciones relativas al display
De esta manera yo lo hago:
[gml]
var w = display_get_gui_width(); //Sacamos el anchor del display del dispositivo
var h = display_get_gui_height(); //Sacamos el largor del display del dispositivo
var x32 = w / (w/32); //Sacamos el valor que equivaldría a 32 pixeles en el display del disposivito
var y32 = h / (h/32); //Lo mismo que lo de arriba sólo que en vertical

/*
Ahora imaginemos que el sprite que quieres dibujar mide 64*64:
*/

draw_sprite_stretched(el_sprite,0,x32,y32,x32*2,y32*2);//Dibujamos el sprite en las posiciones 32 y 32 DEL DISPLAY DEL DISPOSITIVO, y el sprite está dimensionado a 32*2 (64)px DEL DISPLAY DEL DISPOSITIVO. Lo que hace que se escale como debería en cualquier resolución :B
[/gml]

(Lee los comentarios (texto en verde :v) del código)

El mismo método se aplica a las virtual key

Gracias amigo por la respuesta! Me fue muy útil... pero si quiero tener las mismas medidas es decir, que la view es de 1280x720 y quiero que el botón de salto aparezca abajo a la derecha, en la siguiente posición (x=1100, y = 628) debería hacer algo como:

[gml]
var w = display_get_gui_width();
var h = display_get_gui_height();
var x32 = w / (w/32);
var y32 = h / (h/32);

draw_sprite_stretched(spr_button_up,0,x32*34.375,y32*19.625,x32*4.625,y32*4.625); //Lo multiplique por esos numeros así tiene la medida del sprite 148x148

[/gml]

5
Cita de: NiuWeb en Febrero 18, 2016, 04:28:08 AM
Sin saber los códigos que estás usando y cómo lo estás usando es imposible saber los errores que podrías cometer. Para que se pueda ayudar a solucionar tu problema por favor muestra la información que consideres necesaria, y entre ésta, los códigos que usas

Ya lo actualize! Muchas gracias y disculpe mi ignorancia...
6
Hola muy buenas a todos! Es la primera vez que publico en el foro, y es para pedir urgentemente ayuda! Hoy publique un juego hecho con GM Professional Studio 1.4 para Android, lo testie muchísimas veces en mi celular (Moto G2) y todo andaba perfecto, por eso decidí publicarlo...
El juego abre normalmente y demás, pero el problema es que los botones de dirección en otros celulares que no sean Motorola, no aparecen! Intente cambiar la resolución del juego y las views que son 1280x720 y nada! Cambie la posicion de los objetos que aparecen en la pantalla con Draw GUI es decir con draw_sprite(0,x,y) y tampoco pude solucionarlo! Estoy desesperado! Espero que me puedan ayudar, muchas gracias de ante mano!
Aca dejo el código:

Lo mismo se aplica para todos... Hay 3 objetos (obj_button_up, obj_button_right, obj_button_left)

Create Event:

up = virtual_key_add(1050,598,150,200,vk_space)

Draw GUI:

draw_sprite(spr_button_up,0,1100,628);
if keyboard_check(vk_space){
                           draw_sprite(spr_button_up,1,1100,628);
                          }


Las posiciones las puse de acuerdo a lo que se veía en la pantalla... Intente ponerlle la posición de la view, al principio funcionaba, cuando la view estaba quieta pero cuando ponía seguir al personaje, los botones bailaban por toda la pantalla!  :'(


PD: Les dejo el enlace del juego en Google Play:
https://play.google.com/store/apps/details?id=com.FRICO.Eternal