sábado, 9 de noviembre de 2013

30 días de EVE gratis para mi

No es secreto que estoy jugando Eve Online, de hecho creo que es bastante evidente. Steam informa que en estos últimos meses he jugado cerca de 1251 horas, lo que significa que realmente me gusta este juego.

Hoy estaba revisando la página web y miré dentro del apartado del Buddy Program, un programa por el cual una persona puede invitar a otra (directamente o mediante un enlace) y si la segunda persona prueba el juego y además luego se subscribe, la primer persona, o sea la que invitó a la otra, recibe una recompensa.

Recibí una gran sorpresa al ver que alguien se había anotado mediante un enlace en este blog y además luego había comenzado a pagar por el juego. Entonces me vi en la situación de elegir una recompensa, que puede tomar más de una forma, puede ser una colección de todos los Catalyst en el juego, 30 días de juego o un PLEX.

Primera opción. Todos los Catalyst significa todas las versiones existente (6) de un destructor (el segundo escalón desde abajo) que originalmente es de procedencia Galente (una de las 4 grandes naciones).Cuando digo todos, quiere decir que es un catalyst común y los 5 catalyst que fueron adaptados por diversas corporaciones.

La segunda opción es la más sencilla de explicar: un mes gratis en Eve Online. Este mes se suma al tiempo que ya teníamos en la cuenta, prolongando así el tiempo la fecha en la que deberemos pagar para seguir jugando.

La tercer opción es quizás la más compleja de explicar. Un PLEX es, un un principio, una licencia para pilotos de 30 días de duración. Esto significa que cumple con la misma función que la segunda opción. Sin embargo el PLEX es también un objeto dentro del juego, que puede comprarse y venderse, usarse (y al usarlo se consume) e incluso puede ser perdido si destruyen la nave en la que lo llevamos.

Pero además un PLEX puede usarse para muchas cosas más, como por ejemplo habilitar por 30 días la lista de entrenamiento para un personaje secundario en la misma cuenta, e incluso para uno terciario. Sirve también para pagar por servicios como cambio de nombre, o movimiento de personaje entre distintas cunetas.

De las tres opciones, la segunda es la más estable. 30 días de juego son 30 días de juego y ya. Las otras dos requieren evaluar si es rentable vender los objetos por ISK (la moneda interna del juego) o si los queremos para nosotros.

Evaluando mi situación actual, en estos momentos en que mi corporación está en guerra con otra corporación, para mi lo más rentable es conseguir algo que nadie me pueda quitar o destruir. Es por eso que luego de pensarlo un poco, me decidí por una extensión de 30 días gratuita.

De esa forma conseguí que mi cuenta que estaba habilitada hasta dentro de 19 días pase a estar habilitada hasta dentro de 49 días. Si a alguien le interesa este juego, puede usar este enlace para conseguir 15 días de tiempo gratis, y si luego se suscriben volveré a tener una opción de recompensa. Por supuesto, si tienen una cuenta paga, nadie les impide hacer lo mismo.

domingo, 13 de octubre de 2013

Ejemplo de diccionario en python con las regiones del Eve Online

No puedo ocultar lo mucho que me gusta Eve Online, y creo que no es secreto que me fascina  programar. Uniendo ambas cosas, ultimamente estoy desarrollando en python pequeñas herramientas de asistencia al juego. Pequeñas herramientas que solo tienen sentido para la forma en que yo juego el juego, entonces no puedo pretender que otro las programe.

En medio de estas pequeñas cosas, a medida que comienzo a unificar algunas y testeo otras para ver si sirven, tuve que interpretar una serie de códigos de región a partir de datos provistos por Eve Online, ya que dentro de las herramientas disponibles para desarrolladores encontraremos volcados de la base de datos que contienen dentro información muy variada.

Así que recurriendo al Python creé una estructura de datos de tipo diccionario, que está formado por una serie de pares de datos, siendo el primero de ellos la clave y el segundo el dato asociado a esa clave. El funcionamiento es muy sencillo, referenciamos al diccionario y una clave y nos devuelve el dato asociado.

Como dato interesante, los diccionarios están ordenados por su clave, y poseen algoritmos de búsqueda por clave muy eficientes. Si bien eso no es necesario para mi desarrollo, lo he usado otras veces con gran volumen de datos y es realmente impresionante la velocidad con la que localizan claves.

La declaración de un diccionario se ve así:

