OUYA Android para consolascore.ugr.es/jornadas-android/data/tallerOuya23_05_2014.pdf · Android...
Transcript of OUYA Android para consolascore.ugr.es/jornadas-android/data/tallerOuya23_05_2014.pdf · Android...
OUYAAndroid para consolas
Jesús Luis Muros Cobos
Manuel José Baena Toquero
Indice
� Videojuegos y Android
� OUYA
� Comenzando el desarrollo
� Ejemplos con ECLIPSE
Página � 2
� Ejemplos con ECLIPSE
� Motores para el desarrollo con OUYA
� Ejemplos con Unity
Videojuegos y Android
Página � 3
Videojuegos y Android
Página � 4
Videojuegos y Android
Página � 5
Videojuegos y Android
Nvidia Shield Project MOJO Archos Gamepad 2
Página � 6
ZTE FUN BOX Game Stick eSfere
OUYA
Página � 7
OUYA
System on a Chip Nvidia Tegra 3 T33-P-A3
CPU
Quad-core 1.7 GHz ARM Cortex-A9 MPCore (arquitectura ARMv7-A)con
extensiones NEON Advanced SIMD y unidad de punto flotante VFPv3
GPU
Nvidia GeForce ULP @ 520 MHz (12.48 GFLOPS)1080p por
Hardware MPEG-4 AVC/h.264 40 Mbit/s High-Profile, VC1-AP, y
decodificación de video DivX 5/6
Memoria RAM 1 GiB DDR3-1600 SDRAM (compartidos para CPU y GPU)
Entrada USB 1 USB 2.0, 1 microUSB
Salida de Video:
HDMI 1.4; resolución de 1080p o 720p. soporte para Stereoscopic
3D.
Página � 8
Salida de Video:
3D.
Salidas de Audio: HDMI (ARC), 5.1 or 2.0 canals
Almacenamiento: Memoria flash de 8 GB eMMC
Conectividad: 10/100 Ethernet (8P8C),WiFi 802.11 b/g/n, Bluetooth LE 4.0
Consumo de energí a: 4.5 watt, 1 watt (standby)
Alimentación eléctrica:
12 volt DC via conector coaxial (OD 5.50 mm, ID 2.50 mm, center
positive)
Tamaño: 75×75×82 mm (2.95×2.95×3.23 in)
Peso: 300 g (10,582383858337 oz)
Sistema Operativo: Android 4.1 (Jellybean) con un launcher personalizado de Ouya.
OUYA
788 Juegos y contando…
Página � 9
Comenzando el desarrollo
�¿Qué necesitamos?
Página � 10
ADT + NDK ODK
Configurar ADT
Página � 11
ODK
�Ouya Developer Kit puede descargarse de:
https://gamers.ouya.tv/developers/odk
�Requiere registro gratuito.
Página � 12
Página � 13
Configurar nuestra OUYA
Página � 14
Configurar nuestra OUYA (II)
Página � 15
• Tras esto conectamos usando adb
¡No tengo una OUYA!
�Usa un emulador
– Resolución: 1920x1080
– Botones hardware (Back y Home)
– Soporte para D-PAD
Página � 16
– Soporte para D-PAD
– Nivel de API 16
– Dispositivo a emular: Intel Atom x86
– RAM: 1GB
Vamos a programar
Página � 17
Usando la biblioteca de OUYA
�Para trabajar con las funciones de OUYA es necesario incluir el jar que se encuentra en el ODK.
Página � 18
Primer ejemplo
12345678910
@Overridepublic boolean onKeyDown(final int keyCode, KeyEvent event){
// Nos indica el número de jugador que pulsó el botónint player = OuyaController.getPlayerNumByDeviceId(event.getDeviceId());// Booleano para controlar la pulsación de los botonesboolean handled = false;
// Manejamos la entrada dependiendo del código del botón con el que se realizó la pulsación
switch(keyCode){// Comprobamos si se trata del botón O
Página � 19
1112131415161718192021
// Comprobamos si se trata del botón Ocase OuyaController.BUTTON_O:
// Aquí gestionaremos la pulsación del botón Ohandled = true;break;
case OuyaController.BUTTON_DPAD_LEFT:// Aquí gestionaremos la pulsación del botón izquierda de la crucetahandled = true;break;
}return handled || super.onKeyDown(keyCode, event);
}
Ejemplos con Eclipse123456789101112
@Overridepublic boolean onGenericMotionEvent(final MotionEvent event) {
//Obtiene el número de jugadorint player = OuyaController.getPlayerNumByDeviceId(event.getDeviceId());
//Tomamos los valores del joystick izquierdo// Valor en el eje X del joystickfloat LS_X = event.getAxisValue(OuyaController.AXIS_LS_X);// Valor en el eje Y del joystickfloat LS_Y = event.getAxisValue(OuyaController.AXIS_LS_Y);
// Ajustamos la salida para los valores X e Y del joystick izquierdo
Página � 20
12131415161718192021222324
// Ajustamos la salida para los valores X e Y del joystick izquierdotv_joyLeft.setText("X: " + LS_X + " Y: " + LS_Y);
// Tomamos los valores del joystick derecho// Valor en el eje Xfloat RS_X = event.getAxisValue(OuyaController.AXIS_RS_X);// Valor en el eje Yfloat RS_Y = event.getAxisValue(OuyaController.AXIS_RS_Y);// Ajustamos la salida para los valores X e Y del joystick derechotv_joyRight.setText("X: " + RS_X + " Y: " + RS_Y);
return true;}
Mis juegos están Google Play
https://play.google.com/store/apps/details?id=com.murosapps.damas
Página � 21
Y en OUYA también
Página � 22
Adaptación12345678910111213141516
switch (move) {case OuyaController.BUTTON_DPAD_DOWN:
if(posSelected.first+1<Tablero.rowPositions)posSelected=new Pair<Integer,Integer> (posSelected.first+1, posSelected.second);
handled= true;break;
case OuyaController.BUTTON_DPAD_UP:if(posSelected.first-1>=0)
posSelected=new Pair<Integer,Integer> (posSelected.first-1, posSelected.second);handled = true;
break;case OuyaController.BUTTON_DPAD_LEFT:
if(posSelected.second-1>=0)posSelected=new Pair<Integer,Integer> (posSelected.first, posSelected.second-1);
Página � 23
1617181920212223242526272829303132
posSelected=new Pair<Integer,Integer> (posSelected.first, posSelected.second-1);handled = true;break;
case OuyaController.BUTTON_DPAD_RIGHT:if(posSelected.second+1<Tablero.rowPositions)
posSelected=new Pair<Integer,Integer> (posSelected.first, posSelected.second+1);handled = true;break;
case OuyaController.BUTTON_O:tryMove(posSelected);handled = true;break;
case OuyaController.BUTTON_Y:surrender();handled = true;break;
}
¿Estoy ejecutando el código en una OUYA?
1234
if (Build.MODEL.contains("OUYA")){b.setVisibility(View.GONE);((TextView)findViewById(R.id.TextSurrender)).setVisibility(View.VISIBLE);
}
Página � 24
¿Puedo usar un motor gráfico?
Los motores gráficos actuales nos pueden ayudar a desarrollar mejores juegos en menos tiempo.
Página � 25
Motores para el desarrollo con OUYA
Página � 26
Motores para el desarrollo con OUYA
Página � 27
Ejemplos con Unity
Página � 28
Código para PC y OUYA disponible en core.ugr.es/beyondandroid
Gracias por su atención
Página � 29
¿Alguna pregunta?