OUYA Android para consolas Jesús Luis Muros Cobos Manuel José Baena Toquero Indice

° Videojuegos y Android ° OUYA ° Comenzando el desarrollo ° Ejemplos con ECLIPSE ° Motores para el desarrollo con OUYA ° Ejemplos con Unity

Página ° 2 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 Gamepad 2

ZTE FUN BOX Game Stick eSfere

Página ° 6 OUYA

Página ° 7 OUYA

System on a Chip Nvidia Tegra 3 T33-P-A3

Quad-core 1.7 GHz ARM Cortex-A9 MPCore (arquitectura ARMv7-A)con CPU extensiones NEON Advanced SIMD y unidad de punto flotante VFPv3

Nvidia GeForce ULP @ 520 MHz (12.48 GFLOPS)1080p por GPU 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 HDMI 1.4; resolución de 1080p o 720p. soporte para Stereoscopic 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 12 volt DC via conector coaxial (OD 5.50 mm, ID 2.50 mm, center eléctrica: positive)

Tamaño: 75×75×82 mm ( 2.95×2.95×3.23 i n) Peso: 300 g (10,582383858337 oz)

Sistema Operativo: Android 4.1 (Jellybean) con un launcher personalizado de Ouya.

Página ° 8 OUYA

788 Juegos y contando…

Página ° 9 Comenzando el desarrollo

°¿Qué necesitamos?

ADT + NDK ODK

Página ° 10 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)

• Tras esto conectamos usando adb

Página ° 15 ¡No tengo una OUYA!

°Usa un emulador – Resolución: 1920x1080 – Botones hardware (Back y Home) – Soporte para D-PAD – Nivel de API 16 – Dispositivo a emular: Intel Atom x86 – RAM: 1GB

Página ° 16 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 @Override 1 public boolean onKeyDown(final int keyCode, KeyEvent event){ 2 // Nos indica el número de jugador que pulsó el botón 3 int player = OuyaController.getPlayerNumByDeviceId(event.getDeviceId()); 4 // Booleano para controlar la pulsación de los botones 5 boolean handled = false; 6 7 // Manejamos la entrada dependiendo del código del botón con el que se realizó la 8 pulsación 9 switch(keyCode){ 10 // Comprobamos si se trata del botón O 11 case OuyaController.BUTTON_O: 12 // Aquí gestionaremos la pulsación del botón O 13 handled = true; 14 break; 15 case OuyaController.BUTTON_DPAD_LEFT: 16 // Aquí gestionaremos la pulsación del botón izquierda de la cruceta 17 handled = true; 18 break; 19 } 20 return handled || super.onKeyDown(keyCode, event); 21 } Página ° 19 Ejemplos con Eclipse 1 @Override 2 public boolean onGenericMotionEvent(final MotionEvent event) { 3 //Obtiene el número de jugador 4 int player = OuyaController.getPlayerNumByDeviceId(event.getDeviceId()); 5 6 //Tomamos los valores del joystick izquierdo 7 // Valor en el eje X del joystick 8 float LS_X = event.getAxisValue(OuyaController.AXIS_LS_X); 9 // Valor en el eje Y del joystick 10 float LS_Y = event.getAxisValue(OuyaController.AXIS_LS_Y); 11 12 // Ajustamos la salida para los valores X e Y del joystick izquierdo 13 tv_joyLeft.setText("X: " + LS_X + " Y: " + LS_Y); 14 15 // Tomamos los valores del joystick derecho 16 // Valor en el eje X 17 float RS_X = event.getAxisValue(OuyaController.AXIS_RS_X); 18 // Valor en el eje Y 19 float RS_Y = event.getAxisValue(OuyaController.AXIS_RS_Y); 20 // Ajustamos la salida para los valores X e Y del joystick derecho 21 tv_joyRight.setText("X: " + RS_X + " Y: " + RS_Y); 22 23 return true; 24 }

Página ° 20 Mis juegos están https://play.google.com/store/apps/details?id=com.mu rosapps.damas

Página ° 21 Y en OUYA también

Página ° 22 1 Adaptación 2 switch (move) { 3 case OuyaController.BUTTON_DPAD_DOWN: 4 if(posSelected.first+1 (posSelected.first+1, posSelected.second); 6 handled= true; 7 break; 8 case OuyaController.BUTTON_DPAD_UP: 9 if(posSelected.first-1>=0) 10 posSelected=new Pair (posSelected.first-1, posSelected.second); 11 handled = true; 12 break; 13 case OuyaController.BUTTON_DPAD_LEFT: 14 if(posSelected.second-1>=0) 15 posSelected =new Pair ( posSelected.first , posSelected.second -1); 16 handled = true; 17 break; 18 case OuyaController.BUTTON_DPAD_RIGHT: 19 if(posSelected.second+1 (posSelected.first, posSelected.second+1); 21 handled = true; 22 break; 23 case OuyaController.BUTTON_O: 24 tryMove(posSelected); 25 handled = true; 26 break; 27 case OuyaController.BUTTON_Y: 28 surrender(); 29 handled = true; 30 break; 31 } Página ° 23 32 ¿Estoy ejecutando el código en una OUYA?

1 if (Build.MODEL.contains("OUYA")){ 2 b.setVisibility(View.GONE); 3 ((TextView)findViewById(R.id.TextSurrender)).setVisibility(View.VISIBLE); 4 }

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

Código para PC y OUYA disponible en core.ugr.es/beyondandroid

Página ° 28 Gracias por su atención ¿Alguna pregunta?

Página ° 29