region = {'10000001': 'Derelik',
'10000002': 'The Forge',
'10000003': 'Vale of the Silent',
'10000004': 'UUA-F4',
'10000005': 'Detorid',
'10000006': 'Wicked Creek',
'10000007': 'Cache',
'10000008': 'Scalding Pass',
'10000009': 'Insmother',
'10000010': 'Tribute',
'10000011': 'Great Wildlands',
'10000012': 'Curse',
'10000013': 'Malpais',
'10000014': 'Catch',
'10000015': 'Venal',
'10000016': 'Lonetrek',
'10000017': 'J7HZ-F',
'10000018': 'The Spire',
'10000019': 'A821-A',
'10000020': 'Tash-Murkon',
'10000021': 'Outer Passage',
'10000022': 'Stain',
'10000023': 'Pure Blind',
'10000025': 'Immensea',
'10000027': 'Etherium Reach',
'10000028': 'Molden Heath',
'10000029': 'Geminate',
'10000030': 'Heimatar',
'10000031': 'Impass',
'10000032': 'Sinq Laison',
'10000033': 'The Citadel',
'10000034': 'The Kalevala Expanse',
'10000035': 'Deklein',
'10000036': 'Devoid',
'10000037': 'Everyshore',
'10000038': 'The Bleak Lands',
'10000039': 'Esoteria',
'10000040': 'Oasa',
'10000041': 'Syndicate',
'10000042': 'Metropolis',
'10000043': 'Domain',
'10000044': 'Solitude',
'10000045': 'Tenal',
'10000046': 'Fade',
'10000047': 'Providence',
'10000048': 'Placid',
'10000049': 'Khanid',
'10000050': 'Querious',
'10000051': 'Cloud Ring',
'10000052': 'Kador',
'10000053': 'Cobalt Edge',
'10000054': 'Aridia',
'10000055': 'Branch',
'10000056': 'Feythabolis',
'10000057': 'Outer Ring',
'10000058': 'Fountain',
'10000059': 'Paragon Soul',
'10000060': 'Delve',
'10000061': 'Tenerifis',
'10000062': 'Omist',
'10000063': 'Period Basis',
'10000064': 'Essence',
'10000065': 'Kor-Azor',
'10000066': 'Perrigen Falls',
'10000067': 'Genesis',
'10000068': 'Verge Vendor',
'10000069': 'Black Rise'}

Como verán tenemos un código de región proveniente del juego y el nombre de esa región, proveniente del mismo sitio.

Para usarlo simplemente invocamos el nombre del diccionario[la clave], como en el ejemplo siguiente, basado en Python 3.3

print(region['10000051'])

Al usar esta instrucción, en conjunto con el diccionario declarado, Python muestra 'Cloud Ring'. Tan sencillo como eso, tan potente como eso.



sábado, 14 de septiembre de 2013

Eve Online: Ayudas externas

Una de las particularidades del Eve Online es el grado de respeto que tiene CCP, la compañía, con sus usuarios. A la vez, el juego pose estructura y reglas, pero además de eso es un gran sandbox (arenenro) donde cada cual inveta su juego. Esto se traduce en una base de usuarios tremendamente fiel que además de generar eventos dentro del juego, construye cosas alrededor del juego, afuera del juego.

Para poder construir cosas fuera del juego se necesitan datos del juego, y es allí donde CCP demostró lo que puede generar una muestra de confianza. Lo que hizo la compañía fue liberar una API con acceso a los datos del personaje dentro de la base de datos del juego.

Tal como he explicado en otras ocasiones, una API es una interfase para programación (Aplication Programming inteface), o sea que es un set de funciones, objetos o llamadas a páginas web (mediante webservices) que permiten realizar consultas y devolver respuestas.

Lo interesante es que además de exponer esta API, la están mejorando constantemente. En la actualidad permite generar credenciales de acceso que exponen distintos datos, configurable mediante una página web, que permite el acceso a los datos de nuestro personaje. O sea que podemos siempre decidir cuanto exponer y ante quien. incluso por cuanto tiempo.

No contentos con eso, están ahora probando un segundo tipo de API que permitirá acceso a datos más estadísticos, como por ejemplo cantidad de naves de jugadores destruidas en una determinada zona en las últimas 24 horas, o a eventos, como el torneo de alianzas, donde se podía ver la el equipamiento de las naves usadas.

Ahora bien, ¿que sucede cuando una comunidad que sabe que seguirá jugando por mucho tiempo se encuentra con este tipo de accesos? Se comienzan a desarrollar herramientas externas, que toman datos de las APIs y generan información útil.

Comencemos por lo básico: una de las ayudas necesarias para este tipo de juegos tan complicados es la capacidad de probar conceptos antes de arriesgar las naves. Es allí donde entran programas dedicados a equipar naves fuera del juego y ver como varían los parámetros. Los dos programas más famosos que realizan esto son Eve Fitting Tool (EFI) y Python Fitting Assistant (PyFA) . EFI es el más tradicional de los dos, pero PyFA está consiguiendo cada vez más adeptos, y tiene la ventaja de ser multiplataforma.

Por supuesto, lo interesante de esos dos programas es que nos permiten ver que cosas podemos equipar en nuestras naves y que tan eficaces son con nuestras habilidades, o con las habilidades a grado 5 (V). Esto nos puede ayudar a planificar nuestro entrenamiento, pero si realmente queremos ponernos serios con el entrenamiento, tienen que usar Evemon, el planificador de habilidades que permite planificar meses de habilidades y ponernos nivel por nivel que debemos entrenar para un objetivo determinado.

