Ayer anunciaban que WrldMap lanzaba un SDK para poder ser utilizado con Unity, obviamente el alboroto fue grande porque presenta una serie de características muy interesantes para cualquier desarrollador de videojuegos que haya probado la versión móvil de Pokemon o el Ingress. La geolocalización es una baza muy potente a explotar en el mundo del videojuego, nos da la capacidad de mezclar el mundo real con nuestra aplicación, si se combina con realidad aumentada se hace todavía más goloso el pastel. Con WRLD se nos permite construir mapas 3D interactivos, sin necesidad de código, incluso mapas indoor renderizados a partir de mapas 2D, ideales para seguir eventos en tiempo real por ejemplo. Esto haciendo público el edificio que se renderice, si queremos que sea privado hay que pagar 1400$ anuales (para un edificio) o 2300$ cuando son más de uno.
Si no vamos a hacer mapas personalizados indoor hay que tener en cuenta también que el servicio es gratuito hasta los 1000 usuarios, en cuanto se superan los 1000 pero no se llega a los 10000 se pagan 50$ mensuales, más de 50000 son 500$ mensuales y si los superamos nos ruegan que nos pongamos en contacto con ellos para determinar cuánto se pagará.
En primer lugar, ¿ de donde saca los mapas ?
Según su web los mapeados los cogen de fuentes libres como OpenStreetMap, USGS, Natural Resources Canada, NASA, Natural Earth GeoNames and Ordnance Survey Open Data… al leer esto lo primero que me vino a la cabeza es que son fuentes que tienen solo zonas determinadas del mundo mapeadas y que veríamos a ver qué pasaría con España… a veces sería mejor que no pensase tanto, ahora me explicaré mejor.
Con estas premisas me he puesto a probar que nos están ofreciendo. Siguiendo los pasos que indican en la web lo primero que he hice fue descargar el asset para Unity, está gratuito en el asset store. Una vez instalado veremos en el proyecto que hay una carpeta llamada Demo, que son en las que me centré para ver el potencial del asset.
Primeros pasos con WRLD
A la vez tenía una ventana abierta del navegador con la web de WrldMap (WrldMap.com) donde procedía registrarme como usuario, cosa que es obligatoria si se pretende utilizar WrldMap. Una vez registrado se abre una sección para desarrolladores. Podemos ver nuestro Developer Token, una cadena alfanumérica que nos identifica, y podemos empezar a crear nuestras API Keys para los proyectos que hagamos, tenemos acceso a la API y ejemplos también para las distintas plataformas con las que trabaja.
La API Key la podemos crear desde ahí o bien llamando a esta página desde el proyecto de Unity, el resultado es el mismo.
Cuando tenemos instalado el asset puede saltarnos un aviso como el de la imágen de abajo, incrementamos la distancia para que las sombras sean visibles y seguimos.
Si abrimos en la carpeta Demo del proyecto veremos tres escenas y una carpeta llamada Collisions. Empecé por la primera escena, llamada BasicStarter, cuando se abre debemos irnos en la jerarquía al elemento WrldMap, veremos en el inspector una casilla llamada API Key, desde aquí podemos conseguir dicha API key (como he mencionado antes),o bien desde la copiamos desde la web si la hemos creado antes.
En cualquier caso crearemos la API Key poniéndole un título en su casilla, entonces nos aparecerá justo debajo una cadena alfanumérica, la copiamos y pegamos en el inspector de Unity, automáticamente se abrirán una serie de opciones en el inspector.
Listo, si le damos al play podremos ver el mapeado por streaming que nos devuelve WrldMap.
Experimentando un poco
Ahora podemos jugar con la latitud y la longitud, para situarnos donde deseemos, en nuestro caso probaremos a situarnos en la zona de la Alhambra de Granada, y nos llevamos la primera en la frente, porque esos mapas no están. Probamos con Madrid…casi pero no, tampoco está. Por probar otra ubicación escogemos la 5ª Avenida en Manhattan, que suponemos que estará y premio, con esas coordenadas no hay problema, automáticamente nos saca junto a Central Park, como habíamos marcado.
Podemos ver coloreados los principales museos de la zona, el Metropolitano y el museo Americano de Historia Natural. Podemos desplazarnos por el mapa que se va generando automáticamente.
Volvemos a probar con España, esta vez Barcelona (41.38111,172528) y ahora si tenemos éxito.
Vamos a por otro
El segundo ejemplo es el llamado “CameraTransitionExample”, este es más vistoso, con edificios coloreados y una cámara aérea que nos hace un pequeño recorrido en bucle sobre un mapa de San Francisco. Aquí no interactuamos con el mapa, el ejemplo solo nos permite ver la animación.
En este ejemplo las coordenadas van en el script, por lo que da igual las que se pongan en el inspector. Si ojeamos el script que anima la cámara vemos que es bastante sencillo moverla, se resume a un par de líneas:
var transamericaPyramidSanFrancisco = LatLong.FromDegrees(37.7951572, -122.4028915);
api.CameraApi.AnimateTo(transamericaPyramidSanFrancisco,distanceFromInterest:1500,headingDegrees:90,pitchDegrees:45);
El tercer ejemplo que nos ponen bajo el título “SeparateStreamingAndRenderingExample” muestra una instantánea del mapa visto contra el horizonte.
Trabajando con colisiones
Por último dentro de la carpeta Collisions encontramos quizás el ejemplo más interesante, donde además del mapa visto desde la cámara aérea podemos disparar bolas contra los edificios, la API de WrldMap permite detectar colisiones tanto en edificios, como en carreteras o el terreno, de forma independiente. Si lo probáis seguro que tiráis unas cuantas bolas.
Por otro lado dentro de nuestro perfil web podemos crear mapas personalizados, aunque claro, sobre mapeado que tengan, si buscáis Granada o Madrid hará sugerencias (usan yelp) pero el mapa no saldrá, aunque ponga los marcadores se verá de fondo el mar.
En resumen
Llegados a este punto debo comentar que el interés por usar este sistema se me cortó un poco, por la limitación de los mapeados principalmente. Otra cosa que noto es que el streaming de los mapas, aun utilizando una conexión rápida a internet y trabajando sobre un ordenador de sobremesa, no es muy fluida, teniendo que esperar para que se carguen las partes del mapa que se ven en pantalla a poco que se mueva. No he probado en ningún dispositivo móvil, pero sospecho que consumirá bastantes datos y no sé hasta qué punto estará optimizado a la hora del manejo, aunque aseguran que lo está. El tema del pago mensual al pasar los 1000 usuarios activos ni lo mencionaré.