Podeis darme algo de feedback sobre esto?

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

Podeis darme algo de feedback sobre esto?

Postby erkosone » Fri Feb 05, 2016 2:54 pm

Hola gente, podeis probarme esta app y comentar que tal os parece que se maneja en joy en pantalla?
Bueno, es por si le veis algo raro, algo mejorable, o algo que esté o responda mal.
Gracias de antemano al que lo pueda probar y comentar :)

https://dl.dropboxusercontent.com/u/659 ... ndroid.apk
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Podeis darme algo de feedback sobre esto?

Postby Spiderman » Fri Feb 05, 2016 3:44 pm

Me lo he descargado y bien.

No sabia lo que me iba a encontrar y al principio no sabia como funcionaba el joy pero a los 10 segundos como mucho ya se le coge el truco y se controla sin problemas.


Por añadir algo, al poco tiempo de estar jugando la pantalla se quiere ir a negro durante un instante se oscurece, pierde brillo y se queda así. No se si será del juego en si o del móvil.
User avatar
Spiderman
 
Posts: 761
Joined: Wed Feb 11, 2009 2:49 am

Re: Podeis darme algo de feedback sobre esto?

Postby SimulatorOne » Fri Feb 05, 2016 4:42 pm

A 60FPS constantes, y teniendo en cuenta que tengo la opción de la pantalla auto-rotar, desactivado...
El juego se ejecuta en pantalla horizontal, respetando el aspecto panorámico 16:9.
El stick analogico funciona perfectamente, como del juego de Beat Hazard de naves musical flipante.
Recomiendo que sea casi el doble de grande y que el circulo del stick no sobre salga de dicho circulo virtual.

Por lo demas perfecto, sigue asi
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: Podeis darme algo de feedback sobre esto?

Postby erkosone » Fri Feb 05, 2016 4:52 pm

Gracias gente, estoy liado con la parte de los botones del joy.
Muchas gracias por comentar :)

Cuando salga el port de Gemix a Android tengo preparado un joy de estos para compartir tmb ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Podeis darme algo de feedback sobre esto?

Postby shao » Fri Feb 05, 2016 5:40 pm

Funciona bien excepto por una cosa que para mi gusto yo cambiaría y es que cuando pulsas y no mueves el dedo, haría que el sprite se quede quieto, después, si mueves el dedo, entonces que el sprite responda, es decir, si no hay movimiento en el touch una vez pulsado, que el sprite no se mueva.
User avatar
shao
 
Posts: 6036
Joined: Wed Jun 17, 2009 4:51 pm

Re: Podeis darme algo de feedback sobre esto?

Postby erkosone » Fri Feb 05, 2016 7:22 pm

mm.. osea que solo se mueva durante el movimiento del dedo?
Curioso, eres la primera persona que me dice eso, me lo apunto Shao, puede ser de utilidad.
Algun juego que conozcas funciona así para ver un ejemplo?
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Podeis darme algo de feedback sobre esto?

Postby shao » Fri Feb 05, 2016 7:44 pm

No, no lo he visto en ningún juego es solo que creo que debería funcionar así, ahora mismo si pulsas la pantalla pero no mueves el dedo, el Sprite se mueve en una dirección que yo no he decidido, yo solo he pulsado la pantalla para prepararme a hacer un movimiento, no lo he indicado que se mueva, para indicar movimiento entonces hay que arrastrar el dedo hacia la dirección que elijas.
Yo creo que así quedaría mejor.
User avatar
shao
 
Posts: 6036
Joined: Wed Jun 17, 2009 4:51 pm

Re: Podeis darme algo de feedback sobre esto?

Postby erkosone » Fri Feb 05, 2016 8:27 pm

haaa vale tio perdona no te habia entendido bien, si, eso pasa por la sensibilidad, esta ajustada a 1.
Osea, cuando hay un pixel de diferencia entre la posicion de donde has pulsado y la actual del dedo ya activa las salidas el joy, voy a subirla a 3 para que no pase eso.

Gracias por tu comentario shao, muy util ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Podeis darme algo de feedback sobre esto?

Postby SimulatorOne » Fri Feb 05, 2016 8:32 pm