Vayamos ahora a una de mis favoritas. A mi me encanta trabajar con el mercado y construir items, así que busqué una herramienta que uso a modo de sugerencia y evaluación de ideas, pero no a modo de director de juego. La moneda interna del juego es el Isk, es por eso que este gran programa se llama Isk Per Hour (Isk por hora). Este programa permite, entre varias otras cosas, descargar precios de varias regiones del juego, y evalúa cuanto cuesta construir un ítem basándose en esos precios.

Pero para explicar como Isk Per Hour funciona debo ingresar en otra área. Hasta ahora han visto varias herramientas individuales, pero hay también herramientas comunales. Existe un sitio web llamado Eve-Central, y es un sitio actualizado muy frecuentemente con precios de varias zonas de juego.

Como prueba de la amplitud, vean la búsqueda de datos por el precio del Tritanium, el mineral más básico del juego. Como verán, hay montones de usuarios ofreciendo vender y comprar este mineral, pero cada cual lo hace en una estación espacial en particular, dentro de un sistema estelar, que está dentro de una constelación, que está a su vez dentro de una región.

Ahora bien, mencioné dos cosas: que necesitaba explicar este sitio para mostrar como trabajaba Isk Per Hour, y que este era una herramienta comunal. La primera de las dos cosas es sencilla de explicar, Isk Per Hour se comunica con la página Eve-Central para averiguar los precios en las distintas regiones que le hayamos pedido. En cuanto a la segunda explicación , Eve-Central es un sitio comunal debido a que montones y montones de usuarios han contribuido un acceso API limitado a la página, y cada vez que realizan una consulta al mercado, los dato recibidos son enviado a la página. Esto significa que miles de usuarios contribuyen datos a un sitio que miles de usuarios usan directa o indirectamente.

Este ha sido un recorrido por algunas de las herramientas externas más populares del juego. No puedo dejar de comentar que debido a que la API es una herramienta de programación, ustedes mismos pueden programar un programa que realize algún tipo de operación que ustedes precisen. Por ejemplo, yo estoy comenzando a pensar en desarrollar una herramienta que me envíe un email cada vez que realizo una compra o venta dentro del juego, que tal vez evolucione en un histórico de precios con el tiempo.




miércoles, 11 de septiembre de 2013

Los mecanismos predictores

Vengo a confesar algo: no me gusta la mayoría de los mecanismos predictores. Para aclarar, un mecanismos predictor es aquel que mediante algún algoritmo intenta predecir lo que vamos a precisar a continuación.

Realmente me parecen muy feos en los smartphones, donde son una ayuda porque el sistema de entrada de datos de esos teléfono es realmente feo. Sea esto debido a que el teclado es muy chiquito y requiere demasiada exactitud, o a que al no tener feedback nos haga escribir más lento para asegurarnos que la tecla fue detectada.

Por un lado, no me gustan por lo general los teléfonos celulares, y el que el programa predictor sea una muleta no ayuda. Pero lo que menos me gusta es que para ganar velocidad de escritura haya que limitar el vocabulario a las palabras que el predictor cree que vamos a escribir. Creo que esto es crítico, porque tampoco me gusta cuando el procesador de palabras instalado en la computadora me sugiere cosas.

Por otro lado veo los algoritmos predictores de sitios como Youtube y realmente me asombra lo inútiles que son para mi. Si yo tengo suscripciones, quiero saber que videos tengo por ver, no que me sugiera sin ningún tipo de aclaración 15 videos, de los cuales seguramente ya vi más de la mitad.

El de Amazon también me parece inútil. Acabo de comprar un libro, evidentemente todavía no lo leí, entonces porque me sugiere que otros me van a interesar. Yo acabo de comprar un libro, obvio que en ese momento me interesa el que compré.

Tanto me disgustan esos predictores que cuando puedo, los manipulo para que pierdan sentido completamente. Por ejemplo, si compro más de 6000 libros gratuitos en Amazon, muy variados, que ni siquiera voy a leer, me va a recomendar las cosas más incongruentes, y eso me hace feliz, porque le da un sin sentido a algo que para mi no tiene sentido.

El único predictor que me agrada levemente es el de los editores de programación con autocompletado. Unas pocas veces ayudan a ir más rápido, pero todo depende de que necesitemos las opciones más comunes. Cuando no es así nos hacen perder tiempo, ya que debemos leer lo que recomienda a cada letra que ingresamos.

Será que yo amo tanto a las palabras que quiero escribirlas cuando quiero y como quiero. Será que no me gusta que me tapen con opciones, porque no me agrada tener que decidir. Será que el exceso de opciones a veces tapa la información que buscamos. Será que cada sistema de autocompletado usa una tecla diferente para aceptar.  O será todo esto y más a la vez. Porque la verdad es que no me gustan los mecanismos predictores.