videojuegos3dandroid unity3d new curso

Upload: jdrr

Post on 04-Jun-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    1/218

    Desarrollo de videojuego 3D para Android utilizando elsoftware Unity3d e integracin con aplicacin web basada

    en tecnologa Drupal mediante web services SOAP

    TITULACIN: Ingeniera Tcnica en Telecomunicaciones, especialidad Telemtica.

    AUTORES:Eloy Cantero, Salvador Lpez .DIRECTORES:Carlos Molina, Jordi Duch .

    FECHA:Febrero / 2012.

    Departament dEnginyeria Informtica i Matemtiques

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    2/218

    RESUMEN

    Los dispositivos mviles forman parte del da a da de millones de personas en todo el

    mundo, independientemente de su edad o condicin social. Por otra parte, el sector de los

    videojuegos se mantiene firme pese a los tiempos de crisis y poco a poco va acercndose a

    sectores de la poblacin totalmente inexplotados.

    El desarrollo web ha evolucionado enormemente en los ltimos aos, integrando mltiples

    tecnologas que permiten dar soporte a numerosas aplicaciones. Esta curva evolucin ha sido

    especialmente pronunciada en lo referente a dispositivos mviles.

    La tendencia actual de las empresas es ir hacia la integracin de tecnologas. Por tanto, lo

    realmente competitivo es ofrecer al usuario final un software que pueda ser ejecutado en un

    mvil y que disponga de las opciones necesarias para intercambiar informacin con una

    pgina web en tiempo real.

    Por todo ello, el presente proyecto busca aunar el mundo de los videojuegos con los

    dispositivos mviles y todas las tecnologas de comunicacin que integran; centrndose en el

    aprovechamiento de las capacidades que ofrece el software de creacin de videojuegos

    Unity 3d para el S.O Android, la creacin de la web basndose en el CMS Drupaly la

    integracin de web y videojuego mediante el uso de webServices.

    Unity3d para Android.

    Esta herramienta de creacin de videojuegos, en su versin de compilacin para el S.O

    Android, se diferencia del resto de frameworks existentes en un apartado fundamental, la

    integracin.Para entender este concepto slo hay que mirar a su competencia directa, el

    Marmalade SDK, que requiere de la instalacin previa de un IDE (concretamente el Visual

    Studio) desde el que se programar posteriormente la aplicacin.

    Desarrollar software con Unity3d significa trabajar a un nivel de abstraccin superior,

    empezando por la facilidad a la hora de poner en marcha un proyecto. nicamente

    deberemos instalar el software mediante su correspondiente archivo ejecutable y, siguiendo

    una serie de pasos guiados, podremos empezar a programar y a montar el entorno 3D de

    forma intuitiva y sin necesidad de disponer de unos conocimientos muy avanzados de

    programacin.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    3/218

    Por ltimo, quiz el punto ms fuerte de Unity3d es su comunidad y soporte online. Desde

    su pgina web se puede acceder a todo tipo de documentacin y foros tcnicos para solventar

    cualquier duda que pueda surgir en la utilizacin del software.

    Drupal.

    Drupal es un sistema gestor de contenidos CMS, por tanto, es una herramienta que permite

    crear webs de cualquier tipo. En este proyecto se ha creado el sitio web GameWebutilizando

    este sistema.

    GameWeb es una web dedicada a dar soporte a aplicaciones del tipo videojuegos para

    clientes mviles. Por tanto, es la pgina donde el usuario se registra y descarga dichas

    aplicaciones. El sitio web tambin le permite interactuar con otros usuarios y con laredaccin haciendo ms amena la experiencia.

    En cuanto a las aplicaciones disponibles, todas disponen de un ranking online el cual el

    usuario podr consultar tanto en la web como del dispositivo.

    webService SOAP.

    Los servicios web permiten la interaccin entre la aplicacin del dispositivo mvil y la web.

    Estos servicios web estn creados utilizando la tecnologa SOAP para el intercambio de

    datos. Este protocolo de comunicacin permite transferir datos entre distintas plataformas y

    lenguajes de programacin mediante el traspaso de ficherosXML.

    Las funciones de comunicacin permiten al usuario interactuar con otros jugadores a travs

    de un ranking online. Este se podr consultar en cualquier momento mejorando la

    experiencia de juego. Para acceder a l debe disponer de una cuenta de usuario de la pgina

    web GameWeby realizar el correspondiente login.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    4/218

    NDICE GENERAL

    1. Introduccin ........................................................................................................................ 151.1. Motivacin del proyecto ............................................................................................... 151.2. Objetivos del proyecto .................................................................................................. 16

    2. Estado del arte .................................................................................................................... 172.1. Los gestores de contenido CMS ................................................................................... 17

    2.1.1.Joomla .................................................................................................................. 18

    2.1.2.PHP-Nuke ............................................................................................................. 19

    2.1.3.Moodle .................................................................................................................. 21

    2.1.4.Drupal .................................................................................................................. 232.1.4.1. Drupal y PHP ........................................................................................ 25

    2.1.4.2. Drupal y MySQL .................................................................................. 26

    2.1.4.3. Drupal y CSS ........................................................................................ 26

    2.1.4.4. Mdulos en Drupal ............................................................................... 27

    2.2. Los sistemas operativos para mviles ........................................................................... 282.2.1.iOS de Apple ......................................................................................................... 28

    2.2.2.Windows phone 7.................................................................................................. 29

    2.2.3.Android ................................................................................................................ 312.2.3.1. Android y Java ...................................................................................... 33

    2.2.3.2. Servicios web en Android ..................................................................... 34

    2.3. Servicios Web ............................................................................................................... 362.3.1.XML ..................................................................................................................... 38

    2.3.2.El protocolo SOAP................................................................................................ 40

    2.3.3.WSDL .................................................................................................................. 41

    2.3.4.Otros protocolos y estndares usados en Web Services ....................................... 41

    2.4. Programacin de videojuegos para mvil ..................................................................... 422.4.1.Niveles de abstraccin .......................................................................................... 43

    2.4.1.1. Bajo nivel .............................................................................................. 43

    2.4.1.1.1. Android NDK .......................................................................... 43

    2.4.1.2. Nivel intermedio .................................................................................. 44

    2.4.1.2.1. Android SDK ........................................................................... 44

    2.4.1.3. Alto nivel ............................................................................................. 45

    2.4.1.3.1. Marmalade SDK ...................................................................... 46

    2.4.1.3.2. Cocos2D ................................................................................... 48

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    5/218

    2.4.1.3.3. Unity 3D .................................................................................. 50

    3. Especificaciones .................................................................................................................. 613.1. Especificaciones de la web ........................................................................................... 61

    3.1.1.Pgina principal.................................................................................................... 61

    3.1.2.Contenido del men principal ............................................................................... 61

    3.1.2.1. Login o registro de nuevo usuario ........................................................ 61

    3.1.2.2. Juegos ................................................................................................... 62

    3.1.2.3. Noticias ................................................................................................. 63

    3.1.2.4. Zona Foro.............................................................................................. 63

    3.1.2.5. Fan Art .................................................................................................. 64

    3.1.2.6. Conoce a tus hroes .............................................................................. 65

    3.2. Especificaciones del videojuego ................................................................................... 663.2.1.Genero del juego ................................................................................................... 66

    3.2.2.Objetivos del juego ............................................................................................... 66

    3.2.3.Escenas .................................................................................................................. 67

    3.2.3.1. Men principal ...................................................................................... 67

    3.2.3.2. Escena de juego .................................................................................... 70

    3.2.3.2.1. Terreno ..................................................................................... 70

    3.2.3.2.2. Plataformas .............................................................................. 72

    3.2.3.2.3. Objetos coleccionables............................................................. 75

    3.2.3.2.4. Enemigos y zonas de penalizacin........................................... 76

    3.2.3.2.5. Zonas secretas .......................................................................... 78

    3.2.3.3. Men Post Partida ................................................................................. 79

    3.2.3.4. Men Puntuaciones ............................................................................... 80

    3.2.4.Personaje principal ................................................................................................ 81

    3.2.4.1. Animaciones del personaje ................................................................... 81

    3.2.4.2. Interaccin con enemigos, objetos y plataformas ................................. 82

    3.2.5.Msica ................................................................................................................... 833.2.6.Efectos de sonido SFX .......................................................................................... 84

    3.3. Especificaciones de los webServices ............................................................................ 853.3.1.webService servidor .............................................................................................. 86

    3.3.1.1. Loggin y control de usuario .................................................................. 87

    3.3.1.2. Manejo del ranking de puntuaciones .................................................... 87

    3.3.2.webService cliente ................................................................................................ 87

    3.3.2.1. Loggin y control de usuario .................................................................. 88

    3.3.2.2. Manejo del ranking de puntuaciones .................................................... 88

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    6/218

    4. Estudios previos .................................................................................................................. 894.1. Preparando las herramientas ......................................................................................... 894.2. Programacin de videojuegos ....................................................................................... 90

    4.2.1.Estructura bsica de un videojuego ....................................................................... 90

    4.3. Primer juego:El Machanguito...................................................................................... 924.3.1.Definicin del juego .............................................................................................. 92

    4.3.2.Estructura de clases ............................................................................................... 93

    4.3.3.Funcionamiento ..................................................................................................... 94

    5. Decisiones de diseo ............................................................................................................ 975.1. Drupal ........................................................................................................................... 975.2. Android ......................................................................................................................... 995.3. WebService Soap ........................................................................................................ 1005.4. Unity 3D ..................................................................................................................... 101

    6. Diseo ................................................................................................................................. 102

    6.1. Diseo de la web ......................................................................................................... 1026.1.1.Diagrama de casos de uso ................................................................................... 102

    6.1.2.Diagrama de estados ........................................................................................... 103

    6.2. Diseo del videojuego ................................................................................................ 1046.2.1.Diagrama de casos de uso ................................................................................... 104

    6.2.2.Diagrama de estados ........................................................................................... 105

    6.2.3.Usabilidad especfica para Android .................................................................... 106

    6.3. Diseo de los webServices......................................................................................... 1096.3.1.Diagramas de casos de uso .................................................................................. 109

    6.3.2.Diagramas de estados .......................................................................................... 1106.3.3.Usabilidad especfica para Android .................................................................... 111

    7. Desarrollo .......................................................................................................................... 1127.1. Desarrollo de la web ................................................................................................... 112

    7.1.1.Instalacin de Drupal ......................................................................................... 112

    7.1.2.Control de usuarios y de roles ............................................................................ 114

    7.1.3.Mens y navegacin........................................................................................... 117

    7.1.3.1. Preparando el men de navegacin izquierdo .................................... 117

    7.1.3.2. El mdulo ckeditor............................................................................. 1187.1.3.3. ltimas noticias .................................................................................. 119

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    7/218

    7.1.3.4. Juegos ................................................................................................. 123

    7.1.3.5. Zona Foro............................................................................................ 127

    7.1.3.6. Conoce a tus hroes ............................................................................ 130

    7.1.3.7. Fan Art ................................................................................................ 130

    7.1.4.Elementos complementarios .............................................................................. 130

    7.1.4.1. Contador de usuarios, enlaces de inters y RSS ................................. 131

    7.1.4.2. El mduloPoll.................................................................................... 133

    7.1.5.Aspecto visual de la web .................................................................................... 135

    7.1.5.1. Instalacin del tema ZEN ................................................................... 136

    7.1.5.2. Creacin de un subtema ZEN ............................................................. 138

    7.1.5.3. Modificacin del tema ........................................................................ 140

    7.2. Desarrollo del videojuego ........................................................................................... 1427.2.1.Estructura y jerarqua de clases dentro de Unity3D ............................................ 142

    7.2.2.Elementos comunes a todas las escenas del videojuego ..................................... 145

    7.2.2.1. Creacin del fondo tridimensional ...................................................... 145

    7.2.2.2. Msica de fondo ................................................................................. 147

    7.2.3.EscenaMenuPrincipal........................................................................................ 148

    7.2.3.1. Cmara principal ................................................................................. 148

    7.2.3.2. Mens y Etiquetas ............................................................................... 149

    7.2.3.3. Msica de fondo ................................................................................. 152

    7.2.4.EscenaPantalla1................................................................................................. 153

    7.2.4.1. Creacin del entorno tridimensional ................................................... 153

    7.2.4.2. Cmara principal ................................................................................. 159

    7.2.4.3. Personaje principal .............................................................................. 160

    7.2.4.4. Objetos coleccionables ....................................................................... 168

    7.2.4.5. Enemigos ............................................................................................ 170

    7.2.4.6. Mens y Etiquetas ............................................................................... 173

    7.2.5.EscenaMenuPostPartida.................................................................................... 1787.2.5.1. Cmara principal ................................................................................. 178

    7.2.5.2. Mens y Etiquetas ............................................................................... 179

    7.2.6.EscenaMenuPuntuaciones................................................................................. 181

    7.2.6.1. Mens y Etiquetas ............................................................................... 181

    7.2.6.2. Creacin de la tabla del ranking online .............................................. 1827.3. Desarrollo de los webServices ................................................................................... 184

    7.3.1.Integrando SOAP en Drupal ............................................................................... 184

    7.3.1.1. Mdulo Services ................................................................................. 184

    7.3.1.2. Mdulo Soap Server ........................................................................... 185

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    8/218

    7.3.2.Implementacin del servidor ............................................................................... 186

    7.3.3.Desarrollo del cliente Android ............................................................................ 193

    7.3.3.1. Instalacin de la librera ksoap2 ......................................................... 194

    7.3.3.2. Funciones de conexin ....................................................................... 195

    7.3.3.3. Integracin de Unity3d con Android en IDE Eclipse ......................... 197

    8. Pruebas realizadas ............................................................................................................ 200

    9. Software y herramientas utilizadas ................................................................................. 2029.1. Entorno Eclipse ........................................................................................................... 2029.2. Unity3D ...................................................................................................................... 2029.3. Simulador de Android ................................................................................................. 2029.4. 3dsMax........................................................................................................................ 2039.5. Photoshop.................................................................................................................... 2049.6.NotePad++ .................................................................................................................. 2049.7. Audacity ...................................................................................................................... 2059.8. Edge Diagrammer ....................................................................................................... 2069.9. Gantt Project ............................................................................................................... 2069.10. Paquete Office ................................................................................................. 206

    10.Aspectos legales ................................................................................................................. 20710.1. Sociedad de responsabilidad Limitada (S.L.) ................................................. 207

    10.1.1.Caractersticas.................................................................................................. 207

    10.1.2.Requisitos de constitucin ............................................................................... 207

    10.1.3.rganos que componen la sociedad limitada .................................................. 208

    11.Costes ................................................................................................................................. 209

    12.Planning temporal ............................................................................................................ 21112.1. Diagrama de Gantt ........................................................................................... 212

    13.Conclusiones y trabajos futuros ...................................................................................... 213

    14.Referencias ........................................................................................................................ 215

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    9/218

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    10/218

    Figura 45. Objeto coleccionableLlave Mgica..................................................................... 78Figura 46. Plataforma secreta ................................................................................................. 78Figura 47. Zona secreta .......................................................................................................... 79Figura 48. MenPostPartida................................................................................................. 80Figura 49. MenuPuntuaciones.............................................................................................. 81

    Figura 50. Animaciones del personaje principal .................................................................... 82Figura 51. Ejemplo de efectos especiales en gemas y en el propio personaje ....................... 83Figura 52. Diagrama de bucle principal de juego .................................................................. 91Figura 53. Ejemplo de Sprites del videojuego Super Mario Bros.......................................... 92Figura 54. Sprites utilizados en el proyectoEl Machanguito................................................ 95Figura 55. Pantalla de juego deEl Machanguito................................................................... 96Figura 56. Animacin de caminar .......................................................................................... 96Figura 57. Animacin de saltar .............................................................................................. 96Figura 58. Diagrama de casos de uso de la web................................................................... 101Figura 59.Diagrama de estados de la web ........................................................................... 103

    Figura 60. Diagrama de casos de uso del videojuego .......................................................... 104Figura 61. Diagrama de estados del videojuego .................................................................. 105Figura 62. Smartphone LG Optimus 2X .............................................................................. 106Figura 63. Ejemplo de aplicacin de shaders ....................................................................... 107Figura 64. Tabla de configuracin de grficos del videojuego ............................................ 108Figura 65. Diagrama de casos de uso de los elementos de comunicacin ........................... 109Figura 66. Diagrama de estados de comunicacin de la aplicacin ..................................... 110Figura 67. Ventana del asistente de instalacin de Drupal .................................................. 113Figura 68. Error de instalacin de Drupal ............................................................................ 113Figura 69. Ventana de configuracin bsica de la base de datos ......................................... 114

    Figura 70.Ventana de administracin de opciones para roles y permisos ........................... 115Figura 71. Ventana de asignacin de roles y permisos para usuarios especficos ............... 116Figura 72. MduloProfiles.................................................................................................. 116Figura 73. Ventana de creacin de mens ........................................................................... 117Figura 74. Ventana de creacin de bloques.......................................................................... 118Figura 75. Seccin superior de la ventana del editor Ckeditor............................................ 119Figura 76. Ventana de habilitacin de mdulos ya instalados ............................................. 119Figura 77. Ventana de administracin de permisos para mdulos concretos ...................... 120Figura 78. Ejemplo de asignacin de permisos al mdulo comment................................... 121Figura 79. Ventana de seleccin de filtros aplicables a la escritura de texto en la web ....... 121Figura 80. Ejemplo de insercin de elemento en el contenedorEnlaces Web..................... 122Figura 81. Ventana de configuracin del elemento aadido a un contenedor...................... 122Figura 82. Ventana de descargas de juegos de la web ......................................................... 124Figura 83. Ejemplo de creacin de un tipo de contenido ..................................................... 124Figura 84. Ventana de informacin sobre el juego a descargar ........................................... 125Figura 85. Diagrama UML de .ranking de usuarios ............................................................. 126Figura 86. Ventana de activacin del mduloForum.......................................................... 127Figura 87. Ejemplo de configuracin de permisos para el mduloForum.......................... 128Figura 88. Ventana de creacin de foros .............................................................................. 128Figura 89. Estructura de los foros iniciales de la web .......................................................... 129Figura 90. Activacin del mdulo Quien est conectado.................................................... 131

    Figura 91. Visualizacin del mdulo Quien est conectado en la pgina principal ............ 132Figura 92. Visualizacin del men Sitios de inters............................................................ 132

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    11/218

    Figura 93. Visualizacin del bloque Sindicar...................................................................... 133Figura 94. Ventana de activacin del mduloPoll.............................................................. 133Figura 95.Configuracin de permisos para el mduloPoll................................................ 133Figura 96. Formulario de creacin de encuesta.................................................................... 134Figura 97. Visualizacin del bloqueEncuesta en la pgina principal.................................. 135

    Figura 98. Ventana de seleccin de estados para los temas disponibles .............................. 136Figura 99. TemaZEN disponible en Drupal 6.x .................................................................. 137Figura 100. Ejemplo de insercin de elemento en el contenedorEnlaces Web................... 137Figura 101. Sistema de ficheros de la carpeta de instalacin de Drupal .............................. 137Figura 102. Carpeta creada para la creacin del subtemagameweb.................................... 138Figura 103. Aspecto del navegadorFirefox una vez instalado el complementoFirebug.... 140Figura 104. Ventana de trabajo del complementoFirebug.................................................. 141Figura 105. Apariencia final de la pgina principal de la web una vez aplicado el CSS ..... 141Figura 106. Diagrama de jerarqua de objetos del videojuego ............................................. 143Figura 107. ObjetoPalm del paquete Standard Assets........................................................ 145

    Figura 108. Elementos del objetoPalm en el panelProject................................................ 146Figura 109.Botones de movimiento y rotacin de objetos del panel Scene........................ 146Figura 110. Ejemplo de componente del tipoAudioSource vista desde el panel

    Inspector.......................................................................................................... 147Figura 111. Ejemplo de componente del tipo Camera vista desde el panelInspector........ 148Figura 112. Ejemplo de componente del tipo Script vista desde el panelInspector........... 149Figura 113. Jerarqua del contenedorMainTitle dentro del panelHirearchy...................... 149Figura 114. Ejemplo de componente del tipo GUITexture vista desde el panel

    Inspector.......................................................................................................... 150Figura 115. Fuentes de audio Song1 y Song2 asociadas al script SelectorMusica.............. 152

    Figura 116. Objeto con filtro de superficie del tipo Cube.................................................... 154Figura 117. Ejemplo de componente del tipoRigidBody vista desde el panelInspector.... 154Figura 118. Ejemplo de componente del tipoBoxCollider vista desde el panel

    Inspector.......................................................................................................... 154Figura 119. Asignacin de las posiciones de referencia alscript BamboleoPlataforma..... 155Figura 120.Prefab FuegoCompacto visto desde los panelesHirearchy yProject............. 156Figura 121. Configuracin del materialFireSmoke del objetoFuegoCompacto................. 156Figura 122. Ventana de creacin de un sistema de partculas .............................................. 156Figura 123. Componentes asociadas por defecto al crear un sistema de partculas ............. 157Figura 124. Configuracin del CapsuleCollider asociado al objetoFuegoCompacto......... 157Figura 125.Casilla de desactivacin del contenedorZonaSecreta...................................... 157Figura 126. ComponenteAudioSource asociada al objetoPlataformaSecreta.................... 159Figura 127. Asociacin delprefab efectoPlataformaSecreta al script que lo controla ........ 159Figura 128. Posicin del objetoMachanguito asociada al script de control de la cmara ... 160Figura 129. Panel de exportacin de objeto de Unity3d ...................................................... 160Figura 130.Jerarqua del objeto 2D SideScroller dentro del panelHirearchy.................... 160Figura 131. Componentes asociadas al objetoMachanguito............................................... 161Figura 132. Animaciones asociadas a la componenteAnimation........................................ 161Figura 133. Jerarqua de los objetos asociados al contenedorDual TouchPads.................. 163Figura 134. Opciones del scriptJoystick.............................................................................. 163Figura 135. Asociacin de scripts de TouchPads al Script de control del personaje ........... 164

    Figura 136. Propiedades pblicas de la componente CharacterController......................... 165Figura 137. Colocacin de los Colliders del personaje visto desde el panel Scene............. 166

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    12/218

    Figura 138. Asociacin del objetoFuegoMachango al Script que lo controla .................... 167Figura 139. Configuracin de la componenteMeshColliderpara una superficie plana ...... 168Figura 140. Script ControlColliderGemas........................................................................... 169Figura 141. Jerarqua del contenedorPjaros..................................................................... 171Figura 142.Colocacin de los Colliders del enemigo visto desde el panel Scene............... 171

    Figura 143. Variables pblicas asociadas alscript de control del enemigo ......................... 172Figura 144. Jerarqua del contenedorMiscelanea de la escenapantalla1........................... 173Figura 145. Texturas asociadas al script ControlBarraVida................................................ 173Figura 146. Jerarqua del contenedorLabelsPantallaJuego de la escenapantalla1............ 175Figura 147. Variables pblicas delscript MainMenuBtns................................................... 176Figura 148. Componentes asociadas al objetoPausaBtn..................................................... 177Figura 149. GUITexture asociada al objetoPeanutManFace.............................................. 178Figura 150. Propiedades y colocacin del objetoMainCamera en la escena ...................... 179Figura 151. Jerarqua del contenedorMiscelanea de la escenaMenuPostPartida.............. 179Figura 152.GUITexture asociada al objeto GameOverWord.............................................. 179

    Figura 153. Contenido de las variables pblicas delscript GameOverScript...................... 180Figura 154. Jerarqua del contenedorMiscelanea de la escenaMenuPuntuaciones............ 181Figura 155. Propiedades pblicas delscript MainMenuBtns............................................... 182Figura 156. Estilos asociados al scriptMenuPuntuaciones................................................. 182Figura 157. Diferentes servicios disponibles en el mdulo Services de Drupal .................. 184Figura 158. Ventana de visualizacin de parmetros de servicio de la libreraNUSOAP... 186Figura 159. Visualizacin del nuevo mdulo mvil_service incorporado en Drupal .......... 188Figura 160. Lista de funciones del mdulo mvil_services a las que se tiene acceso ......... 189Figura 161. Enlaces de las funciones implementadas en el mdulo mvil_service............. 192Figura 162. Formulario de pruebas genrico para una funcin del mdulo

    mvil_services................................................................................................. 193Figura 163. Enlace de acceso a las descripciones WSDL..................................................... 193Figura 164. Aspecto del Web Services Definition Language utilizado ................................ 193Figura 165.Ventana para aadir elJAR externo ksoap2...................................................... 194Figura 166. Panel para transformar una carpeta en una librera del proyecto ...................... 198Figura 167. Jerarqua de carpetas dentro de la librera UnityPlayerActivity........................ 198Figura 168. Interfaz delIDE Eclipse.................................................................................... 202Figura 169. Interfaz del simulador de Android .................................................................... 203Figura 170. Interfaz del programa 3dsMax.......................................................................... 203Figura 171. Interfaz del programaAdobe Photoshop.......................................................... 204Figura 172. Interfaz del programaNotepad++.................................................................... 205Figura 173. Interfaz del programaAudacity........................................................................ 205Figura 174. Interfaz del programaEdgeDiagrammer.......................................................... 206Figura 175. Interfaz del programa GanttProject.................................................................. 206Figura 176. Tabla de costes del proyecto ............................................................................. 209Figura 177. Diagrama de Gantt ............................................................................................ 212

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    13/218

    NDICE DE CDIGOS FUENTE

    Cdigo 1. Definicin e inicializacin de la matriz del escenario del juegoEl Machanguito..................................................................................................... 95

    Cdigo 2. Etiqueta html para enlazar con el ranking del juego ........................................... 126Cdigo 3. Comprobacin de existencia de una key concreta de una variable sper

    global ................................................................................................................... 127Cdigo 4. Modificacin de variables del ficherogameweb.info.......................................... 138Cdigo 5. Diferentes regiones aadidas o bloqueadas del ficherogameweb.info................ 139Cdigo 6. Lneas del ficherogameweb.info que hacen referencia a los estilos CSS ........... 139Cdigo 7. Funcin del fichero template.php que hace referencia al tema STARTERKIT.... 139Cdigo 8. Substitucin del tema STARTERKITporgameweb............................................. 140Cdigo 9. Mtodo SmoothDamp del objetoMathf de Unity3d ............................................ 149Cdigo 10. Variable esttica que guarda elstring Conectando...................................... 150

    Cdigo 11. Variablepara controlar el estado de la conexin con el servidor ...................... 150Cdigo 12. Funcin para mostrar los cuadros de texto del login de usuario ....................... 151Cdigo 13. Ejemplo de captura del evento de pulsar en una etiqueta .................................. 151Cdigo 14. Llamada al mtodo webLogindelwebService cliente ....................................... 152Cdigo 15. Mtodo Get del objetojo utilizado para recibir el parmetro error............. 152Cdigo 16. MtodoLoadLevel de Unity3d para cargar la escena levelToLoad................... 152Cdigo 17. Creacin de variables pblicas del tipoAudioSource....................................... 153Cdigo 18. Ejemplo de uso de la funcinRandom de Unity3d ........................................... 153Cdigo 19. Creacin de variables pblicas del tipo Transform........................................... 155Cdigo 20. Bucle de ejecucin delscriptque controla las plataformas mviles ................. 155

    Cdigo 21. Activacin de la propiedad active del objetoplataformaSecreta1.................... 158Cdigo 22. Condicin que comprueba qu plataforma secreta se debe activar ................... 158Cdigo 23. Ejemplo de uso del mtodoInstantiate de Unity3d .......................................... 159Cdigo 24. Definicin de las variables de control de animaciones del personaje ............... 162Cdigo 25. Proceso de cargado de animaciones dentro de la funcinAwake de Unity3d ... 162Cdigo 26. Ejemplo de llamada al mtodo CrossFade del objeto animation...................... 162Cdigo 27. Definicin de la posicin relativa del objeto defaultRect en la pantalla............ 164Cdigo 28. Clculo de la posicin de pulsado cuando se cumple la condicin touchPad... 164Cdigo 29. Asignacin de una cantidad de movimiento a la variable movement................ 165Cdigo 30. Asignacin de una cantidad de movimiento a la variable movement................ 167Cdigo 31. Acciones a realizar cuando el se cumple el booleanomachangoIncendiao...... 168Cdigo 32. Ejemplo de uso de la funcin WaitForSeconds de Unity3d .............................. 168Cdigo 33. Comprobacin del objeto que ha entrado dentro del trigger controlado por

    OnTriggerEnter................................................................................................. 169Cdigo 34. Actualizacin de la puntuacin de la partida al colisionar con unPeanut........ 169Cdigo 35. Actualizacin de la puntuacin de la partida al colisionar con unagreen

    diamond............................................................................................................. 170Cdigo 36. Utilizacin del mtodoRotate del objeto Transform........................................ 170Cdigo 37. Actualizacin de la cantidad de vidas al colisionar con el objeto VidaExtra.... 170Cdigo 38. Modificacin del atributospeed del objeto_animation.................................... 172Cdigo 39. Asignacin de diferentes texturas a la propiedad texture del objetoguiTexture

    en funcin de vidaPej........................................................................................ 174

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    14/218

    Cdigo 40. Lgica de ejecucin de la funcin respawn del script asociado al personajeprincipal ............................................................................................................. 174

    Cdigo 41. Acciones a realizar al entrar en el trigger del objetofinalPantalla................... 175Cdigo 42. Ejemplo de obtencin del tiempo transcurrido desde que empez el nivel ....... 175Cdigo 43. Estructura que controla el movimiento del objetoLetrasBienvenida................ 176

    Cdigo 44. Acciones a realizar en las pulsaciones impares de la etiquetaPausaBtn.......... 177Cdigo 45. Acciones a realizar cuando se pulsa la etiquetaRetryWord.............................. 180Cdigo 46. Actualizacin de la propiedad text del objetoguiText....................................... 181Cdigo 47. Creacin de la variable multidimensional matriz.............................................. 182Cdigo 48. Bucle que rellena la matriz de puntuaciones con los elementos obtenidos del

    mtodogetElementScores del webService cliente ............................................. 183Cdigo 49. Valor por defecto que se asigna a cada una de las posiciones de matriz........... 183Cdigo 50. Estructura base del fichero mvil_service con extensin .info.......................... 187Cdigo 51. Estructura base del fichero mvil_service con extensin .module.................... 189Cdigo 52. Descripcin del resto de funciones que contiene el mdulo mvil_services..... 190

    Cdigo 53. Definicin de parmetros en el array de argumentos........................................ 191Cdigo 54. Estructura del fichero mvil_service con extensin .module............................ 191Cdigo 55. Estructura del mtodo webLogin definido en el webService cliente ................. 196Cdigo 56. Proceso de guardado de la id de usuario en la propiedad uid............................ 196Cdigo 57. Actualizacin delstring errormsgsi surge algn problema de conexin o

    autenticacin ...................................................................................................... 196Cdigo 58. Definicin de la clase PeanutMan perteneciente al webService cliente ............ 198Cdigo 59. Comentado de la lnea que carga un layoutpor defecto en Android ................. 199

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    15/218

    1. Introduccin.

    A continuacin se hace una breve introduccin al presente proyecto, exponiendo cul ha sido

    su motivacin, qu objetivos se persiguen en su realizacin y cules son los contenidos

    ofrecidos en esta memoria.

    1.1.Motivacin del proyecto.En el momento de esta redaccin, el mercado de los smartphonesse encuentra en un estado

    de gran expansin debido a la creciente demanda de estos dispositivos por parte de la

    poblacin. Por ello, pensar en una compaa lder en el sector es cuanto menos arriesgado,

    ya que a diario surgen nuevas funcionalidades que van dando cierta ventaja a una u otra

    marca.

    Actualmente tenemos tres grandes compaas luchando por el liderato del sector de los

    telfonos mviles inteligentes: Google con el S.O Android, Apple con iOS y Microsoft

    valindose del S.O Windows Phone 7.

    Desde la perspectiva de desarrolladores de software es de vital importancia escoger la

    plataforma adecuada sobre la que programar la aplicacin, basando la eleccin normalmente

    en el pblico potencial que podra descargar el producto.

    Llegados a este punto la solucin ms razonable es utilizar herramientas de desarrollo que

    nos permitan crear aplicaciones multiplataforma, abarcando as mucho ms mercado y

    abstrayndonos en gran medida del problema de la volatilidad del mercado. De este

    razonamiento surge la idea de utilizar Unity3d para la creacin del videojuego.

    Por otra parte, el mundo del entretenimiento digital ha cambiado mucho en los ltimos aos,

    hasta el punto de que hoy da es improbable encontrarse con un videojuego que no tenga

    soporte online y un sitio web para, por ejemplo, publicitarse. Es en este punto donde surge la

    necesidad de crear una web para proporcionar funcionalidades online al videojuego.

    Existen diferentes niveles de abstraccin a la hora de desarrollar un sitio web, desde la

    creacin de un framework propio (desarrollo web de alto rendimiento a coste de una

    complejidad muy alta en la programacin) hasta la utilizacin de gestores de contenido que

    permiten elaborar webs bastante complejas sin necesidad de tener amplios conocimientos en

    programacin. En este punto se decide utilizar el CMS Drupal para la creacin de la web.

    Por ltimo, la necesidad de comunicar de forma sencilla y estandarizada el videojuego y la

    web nos lleva irremediablemente a la utilizacin de web services SOAP.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    16/218

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    17/218

    2. Estado del Arte.

    2.1.Los gestores de contenido (CMS).

    Definicin e historia.

    Un sistema de gestin de contendidos CMS es un programa, el cual permite implementar

    una estructura de soporte para la creacin y la administracin de contenidos de una manera

    cmoda. Principal mente se suele utilizar para la administracin de pginas y sitios web.

    Los primeros sistemas de administracin de contenidos fueron desarrollados por

    organizaciones que publicaban una gran cantidad de contenido en Internet, y necesitaban de

    continuas actualizaciones; como revistas en lnea, peridicos y publicaciones corporativas.

    En 1995, el sitio de noticias tecnolgicas CNET sac su sistema de administracin de

    documentos y publicacin y cre una compaa llamada Vignette, pionero de los sistemas de

    administracin de contenido comerciales.

    La filosofa de CMS es la creacin y administracin de contenidos de una manera flexible y

    dinmica. Para ello el sistema se sirve principalmente en una base de datos donde se

    almacenan y generan los contenidos de manera dinmica.

    Una de las caractersticas que hace a los CMS una herramienta potente y flexible es la fuerte

    implementacin del modelo vista controlador. Esto significa, que se separa por una parte lo

    que es la creacin y administracin de contenido de lo que es la forma en la que este se

    muestra al usuario. De esta manera, podemos dar formato y diseo al contenido en cualquier

    momento de manera independiente a la administracin de estos.

    Otra de las caractersticas que hacen a un CMS una gran opcin a la hora de configurar un

    sitio web es la gestin y administracin de usuarios. Los sistemas gestores y contenidoadems de almacenar y organizar la informacin permiten controlar quien puede y como

    puede acceder un usuario a la esta. Para ello, permite la administracin de usuarios y

    permisos que estos tienen a la hora de acceder a los contenidos.

    Tipos de gestores.

    Por sus caractersticas:

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    18/218

    - Segn el lenguaje de programacin empleado, como por ejemplo Active Server Pages,

    Java, PHP, ASP.NET, Ruby On Rails, Python

    - Segn la licencia: Cdigo abierto o Software privativo.

    Por su uso y funcionalidad:

    - Blogs: pensados para pginas personales.

    - Foros: pensados para compartir opiniones.

    - Wikis: pensados para el desarrollo colaborativo.

    - Enseanza: plataforma para contenidos de enseanza on-line.

    - Comercio electrnico: plataforma de gestin de usuarios, catlogo, compras y pagos.

    - Publicaciones digitales.

    - Difusin de contenido multimedia.- Propsito general.

    Ventajas e inconvenientes.

    La principal ventaja del uso de gestores es la posibilidad de organizar informacin de manera

    rpida y flexible. Por otra parte, tambin evita tener que programar funciones y tareas ya

    estandarizadas y por ltimo una de las grades ventajas de los sistemas actuales es su soporte,

    por norma general son mantenidos y sujetos a actualizaciones peridicamente.

    En cuanto a los inconvenientes que estos poseen, el principal que presentan es que pese a su

    gran flexibilidad siempre ser menos flexible que la programacin de autor. Por tanto,

    cuando tienes una idea has de adaptar escogiendo el CMS que se adecue ms ella.

    2.1.1. Joomla!.

    Joomla! Es uno de los sistemas de gestin de contenidos ms populares. Entre sus

    principales virtudes est la de permitir editar el contenido de un sitio web de manera sencilla.

    Es una aplicacin de cdigo abierto programada mayoritariamente en PHP bajo una

    licencia GPL.

    Con Joomla podemos trabajar tanto en Internet como en intranets y requiere de una base de

    datos MySQL, as como, preferiblemente, de un servidor HTTP Apache.

    Entre otras muchas caractersticas, Joomla permite:

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    19/218

    - Mejorar el rendimiento web.

    - Crear versiones imprimibles de pginas, flash con noticias, blogs, foros, polls

    (encuestas), calendarios, bsqueda en el sitio web e internacionalizacin del lenguaje.

    Su nombre es una pronunciacin fontica para anglfonos de la palabra swahili jumla,

    que significa todos juntos o como un todo. Se escogi como una reflexin del

    compromiso del grupo de desarrolladores y la comunidad del proyecto.

    En la siguiente imagen podemos apreciar cmo est diseada la interfaz del panel de control

    dejoomla, que destaca de la del resto de gestores de contenido por su facilidad de uso:

    Figura 1. Panel de control de Joomla.

    Joomlamantiene dos versiones de la aplicacin: una estable y otra Beta o en desarrollo. La

    versin estable es la que se considera para usuarios y a medida que aparecen errores secorrigen, esta versin se publica sin nuevas funcionalidades. La versin Beta incluye nuevas

    funcionalidades y mejoras a los fallos reportados en versiones anteriores.

    2.1.2. PHP-Nuke.

    PHP-Nuke es un sistema de gestin de contenido basado en el lenguaje de programacin

    PHP.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    20/218

    Para su instalacin es necesario tener un servidor web con soporte para PHP (por ejemplo

    Servidor HTTP Apache) as como una base de datos MySQL. Es considerado como uno de

    los pioneros de la web2.0y alcanz gran popularidad entre los distribuidores de contenidos.

    El sistema es de distribucin libre bajo la licencia GNU GPL. Hasta la versin 7.5 se poda

    descargar gratuitamente desde la web oficial de PHP-Nuke, sin embargo, a partir de dicha

    versin se requiere de un pequeo pago para adquirirla (esto est permitido segn la licencia

    GNU GPL siempre y cuando se entregue todo el cdigo fuente al efectuar la compra).

    El sistema funciona mediante mdulos que se despliegan en una columna central, cada

    mdulo es una herramienta especializada (por ejemplo, un manejador de contenidos, foro de

    debates, manejador de descargas, enlaces, contenidos fijos, etc.).

    Adems de los mdulos, Php-nuke cuenta con la herramienta bloques, que son cajas que se

    ubican en las columnas laterales (una o dos, segn el diseo de la plantilla) y en las partes

    superior e inferior de las pginas; en dichas cajas se despliega informacin variada como:

    - Mens de navegacin.

    - Formularios de acceso.

    - Calendarios, encuestas, publicidad etc.

    -

    Existen, asimismo, bloques desarrollados por terceros, adems de que en la seccin de

    administracin, el webmaster puede crear bloques personales con contenidos multimedia.

    En la siguiente imagen podemos observar el diseo del men de administracin de PHP-

    Nuke:

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    21/218

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    22/218

    - En trminos de arquitectura, se ejecuta sin modificaciones en Unix, GNU/Linux,

    OpenSolaris, FreeBSD, Windows, Mac OS X, NetWare y otros sistemas que soportan

    PHP, incluyendo la mayora de proveedores de hosting web.

    - Los datos son almacenados en una sola base de datos SQL: la versin 1.7 (publicada en

    noviembre de 2006), permite a los administradores elegir entre alguno de los diversos

    tipos de motores de bases de datos(Oracle y Microsoft SQL Server son dos objetivos

    especficos de sistemas administradores de bases de datos).

    En la siguiente imagen podemos observar la distribucin de los elementos del panel de

    control de administrador en Moodle:

    Figura 3. Panel de control de administrador de Moodle.

    Podemos observar a la izquierda el men desplegable con las diferentes carpetas que

    podemos administrar (Mdulos, lenguaje, actividades, cursosetc.).

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    23/218

    2.1.4. Drupal.

    Breve descripcin:

    Es un sistema de gestin de contenido modular multipropsito y muy configurable que

    permite publicar artculos, imgenes, u otros archivos y servicios aadidos como foros,

    encuestas, votaciones, blogs y administracin de usuarios y permisos.

    Drupal es un sistema dinmico basado en la interaccin PHP con MySQL. En lugar de

    almacenar sus contenidos en archivos estticos en el sistema de ficheros del servidor de

    forma fija, el contenido textual de las pginas y otras configuraciones son almacenados en

    una base de datos y se editan utilizando un entorno Web.

    Es un programa de distribucin libre, programado en PHP y desarrollado y mantenido por

    una activa comunidad de usuarios. Destaca por la calidad de su cdigo y de las pginas

    generadas. Adems, se intenta mantener al mximo los estndares web a la vez que se intenta

    que sea lo ms verstil posible.

    El diseo de Drupal es especialmente idneo para construir y gestionar comunidades en

    Internet. No obstante, su flexibilidad y adaptabilidad, as como la gran cantidad de mdulos

    adicionales disponibles, hace que sea adecuado para disear todo tipo de webs.

    Como ya se ha mencionado anteriormente, una de las caractersticas que hace a los CMSs

    una herramienta muy potente de cara al diseo y mantenimiento web, es la fuerte separacin

    entre lo que es la administracin de contenido, de lo que es el diseo.

    En drupal esto no poda ser de otra manera por tanto, podemos distinguir tres niveles en su

    arquitectura:

    - Nivel de administracin:Lo componen todos los programas y archivos que permiten

    administrar, catalogar y organizar los contenidos.

    - Nivel de almacenamiento:Para poder crear un sitio web dinmico la informacin ha

    de estar almacenada en una base de datos. Esta informacin se encuentra debidamente

    organizada para su posterior recuperacin y presentacin al usuario.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    24/218

    - Nivel de presentacin:Se encarga de definir la manera en que se muestran los datos

    al usuario. Lo componen los temas y las hojas de estilos asociadas a dichos temas.

    Administracin en drupal:

    Para administrar los contenidos drupal provee de un panel de administracin. Uno de los

    inconvenientes que se suele achacar a drupal es que el panel de administracin se diferencia

    poco de lo que es la vista del sitio en s. Para solucionar esto a partir de la versin 7 se

    mejora el aspecto de este panel.

    Cuando instalamos drupal este nos obliga a crear un sper usuario. Este es un usuario

    especial el cual posee todos los permisos de administracin del sitio. El usuario sper

    administrador ser el nico que en un principio tendr acceso al panel de administracin.

    Este panel esta distribuidos en diferentes secciones tales como: administracin de

    contenidos, usuarios, administracin del sitio etc

    Drupal sigue las directrices del estndar de web 2.0 el cual, hace referencia a una web

    interactiva en la cual los usuarios pueden contribuir al desarrollo del sitio. Por tanto en la

    administracin podemos determinar roles de usuarios y permisos que estos tiene de cara a

    desarrollar nuevos contenidos. Cuando un usuario con unos determinados permisos accede al

    sitio y se autentica, tendr acceso a la administracin de los contenidos para los cuales tiene

    permisos de la manera en la que le han sido concedidos.

    En la siguiente figura podemos observar cmo est distribuido el panel de control de Drupal:

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    25/218

    Figura 4. Panel de control de Drupal.

    Themes en drupal:

    Drupal permite al usuario decidir la apariencia completa de su sitio. Para definir una

    apariencia se ha de activar lo que se conoce como un tema. Un tema es por tanto, una serie

    de archivos que sirven para dar estilo al sitio web. Estos temas pueden ser descargados orealizados por los propios usuarios.

    2.1.4.1.Drupal y PHP.

    Drupal es un CMD programado en PHP por tanto, soporta perfectamente la programacin en

    PHP. Sin embargo, a la hora de escribir cdigo, y por motivos de seguridad, se han de seguir

    una serie de premisas.

    La primera es habilitar el modulo que permite que el cdigo PHP introducido en los

    contenidos se ejecute. Este mdulo, no est habilitado por defecto en un principio y su

    nombre esPHP filter.

    A continuacin, hemos de definir los permisos de acceso a este modulo. Por seguridad, es

    importante que no cualquier usuario pueda introducir cdigo en nuestra pgina. El usuario

    autorizado a introducir fragmentos de cdigo ha de ser fiable.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    26/218

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    27/218

    archivos ms importantes es el archivo.css. Por tanto, si el tema descargado no termina de

    ser del agrado del usuario este puede modificarlo. Para modificarlo basta con modificar los

    aspectos de la hoja de estilo que desee. Es importante a la hora de modificar un tema haber

    ledo las condiciones de uso del tema y saber si puede modificarlo y bajo qu condiciones.

    Por otra parte, se pueden crear temas nuevos y aadirlos a drupal. Esto implica que se ha de

    crear por completo el archivo css asociado al tema entre otras cosas.

    2.1.4.4.Mdulos en Drupal.

    Una de las caractersticas que hace de drupal un CMS muy completo y flexible son sus

    mdulos. Los mdulos son por tanto extras que permiten aumentan las prestaciones del CMS

    adems de aadirle nuevas funcionalidades. Gracias a la colaboracin activa de la

    comunidad drupal es fcil encontrar nuevos mdulos que se adapten a nuestras nuevas

    necesidades.

    Por otra parte, drupal ofrece la posibilidad de que el usuario disee sus propios mdulos con

    unas propiedades y caractersticas propias. Esta opcin es importante si no encontramos un

    mdulo que realice las tareas que queremos aadirle a nuestro sitio.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    28/218

    2.2.Los Sistemas Operativos para mviles.

    Un sistema Operativo para mvil (o en ingls mobile O.S.) est pensado para controlar un

    dispositivo porttil (en nuestro caso concreto un SmartPhone o telfono inteligente).

    Con respecto a su funcionamiento, es muy similar al de cualquier otro sistema operativo de

    equipos de sobremesa (Windows, Mac OS etc.). Sin embargo, un sistema operativo para

    mvil tiene un diseo ms sencilloy especialmente pensado para que el usuario interacte

    con l mediante pantalla tctil, voz, teclado virtual etc.

    Otro aspecto importante es la comunicacin. Un S.O. Mvil est especficamente diseado

    para conectar los dispositivos a redes inalmbricas, redes mviles (ya sean redes GSM,

    GPRS, UMTSect.) y, por supuesto, conectar dispositivos entre s utilizando, por ejemplo,

    la tecnologa bluetooth.

    Otro de los aspectos a tener en cuenta cuando hablamos de sistemas operativos mviles es el

    hecho de que utilizan formatos especficos para archivos multimedia especialmente

    optimizados para su uso en dispositivos mviles (principalmente porque los formatos que se

    usan en equipos de sobremesa suelen consumir demasiados recursos).

    2.2.1. iOS de Apple.

    iOS es un sistema operativo desarrollado por la compaa Apple Inc. Para los dispostivos

    mviles iPod touch, iPhonee iPad. Est basado en una variante del Mach kernel de Mac

    OS X.

    La instalacin del iOS ocupa aproximadamente unos 500 MB, tamao bastante pequeo si lo

    comparamos con los sistemas operativos para equipos de sobremesa.

    La jerarqua de capas del iOS es la siguiente:

    1. Cocoa Touch.2. Medios de comunicacin.3. Servicios principales4. Ncleo del sistema operativo.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    29/218

    Capa Cocoa Touch:

    Cocoa Touch es una API (Interfaz de Programacin de la Aplicacin) para la creacin de

    programas para el iPad, iPhone y iPod Touch.

    Se basa en el set de herramientas que proporciona el API de Cocoa para crear programas

    sobre la plataforma Mac OS X.

    El SDK de iOS nos proporciona herramientas para para desarrollar aplicaciones basadas en

    la capa Cocoa Touch.

    SDK de iOS:

    El SDK (Kit de Desarrollo de Software) de iOS fue creado con el objetivo de permitir a

    terceros programar aplicaciones nativas para dicho sistema operativo.

    Uno de los puntos a tener en cuenta es el hecho de que necesitamos tener instalado el Mac

    OS X para poder utilizar dicho SDK.

    Ya que el iPhone est basado en Mac OS X, el entorno de desarrollo es asimismo el Xcode y

    el lenguaje de programacin principal es el Objective C. Adems, el iOS SDK nos

    proporciona un emulador de iPhone (llamado Aspen) que nos permite testear las aplicaciones

    antes de instalarlas en el mvil.

    2.2.2. Windows Phone 7.

    Es un sistema operativo mvil desarrollado por Microsoft, como sucesor de la plataforma

    Windows Mobile. Est pensado para el mercado de consumo casual en lugar del mercadoempresarial por lo que carece de muchas funcionalidades que proporciona la versin

    anterior.

    Microsoft ha decidido no hacer compatible Windows Phone 7con Windows Mobile por

    lo que las aplicaciones existentes no funcionan en Windows Phone 7, haciendo necesario

    desarrollar nuevas aplicaciones.

    Microsoft planea una importante actualizacin para finales de 2011 (con el nombre en claveMango) que incluir Internet Explorer Mobile 9 y algunas mejoras que segn Microsoft lo

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    30/218

    harn competitivo con sistemas operativos de mviles actuales como iOS de Apple o

    Android de Google.

    Desarrollo de Software para Windows Phone 7:

    Tenemos dos implementaciones posibles a la hora de desarrollar aplicaciones para este

    sistema operativo:

    - Microsoft Silverlight:

    Esta implementacin permite el desarrollo de aplicaciones basadas en XAML (En

    Espaol, Lenguaje Extensible de Formato para Aplicaciones).

    Incluye el entorno de trabajo Microsoft .NET Compact Framework (basado en la

    arquitectura del popular entorno .NET Framework).

    Silverlight tambin incluye una coleccin de clases llamada BCL (En Espaol,

    Librera de Clases Base) que soportan lectura y escritura de ficheros, manipulacin

    de XMLy manejo de grficos.

    - Microsoft XNA (Xbox New Architecture):

    El XNA Framework es una implementacin nativa de .NET Compact Framework que

    incluye un amplio conjunto de bibliotecas de clases, especficos para el desarrollo de

    juegos, por ejemplo para el manejo de dispositivos de entrada, tratamiento de sonidos

    y vdeos, carga de modelos y texturas, uso de ficheros de forma transparente a la

    plataforma en la que se ejecute, desarrollo de juegos online, etc

    Permite desarrollar juegos para Windows Phone OS 7.0 CTP, Xbox 360, Zune HD y

    Windows 7.

    Una de los contras ms significativos del Windows Phone 7 es la carencia de Multitarea.

    Entre el iOS, Android y Windows Phone 7, este ltimo es el nico que carece de dicha

    funcionalidad. Por otra parte, tambin hay que destacar que esta carencia hace que el sistema

    operativo sea mucho ms rpido que, por ejemplo, Android.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    31/218

    2.2.3. Android.

    Android es un sistema operativo basado en Linuxdiseado originalmente para dispositivos

    mviles, tales como los comnmente conocidos smartphones, pero que posteriormente se

    expandi su desarrollo para soportar otros dispositivos tales como tablets, reproductores

    MP3, netbooks etc.

    Este sistema operativo mvil tiene una gran comunidad de desarrolladores programando

    aplicaciones para extender la funcionalidad de los dispositivos que lo soportan. Android

    Market es la tienda de aplicaciones en lnea administrada por Google, aunque existe la

    posibilidad de obtener software externamente.

    El lenguaje de programacin en el que est basado el SDK de Android es Java, aunque

    tambin se pueden utilizar lenguajes como Javascript, C#, Boo o incluso Phyton dentro de

    otras aplicaciones como, por ejemplo, Unity 3d (ya que a la hora de compilar el propio Unity

    3d hace las conversiones pertinentes para crear un archivo con el mismo formato y extensin

    que si lo hubiramos compilado directamente como proyecto de Android en Java).

    La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en

    un framework Java de aplicaciones orientadas a objetos sobre el ncleo de las

    bibliotecas de Java en una mquina virtual Dalvikcon compilacin en tiempo de ejecucin.

    Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz grfica (surface

    manager), un framework OpenCore, una base de datos SQLite, una API grfica OpenGL ES

    2.0 3D, un motor de renderizado WebKit, un motor grfico SGL, SSL y una biblioteca

    estndar de C Bionic.

    Con respecto a la arquitectura de Android, est formada por los siguientes componentes:

    - Aplicaciones:

    Las aplicaciones que vienen de serie con el telfono incluyen un cliente de correo

    electrnico, programa para enviar y recibir SMS, calendario, alarma, programa para

    administrar contactos, galeraetc. Todos ellos estn programados en Java.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    32/218

    - Marco de trabajo de Aplicaciones:

    Los desarrolladores tienen acceso completo a los mismos APIs del entorno de trabajo

    utilizados por las aplicaciones base. La arquitectura de Android est diseada para

    simplificar la reutilizacin de componentes; es decir, que cualquier aplicacin puede

    publicar sus herramientas y cualquier otra aplicacin puede luego hacer uso de las

    mismas (siempre siguiendo las reglas de seguridad del framework).

    - Bibliotecas:

    Android incluye un conjunto de bibliotecas de C/C++ utilizadas por diversos

    componentes del sistema. Estas caractersticas son accesibles a los desarrolladores a

    travs del marco de trabajo de Aplicaciones Android enunciado anteriormente.

    Algunas aplicaciones a destacar seran:

    o System C library (implementacin biblioteca C estndar).

    o Bibliotecas de medios.

    o Bibliotecas de grficos, 3D y SQLite.

    - Runtime de Android:

    Android incluye un set de bibliotecas base que proporcionan la mayor parte de las

    funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicacin

    Android ejecuta su propio proceso, con su propia instancia de la mquina virtual

    Dalvik (esto lo diferencia claramente del sistema operativo Windows Phone 7 que,

    como habamos comentado, no es multitarea).

    La mquina virtual Dalvik ha sido diseada de forma que un dispositivo pueda

    ejecutar mltiples mquinas virtuales al mismo tiempo y de forma eficiente (Esta es

    una de las principales diferencias entre la mquina virtual Dalvik y una mquina

    virtual Java).

    Dalvik ejecuta archivos en el formato Dalvik Executable (.dex), el cual est

    optimizado para un consumo de memoria mnimo. La Mquina Virtual est basada en

    registros y ejecuta clases compiladas por el compilador de Java que han sidotransformadas al formato .dex por la herramienta incluida dx.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    33/218

    - Ncleo Linux:

    Android depende de Linux para los servicios base del sistema como seguridad, gestin

    de memoria, gestin de procesos, pila de red y modelo de controladores. El ncleo

    tambin acta como una capa de abstraccin entre el hardware y el resto de la pila de

    software.

    En el siguiente Diagrama de bloques se puede apreciar la estructura que conforma la

    arquitectura de Android explicada anteriormente:

    Figura 5. Diagrama de arquitectura Android.

    2.2.3.1.Android y Java.A la hora de disear aplicaciones el SO Android utiliza como lenguaje de programacin el

    lenguaje Java. Es por esta razn, que cuando instalamos el SDK de Android este nos exige

    como prerrequisito disponer de java JDK para compilar las aplicaciones.

    El java es un lenguaje orientado a objetos. Dicho lenguaje ofrece como principal ventaja su

    portabilidad. Utilizando Java podemos crear aplicaciones para distintos dispositivos con una

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    34/218

    nica condicin, el dispositivo ha de tener instalada la mquina virtual de Java. La maquina

    virtual tiene como objetivo interpretar el cdigo java y ejecutarlo.

    Android es un sistema operativo que nace de la asociacin de una serie de compaas y

    entidades, por tanto, es un sistema operativo que funciona en diferentes dispositivos. Las

    caractersticas de portabilidad de Java hacen que Android pueda funcionar marcas de

    mviles diferentes as como en tablets y cualquier otro hardware que cumpla con una serie

    de requisitos mnimos.

    Adems de java Android utiliza como lenguaje de comunicacin entre aplicaciones el XML.

    Una de las caractersticas que hacen muy cmoda la programacin en Android es la

    inyeccin de cdigo mediante XML. Esta tcnica consiste en que mediante tags y etiquetas

    XML correctamente estructurada con las cuales, podemos generar el cdigo asociado a

    botones, formularios, listas

    Inyectando XML Android tambin nos permite determinar la posicin relativa en la pantalla

    de los elementos as como su visualizacin. El cdigo java asociado a dichos objetos se

    generar automticamente a partir de las definiciones de los XML.

    En definitiva, si se desea programar para el sistema operativo Android es imprescindible

    manejar el lenguaje de programacin Java, conocer la estructura de clases de Android y

    utilizar correctamente los archivos XML asociados a las aplicaciones. No hemos de olvidar,

    que utilicemos la tcnica que utilicemos para crear nuestro cdigo. Al final, el resultado ser

    cdigo Java. As que, tener un conocimiento amplio de java y de programacin orientada a

    objetos har ms fcil la programacin para dispositivos Android.

    2.2.3.2.Servicios Web en Android.

    Cabe recordar que Android es un producto de la Open Handset Alliance. Uno de los

    nombres que resuenan dentro de esta alianza es Google. Es difcil pensar en Google, sin

    pensar en posibilidades web inmediatas.

    En consecuencia, Android como sistema operativo ofrece ya un gran abanico de

    posibilidades web. Entre ellas disponemos de clases y objetos creados especficamente para

    interactuar con las tecnologas de Google. Desde el sistema operativo puedes usar recurso de

    Google Maps, Contacts, Calendar, Docs etc. Adems, los protocolos de conexin mediante

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    35/218

    paso de parmetros a travs de url estn perfectamente integrados. Tambien, es posible

    consumir servicios de terceros como facebook, twitter etc.

    Sin embargo, Soap como servicio web no est integrado a SDK de Android. Por tanto, a la

    hora de usar este tipo de servicios es necesario aadir libreras externas. Google te

    proporciona como soporte para el protocolo Soap la librera ksoap2. Esta librera posee todas

    las clases necesarias para consumir o crear servicios SOAP en Android y est disponible

    desde la pgina: (Ver referencia 15). Hay que recordar que Android utilizar como protocolo

    de comunicacin XML. Esto no es casual, ya que el protocolo de comunicacin estndar

    para trabajar con servicios webs es el envi de archivos XML.

    En conclusin, Android es un sistema operativo moderno y actual. La tendencia tecnolgica

    actual insiste en la necesidad de estar siempre comunicado. A la hora de hablar de una

    comunicacin moderna se hace imprescindible de hablar de internet y sus posibilidades.

    Como consecuencia, es indispensable la interaccin de los dispositivos con la web y recursos

    de internet.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    36/218

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    37/218

    - Su rendimiento es bajo comparado con otros sistemas de computacin distribuida. Su

    lentitud es en gran medida debido al uso de formato texto.

    - Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en firewall cuyas

    reglas tratan de bloquear o auditar la comunicacin entre programas a ambos lados de la

    barrera.

    Estndares empleados en los servicios web:

    - Web Services Protocol Stack:As se denomina al conjunto de servicios y protocolos de

    los servicios Web.

    - XML (Extensible Markup Language):Es el formato estndar para los datos que se vayan

    a intercambiar.

    - SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure Call):

    Protocolos sobre los que se establece el intercambio.

    - Otros protocolos:los datos en XML tambin pueden enviarse de una aplicacin a otra

    mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File

    Transfer Protocol), o SMTP (Simple Mail Transfer Protocol).

    - WSDL (Web Services Description Language):Es el lenguaje de la interfaz pblica para

    los servicios Web. Es una descripcin basada en XML de los requisitos funcionales

    necesarios para establecer una comunicacin con los servicios Web.

    - UDDI (Universal Description, Discovery and Integration): Protocolo para publicar la

    informacin de los servicios Web. Permite comprobar qu servicios web estn

    disponibles.

    - WS-Security (Web Service Security):Protocolo de seguridad aceptado como estndar por

    OASIS (Organization for the Advancement of Structured Information Standards).

    Garantiza la autenticacin de los actores y la confidencialidad de los mensajes enviados.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    38/218

    Por qu usar servicios web?

    La principal razn para usar un servicio web es que dichos servicios trabajan sobre HTTP y

    TCP. Estos protocolos utilizan el puerto 80 (que esta siembre abierto para recibir

    comunicaciones. Esto permite estos servicios web no sean bloqueados por firewalls y

    navegadores. A pesar de que los servicios webs se pueden usar sobre cualquier protocolo,

    comnmente se usa TCP por las ventajas ya mencionadas.

    Otra razn de peso para usarlos es la gran independencia entre la aplicacin que usa un

    servicio web y el servicio en s mismo. Por tanto, si uno cambia a lo largo del tiempo el otro

    no se ve afectado.

    Hemos de recordar la tendencia actual a conseguir grandes sistemas distribuidos repartidos a

    lo largo del planeta. La flexibilidad de los servicios web hace posible trabajar con diferentes

    partes o elementos del sistema global independientemente de cualquier otro. Para usar esta

    flexibilidad de manera adecuada es necesario que los elementos estn perfectamente

    diseados para favorecer dicha independencia.

    Plataformas:

    Para terminar, cabe mencionar que existen numerosas plataformas que proveen de servicios

    web entre las que se encuentran las siguientes:

    - PHP.

    - Oracle Fusion Middleware.

    - Java Web Services Developmen Pack.

    2.3.1.

    XML.

    El Xtensible Markup Language (XML), es un metalenguaje extensible de etiquetas creado

    por World Wide Web Consortium. El XML permite definir la gramtica de lenguaje

    especficos, por tanto, no es en s mismo un lenguaje sino una manera de definir lenguajes

    especficos. Est basado en SGML (Standard Generalized Markup Language).

    El XML tiene su origen en los aos setenta, cuando la empresa IBM tiene la necesidad de

    guardar grandes necesidades de informacin. Para solucionar este problema IBM crea un

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    39/218

    lenguaje llamado GML (Generalized Markup Language). El lenguaje de IBM agrado a los

    miembros de la ISO as que, trabajaron en un lenguaje similar en 1986.

    Cuando en 1989 se crea la web y con ella el lenguaje HTML, el cual est basado en SGML.

    HTML es un lenguaje sencillo el cual supone poca carga y gran eficiencia para los

    navegadores. Pero, HTML tiene sus limitaciones. Las pginas web a menudo no cumplen la

    sintaxis y se hacen incompatibles con diferentes navegadores. Por otra parte, el HTML es un

    lenguaje fijo y no se pueden combinar elementos de diferentes vocabularios.

    El XML surge con el objetivo de crear un lenguaje estndar que permita:

    - Que los lenguajes sean extensibles, es decir se puedan elementos de diferentes lenguajes.

    - Se han de poder crear analizadores simples, los cuales no han de tener ninguna lgica

    especial para cada lenguaje.

    - No debe aceptar documentos con errores de sintaxis.

    Cabe destacar, que el XML no es solo un lenguaje de uso en la web e internet. XML es un

    lenguaje estndar el cual permite comunicar entre aplicaciones diferentes en diferentes

    mbitos o incluso en el mismo.

    Ventajas de XML.

    - Es extensible, se puede extender XML con la adicin de nuevas etiquetas, de modo que

    se pueda continuar utilizando sin complicacin alguna.

    - El analizador es un componente estndar, no es necesario crear un analizador especfico

    para cada versin de lenguaje XML.

    - Es de fcil comprensin para el lector humano. Mejora la compatibilidad entre

    aplicaciones. Podemos comunicar aplicaciones de distintas plataformas, sin que importe

    el origen de los datos.

    - Transformamos datos en informacin, pues se le aade un significado concreto y los

    asociamos a un contexto, con lo cual tenemos flexibilidad para estructurar documentos.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    40/218

    Partes que componen un documento XML.

    - Prologo:no es obligatorio, pero los documentos XML pueden empezar con una lnea

    que describen la versin utilizada.

    - Cuerpo:es obligatorio, y ha de tener un solo elemento raz para que este bien formado.

    - Elementos:los elementos XML pueden tener contenido o estar vacios.

    - Atributos: un elemento puede tener o no atributos. Los atributos son la forma que

    tenemos de agregar caractersticas a un elemento.

    - Entidades predefinidas:sirven para representar caracteres especiales.

    - Secciones CDATA:permiten especificar datos utilizando cualquier carcter sin que se

    interprete como marcado XML.

    - Comentarios: comentarios a modo informativo que han de ser ignorados por el

    procesador.

    2.3.2. El protocolo SOAP.

    Simple Object Access Protocolo es un protocolo estndar que define como dos objetos de

    diferentes procesos pueden comunicarse por medio del intercambio de datos XML. Es un

    protocolo derivado del XML-RPC creado por David Winer en 1998. El protocolo de

    comunicacin Soap fue creado por IBM y Microsoft entre otros bajo la proteccin del W3C.

    Soap es uno de los protocolos ms utilizados en los servicios web. La razn de que sea tanutilizado se basa en las siguientes ventajas:

    - Los servicios Soap son fciles de consumir.

    - Es un lenguaje muy rgido, fuertemente tipado y de estructura robusta.

    - Soap adems posee herramientas de desarrollo.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    41/218

    2.3.3. WSDL.

    WSDL son las siglas de Web Services Description Language, es un formato XML que se

    utiliza para describir los servicios web.

    El WSDL es un documento pblico en cual podemos consultar para saber cmo debemos

    consumir un servicio web. Una de las grandes ventajas ya mencionadas de los servicios web

    es la posibilidad de consumirlos independientemente de la plataforma o lenguaje de

    programacin utilizado. Para que esto sea posible se ha de conocer cules son los parmetros

    que el servicio recibe y como han de ser enviados. El WSDL nos proporciona toda esta

    informacin, de manera que si una tercera persona quiere utilizar cualquier funcionalidad

    que proporcione nuestro servicio web podr crear su interfaz de trabajo a partir del WSDL.

    2.3.4. Otros protocolos y estndares usados en Web Services.

    El protocolo REST es otra filosofa a la hora de describir servicios web. Este protocolo

    utiliza y soporta XML y HTML. En REST cada URL representa a un objeto sobre el cual

    podemos realizar las operaciones de HTTP como son POST, GET, PUT o DELETE.

    REST es un protocolo ligero, el cual ofrece resultados legibles y adems es muy fcil de

    implementar.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    42/218

    2.4.Programacin de videojuegos para mvil.

    En los ltimos aos, el uso de telfonos mviles se ha incrementado enormemente. Este

    incremento junto con la evolucin tecnolgica de los mismos, ha fomentado la aparicin

    nuevos mercados en torno a estos dispositivos.

    El telfono que comnmente se utilizaba para realizar llamadas se ha convertido en todo un

    accesorio de entretenimiento y ocio. Uno de los mercados que ms ha evolucionado

    actualmente es el desarrollo de videojuegos para este tipo de plataformas.

    Los videojuegos para mviles empiezan a popularizarse gracias al aporte de SUN. La marca

    de software da un paso adelante dentro de la tecnologa Java, presentndonos J2ME (Java 2

    Micro Edition).

    El J2ME es un subconjunto dentro de la plataforma java, el cual, provee de APIS de

    desarrollo de software. Estas APIS tienen recursos restringidos y por tanto, son ideales para

    crear aplicaciones para dispositivos como mviles o PDAs. Como ya se ha mencionado

    anteriormente Java es un lenguaje multiplataforma, esta propiedad lo hace idneo para

    funcionar en dispositivos de hardware distinto.

    En la actualidad, gracias al aporte de Apple, Open Handset Alliance y Microsoft entre otros,

    los dispositivos mviles disponen de autnticos sistemas operativos. Los sistemas operativos

    para mviles, pueden ser versiones reducidas de sistemas operativos de PC o sistemas

    completamente nuevos. El uso de SO en los telfonos les ha aportado nuevas

    funcionalidades.

    Para incentivar el desarrollo de aplicaciones, se ofrecen mercados online y porcentajes de

    beneficios para los desarrolladores. Gracias a estos incentivos la programacin de aplicativosde terceras personas ha crecido considerablemente.

    Con el crecimiento del nmero de desarrolladores, tambin, aparecen herramientas de

    desarrollo que facilitan la programacin. En funcin de la herramienta de desarrollo utilizada

    y la facilidad que esta proporcione al programador, podramos dividir la programacin de

    videojuegos en niveles.

  • 8/14/2019 Videojuegos3DAndroid Unity3D New Curso

    43/218

    2.4.1. Niveles de abstraccin.

    A la hora de programar juegos para mviles, los niveles de abstraccin, hacen referencia al

    control que el programador tiene sobre el rendimiento de la mquina. Cuanto ms alto sea

    nivel en el que se trabaja, mayor cantidad de herramientas posee el programador para tratar

    los grficos. Hemos de tener en cuenta, que si trabajamos a un nivel alto menor es el

    rendimiento que sacaremos a nuestro programa. Por otra parte, se pueden conseguir

    resultados ms vistosos y es