shao wrote:No, no lo he visto en ningún juego es solo que creo que debería funcionar así, ahora mismo si pulsas la pantalla pero no mueves el dedo, el Sprite se mueve en una dirección que yo no he decidido, yo solo he pulsado la pantalla para prepararme a hacer un movimiento, no lo he indicado que se mueva, para indicar movimiento entonces hay que arrastrar el dedo hacia la dirección que elijas.
Yo creo que así quedaría mejor.


si no me fije en ese detalle, cierto.

deberias marcar una distancia minima valida de movimiento erkos, actualmente esta a 0, aun que no muevas el dedo toma una direcion.
actualmente si nos imaginamos una X gigante justo donde pulsamos. son los 2 ejes

cuando el stick analogico esta en el centro, o casi(unos 5 pixeles de distancia maximo), no deberia dar en esas zoas de las 4 direciones.

seria una tarta con 4 quesitos, si desplazamos el dado hacia la derecha(tocando el circulo virtual) tomamos el quesito de la derecha y nos movemos hacia la derecha.

me gustaria dibujar ese quesito, con 4 cachos....
Captura.PNG


la zona de color es de accion, y dependiendo de la distancia central, hacia fuera... aumenta su valor del eje X JOY_GET_POSITION, ademas por el simple echo de tocar esa zona de color, devuelve LEFT=true a esa direccion, o un numero en este caso es el numero 8, como lo hace joy_get_hat.

si fuese a arriba: numero 1 joy_get_hat, UP=true, valor de distanica eje Y JOY_GET_POSITION


Sinceramente se puede jugar bastante en esta tecnica. :P

yo me hice una funcion sencilla para mi juego: se trata de un control digital de 4 direciones y un boton.
y funciona con teclado y a la vez el Joy
Source Code (Gemix) [ Download ] [ Hide ]
  • FUNCTION CONTROLES();
  • private
  • i;
  •   BEGIN
  •  
  •            IF(KEY(_UP));i=1;elseif(KEY(_DOWN));i=4;END
  •            IF(KEY(_RIGHT));i=2;elseif(KEY(_LEFT));i=8;END
  •             //UP=1,DOWN=4, RIGHT/IZQUIERDA=2, LEFT/DERECHA=8
  •            
  •            BOTON_EMPUJAR = KEY(_CONTROL);
  •            BOTON_ATRAS = KEY(_ESC);
  •            
  •                 if(joy_nums>0);
  •                   IF(i==0);i=joy_get_hat(cur_joy,joy_hat1);END
  •                   IF(joy[cur_joy].button1 OR joy[cur_joy].button2);BOTON_EMPUJAR=TRUE;END
  •                   IF(joy[cur_joy].button3 OR joy[cur_joy].button4);BOTON_ATRAS=TRUE;END
  •                  
  •                         //TEMP1="Joys:"+itoa(joy_nums)+"-["+itoa(cur_joy)+"]>DIR:"+ITOA(DIRECION_JUGADOR);
  •                         //TEMP2="BOT:"+ITOA(BOTON_EMPUJAR);
  •                 end
  •                
  •           DIRECION_JUGADOR=i; //DIRECION: 1=UP / 4=DOWN / 2=RIGHT>> / 8=LEFT<< / 0=NINGUNO
  • END
  •  

tiene preferencia el JOY antes que el teclado, del control de juego.

si deseara implementar el stick analogico virtual, como del erkos, no tengo duda que usaria joy_get_hat para devolver las 4 u 8 direciones.
mi juego solo trabaja en 4 direciones contantes.
no uso direciones analogicas como el stick de dualshock2 completamente analogico 360º, que se usaria: JOY_GET_POSITION
You do not have the required permissions to view the files attached to this post.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: Podeis darme algo de feedback sobre esto?

Postby erkosone » Fri Feb 05, 2016 9:20 pm

Interesante, bueno para poder hablar con mas conocimiento mira te pego el código de como lo he hecho:

Source Code (Java) [ Download ] [ Hide ]
  • class Joy{
  •   int centerX;            // screen joy position..
  •   int centerY;            // screen joy position..
  •   int radius = 20;        // joy size..
  •   int angle;              // angle of joy axis vector..
  •   int dist;               // module of joy axis vector..
  •   int dx;                 // size of x axis component..
  •   int dy;                 // size of y axis component..
  •   boolean left = false;   // digital left..
  •   boolean rigth = false;  // digital rigth..
  •   boolean up = false;     // digital up..
  •   boolean down = false;   // digital down..
  •   int st = 0;
  •   PVector v1 = new PVector();
  •   PVector v2 = new PVector();
  •   int region = 0;
  •   boolean enable = false;
  •   boolean active = false;          // touchScreen event manager asigns true to this variable..
  •   int idDedo = -1;                 //
  •  
  •  
  •   // constructor..
  •   Joy(){
  •   }
  •   // functions..
  •   //----------------------------
  •   void run(){
  •     switch(st){
  •       case 0:
  •         for(int i=0; i<5; i++){
  •           if(dedos[i].exists && (dedos[i].x < virtualResolutionWidth*0.5) ){    // si detecto un dedo a la izquierda de la pantalla..
  •               idDedo = i;                         // me guardo el numero de dedo..
  •               active = true;                      // activo el joy..
  •               i=99;                               // dejo de buscar mas dedos..
  •           }
  •         }
  •        
  •        
  •         if(active == true){
  •           centerX = (int)dedos[idDedo].x;
  •           centerY = (int)dedos[idDedo].y;
  •           st = 10;
  •         }
  •         break;
  •         //----------------------------
  •       case 10:
  •         joy.getValues();
  •         joy.render();
  •        
  •         //active = dedos[idDedo].exists;
  •        
  •         if(!dedos[idDedo].exists){
  •           angle = 0;
  •           dist  = 0;
  •           dx = 0;
  •           dy = 0;
  •           left = rigth = up = down = false;
  •           idDedo = -1;
  •           active = false;
  •           st = 0;
  •         }
  •         break;
  •         //----------------------------
  •         //----------------------------
  •        
  •     }
  •   }
  •   //----------------------------
  •   void getValues(){
  •     v1.x = (int)dedos[idDedo].x;
  •     v1.y = (int)dedos[idDedo].y;
  •     v2.x = centerX;
  •     v2.y = centerY;
  •     angle = (int)AngleDeg( v2, v1);
  •     dist  = (int)getDist(v1, v2);
  •     dx = (int)v1.x - centerX;
  •     dy = (int)v1.y - centerY;
  •     left = false;
  •     rigth = false;
  •     up = false;
  •     down = false;
  •     if( (angle<45 && angle>=0) || angle>=315 ){
  •       rigth = true;
  •     }
  •     if(angle>=45 && angle<135){
  •       up = true;
  •     }
  •     if(angle>=135 && angle<225){
  •       left = true;
  •     }
  •     if(angle>=225 && angle<315){
  •       down = true;
  •     }
  •   }
  •   //----------------------------
  •   void render(){
  •     blitter.pushMatrix();
  •     blitter.noFill();
  •     blitter.stroke(255);
  •     blitter.ellipse(centerX, centerY, radius*2, radius*2);
  •     blitter.fill(127);
  •     blitter.ellipse(centerX, centerY-radius, 2, 4);
  •     blitter.ellipse(centerX, centerY+radius, 2, 4);
  •     blitter.ellipse(centerX-radius, centerY, 4, 2);
  •     blitter.ellipse(centerX+radius, centerY, 4, 2);
  •     //blitter.fill(0);
  •     //blitter.text(str(angle), centerX, centerY);
  •     //blitter.text(str(dist) , centerX, centerY-14);
  •     blitter.fill(64);
  •     blitter.ellipse(centerX+dx/4, centerY+dy/4, radius, radius);
  •     blitter.popMatrix();
  •   }
  •   //----------------------------
  • }


Mira el CASE 10:, con poner un if(joy.dist > 4).. como tu dices creo que ya hará lo que decis.
En realidad es batante simple, solo se activa si desde el código del juego has hecho "joy.enable = true;" pero ahora mismo no tiene un valor de disparo.. siempre que detecta un dedo a la izquierda de la pantalla se activa si no estaba activado ya antes y llama a la función getValues().

Piensa que el metodo "run()" es el que llama a cada frame el core, y desde ahí compruevo ahora mismo solo si hay dedo para activarlo.. pero creo que le voy a añadir ya lo de la distancia minima.
Gracias por el consejo :)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Next

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 3 guests