Download OUYA Android para consolas

Document related concepts
no text concepts found
Transcript
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
ZTE FUN BOX
Project MOJO
Archos Gamepad 2
Game Stick
eSfere
Página 6
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
HDMI 1.4; resolución de 1080p o 720p. soporte para Stereoscopic
3D.
Salida de Video:
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.
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Override
public boolean onKeyDown(final int keyCode, KeyEvent event){
// Nos indica el número de jugador que pulsó el botón
int player = OuyaController.getPlayerNumByDeviceId(event.getDeviceId());
// Booleano para controlar la pulsación de los botones
boolean 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
case OuyaController.BUTTON_O:
// Aquí gestionaremos la pulsación del botón O
handled = true;
break;
case OuyaController.BUTTON_DPAD_LEFT:
// Aquí gestionaremos la pulsación del botón izquierda de la cruceta
handled = true;
break;
}
return handled || super.onKeyDown(keyCode, event);
}
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 Google Play
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<Tablero.rowPositions)
5
posSelected=new Pair<Integer,Integer> (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<Integer,Integer> (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<Integer,Integer> (posSelected.first, posSelected.second-1);
16
handled = true;
17
break;
18
case OuyaController.BUTTON_DPAD_RIGHT:
19
if(posSelected.second+1<Tablero.rowPositions)
20
posSelected=new Pair<Integer,Integer> (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
}
32
Página 23
¿Estoy ejecutando el código en una OUYA?
1
2
3
4
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
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