Jugando con la ‘no API’ de raptr.com

El portal raptr se está convirtiendo en  una de las comunidades ‘de facto’ sobre el tema de la "reputación" y "logros" de los videojuegos.

Es habitual estar en Twitter y ver constantes tweets que te muestran una "card" con algún logro o evento conseguido en el juego "X".

Intentando automatizar de alguna forma esos logros para meterlos en el catalogador de juegos, me he encontrado que no disponen de una API como puede ser la de Steam y de la que ya hablamos en el anterior post

Sin embargo, alguien dijo: "Si se puede leer, se puede copiar" (anónimo). Por lo tanto, en la propia Web de raptr.com están los datos que necesitaba.

Y para muestra, este vídeo: 

Es interesante ver que ahora también podría incluir "el tiempo jugado" a un determinado juego. Todo ello de forma automágica.  

Por cierto, no estoy recibiedo mucho feedback  sobre el catalogador 🙁

¿No interesa el proyecto?…Lástima.

Bueno, yo sigo abierto a cualquier sugerencia por parte de la comunidad.

Si tenéis alguna, dejad un comentario o enviar un MD a @MeriDeluxe

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature   

Jugando con la API de Steam

Hoy probando cosillas para Gamerz he encontrado una ‘feature’ que podría ser interesante.

Lo primero que hay que hacer es obtener una API Key. La podéis conseguir desde este enlace

Y ya de paso, desde aquí podéis mirar los términos de uso. Os resumo lo ‘interesante’: 100.000 llamadas / día, cosa que no está nada mal 🙂 

Como se puede ver, hay disponibles 4 APIs:

ISteamNews
ISteamUserStats
ISteamUser
ITFItems_440 

La API que me interesa es precisamente la ISteamUserStats y más concretamente la función GetPlayerAchievements.

Con dicha función, podremos ver cuantos logros hemos completado de un determinado juego.

La llamada a la API es simple y solo necesita 3 parámetros:

http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid={0}&key={1}&steamid={2}&format=xml 

¿Qué es la appid?
Pues el el id del juego en cuestión. En Steam, cada juego tiene un id, así por ejemplo si en Steam entramos en la página del Skyrim vemos que la dirección es esta:

http://store.steampowered.com/app/72850

Pues en este caso, el id del Skyrim es el 72850. ¿Fácil, no? 

¿Qué es la key?
Pues la API key que hemos conseguido en el primer paso. Creo que no tiene duda. 

¿Qué es el steamid?
Cada usuario en Steam, también tiene un id. Ojo, no confundir el steamid con nuestro nombre dentro de steam (tanto nombre como nombre de la cuenta), ya que no tiene nada que ver.
Para averiguar nuestro steamid, lo más sencillo es dentro de la página de Steam, acceder a nuestro perfil y mirar la dirección en nuestro navegador web, en mi caso es algo como esto: 

http://steamcommunity.com/profiles/7656119xxxxxxxxxxxx

Bien, pues en este caso, el steamid es  7656119xxxxxxxxxxxx 

Con estos tres datos, lo único que tenemos que hacer es una llamada a esta dirección:

http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=72850&key=tu_key_aqui&steamid=tu_steamid_aqui&format=xml  

Esto nos devuelve un XML con el siguiente formato:

 

Si el valor de achieved es 1, es que el logro está completado, si es 0 es que no lo está. 

Bien, pues con está información, me he creado una pequeña clase en C# que precisamente me proporciona la información que busco. El código fuente lo podéis ver aquí. (vía pastebin) 

El uso de la clase es bastante trivial:


(Haz click para agrandar)

Básicamente hay un método GetStats(appid, steamid) y un evento llamado GetStatsCompleted()

Si la descarga / información es correcta, el argumento value del evento será distinto de null y podremos ver lo siguiente:

Como véis , simple, rápido y para todos los públicos.

Ahora queda ver si merece la pena implementar esta "feature" en el catalogador de juegos.

 

Actualización

Al final no he podido "resistirme" y lo he integrado en el programa 🙂  

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature  

Desarrollo de ‘Gamerz’. Semana 7

Semana 7

Primero os dejo este vídeo y luego comentamos un par de cosillas:

En esta semana he estado trabajando en el "treeview" y en el panel de la lista y carátulas.

En la lista se muestra el detalle del "grupo" seleccionado: 


(Haz click para agrandar)

Y en las carátulas, pues eso, las carátulas del "grupo" seleccionado:


(Haz click para agrandar)

Aquí podéis ver que al seleccionar un juego dentro del grupo "FPS", se muestran las carátulas de dicho grupo. Además de "selecciona" la carátula del juego seleccionado:


(Haz click para agrandar)

 

EL cuadro de búsqueda 

La búsqueda es bastante "peculiar", me explico:

Si tenemos por ejemplo, seleccionado el grupo "Generos", y buscamos "FNAC", el programa nos muestra todos los juegos, agrupados por generos,  donde alguno de sus campos contenga el texto "FNAC" (presumiblemente, solo en el campo "tienda", en este caso): 

De esta forma, podremos ver rápidamente que "tipo de juegos" hemos comprado en el FNAC.

(Sí, ya sé que el ejemplo es un poco absurdo, pero bueno, es lo que hay xD)

Otro ejemplo.

Si tenemos activo el grupo "Idioma", y buscamos "FNAC" veremos todos los juegos, agrupados por idiomas, donde cualquier campo de los juegos sea "FNAC": 

 

Con este sistema de "búsqueda" podremos sacar estadísticas interesantes.

 

Splash Screen

Durante esta semana también se ha trabajado en la "Splash Screen" (pantalla de carga) del programa:


(Haz click para agrandar)

Teniendo en cuenta mi nulo manejo con programas de dibujo, el resultado es bastante digno, en mi humilde opinión.  

Tenía claro que quería hacer algo "irregular".

Como segundo paso se ha conseguido aplicar un efecto de "blending" que da un aspecto bastante chulo.

Al final he incluido una animación del "disco de tron" que proporciona "movimiento" al Splash Screen.

He podído comprobar una cosa:

Las comprobaciones en el Splash Screen se realizan en un hilo independiente. Si se usa Control.CheckForIllegalCrossThreadCalls = false; el refresco de los datos es muchisimo más lento (pero por mucho) que si se usan delegados e invokes.

Por lo tanto, consejo de amigo, pasa olímpicamente del CheckForIllegalCrossThreadCalls y usa delegates e invokes 🙂

 

Objetivos para las próximas semanas

Empezar a dar "forma" a la ficha del juego seleccionado en la pantalla principal del  programa. 

 

PD: Se buscan colaboradores con el proyecto. Interesandos enviar un MP o dejar un comentario. 

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature 

 

MeriStats 2014 – Enero

Resumen 2013. Off Topic: Link
Resumen 2013. MeriConsolas: Link 

Off Topic 2014. Enero:

Total Hilos nuevos —> http://i.imgur.com/EO3A7lt.png 
Temas —> http://i.imgur.com/CSp4lIb.jpg
Hilos/Hora —> http://i.imgur.com/AmCDMg5.png
Hilos/Día —> http://i.imgur.com/et51s6g.png
Foreros —> http://i.imgur.com/DLWQu3I.png

MeriConsolas 2014. Enero:

Total Hilos nuevos —> http://i.imgur.com/d6BpjcK.jpg
Temas —> http://i.imgur.com/zNvhgJ8.png
Foreros —> http://i.imgur.com/GIN86oS.png

Meristation. Usuarios Online 2014. Enero:

Registrados —> http://i.imgur.com/vmC2Xlr.png
Ocultos —> http://i.imgur.com/uDqfbhA.png
Invitados —> http://i.imgur.com/sBehsO9.png
Total —> http://i.imgur.com/yVIZPhb.png 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature  

Desarrollo de ‘Gamerz’. Semana 4 y 5

En estas dos últimas semanas he podido darle un poco más de brío al proyecto.

La vista para la gestión de un juego está practicamente operativa al 100%. Solo falta una cosa: Que el botón "Aceptar" haga lo que se supone que tiene que hacer.

Esta vista se encargará de dar da alta un juego de forma "manual" o editar un juego que ya existía en nuestra base de datos. 

Solo son obligatorios dos campos: El título del juego y la plataforma.

Nota: El diseño de la vista es completamente ‘temporal’ y puede sufrir cambios a lo largo del desarrollo. Si tenéis alguna sugerencia, sera bienvenida.

Esta vista se compone de 3 pestañas:

– Juego
– Personal
– Carátulas y links

Pestaña Juego.

Aquí básicamente se podrá establecer la información del juego: 


(haz click para agrandar)

Pestaña Personal.

Los datos personales serán los siguientes: 


(Haz click para agrandar)

Carátulas y links

Carátulas:

Desde aquí se podrá establecer o cambiar la carátula del juego 


(Haz click para agrandar)

Trailer:

Se podrá establecer un trailer para verlo desde la ficha principal del programa. Actualmente se admiten trailers de Youtube y Vimeo. 


(Haz click para agrandar)

Links:

Se puede establecer un número ilimitado de enlaces para verlos desde la ficha principal del programa. 


(Haz click para agrandar)

 

Otros aspectos ‘técnicos’

Si establecemos la opción de "Logros" y tenemos completos todos los logros del juego, se mostrará este trofeo en la ficha del juego: 

Todas las entradas de datos se realizan con desplegables con "auto-completado". Esto facilita muchísimo la entrada de datos.

Por ejemplo si queremos establecer la saga "The Elder Scrolls". Tenemos dos opciones.

Podemos desplegar la lista y buscar y seleccionar "The Elder Scrolls": 

… o bien, escribir una t

… luego una h

y listo.

Si queremos dar de alta "un nuevo concepto", simplemente lo escribiremos y al completar la edición de la ficha el programa creará el registro correspondiente. Fácil, rápido y para todos los públicos. 

La vista no permitirá modificar los datos si falta algún campo obligatorio (siempre marcado en ‘rosa’): 

Por último indicar que el programa tiene una serie de datos "pre-cargados", que son los siguientes: 

  1. Developers:
  2. Activision
  3. Ascaron
  4. Asylum
  5. Atari
  6. Atlus
  7. Bethesda Softworks
  8. Bioware
  9. Blizzard Entertainment
  10. Capcom
  11. Codemasters
  12. Crystal Dynamics
  13. Disney Interactive
  14. EA DICE
  15. EA Games
  16. EA Sports
  17. Electronic Arts
  18. Gameloft
  19. Heavy Iron Studios
  20. Hudson Soft
  21. id Software
  22. Konami
  23. LucasArts
  24. Maxis
  25. Midway
  26. Milestone
  27. Namco Bandai
  28. Nintendo
  29. Psygnosis
  30. Pyro Studios
  31. Radical Entertainment
  32. Rare
  33. Raven Software
  34. Rockstar New England
  35. Rockstar North
  36. Rockstar San Diego
  37. Rockstar Vancouver
  38. SEGA
  39. Sega of Japan
  40. Square Enix
  41. Taito Corporation
  42. Team 17
  43. THQ
  44. Travellers Tales
  45. Ubisoft
  46. Valve Software
  47. Visual Concepts
  48. Westwood Studios
  49. Extras:
  50. Alfombrilla ratón
  51. Banda sonora
  52. Caja Ed. Coleccionista
  53. Camiseta
  54. CD/DVD contenido extra
  55. Cómic
  56. Figura plomo/cerámica
  57. Gorra
  58. Hechizo exclusivo
  59. Libro/Artbook
  60. Mapa
  61. Mascota exclusiva
  62. Montura exclusiva
  63. Póster
  64. Skin exclusivo
  65. Vale descuento
  66. Formatos:
  67. Blu-ray Disc
  68. Cartridge
  69. Cassette
  70. CD-ROM
  71. Download
  72. DVD
  73. Floppy
  74. GC Disc
  75. GD-ROM
  76. Playstation Network
  77. Vita Card
  78. Xbox Live Arcade
  79. Generos:
  80. Action
  81. Arcade
  82. Battle
  83. Board
  84. Cards
  85. Casino
  86. Driving
  87. Educational
  88. Fighting
  89. FPS
  90. Hentai
  91. MMOFPS
  92. MMORPG
  93. Music
  94. Party
  95. Pinball
  96. Platformer
  97. Puzzle
  98. Racing
  99. Retro
  100. RPG
  101. Sandbox
  102. Shoot ‘Em Up
  103. Shooter
  104. Simulation
  105. Simulator
  106. Sports
  107. Strategy
  108. Survival Horror
  109. Tactical
  110. Tower Defense
  111. Trivia
  112. Virtual Pet
  113. Idiomas:
  114. Alemán
  115. Chino
  116. Coreano
  117. Español
  118. Francés
  119. Inglés
  120. Italiano
  121. Japonés
  122. Portugués
  123. Ruso
  124. Plataformas:
  125. 3DO
  126. Amiga
  127. Amiga CD32
  128. Amstrad CPC
  129. Arcadia 2001
  130. Atari 2600/VCS
  131. Atari 400/800
  132. Atari 5200
  133. Atari 7800
  134. CD-I
  135. ColecoVision
  136. Commodore 64
  137. Dreamcast
  138. Game Boy
  139. Game Boy Advance
  140. Game Boy Color
  141. Game Gear
  142. GameCube
  143. GamePark 32
  144. Intellivision
  145. Jaguar
  146. LaserActive
  147. Lynx
  148. Magnavox Osyssey 2
  149. Mega Drive
  150. Microvision
  151. N-Gage
  152. Neo Geo AES
  153. Neo Geo CD
  154. Neo Geo Pocket
  155. Neo Geo Pocket Color
  156. NES
  157. Nintendo 3DS
  158. Nintendo 64
  159. Nintendo DS
  160. Palm
  161. PC
  162. PC Engine
  163. Playdia
  164. PlayStation
  165. PlayStation 2
  166. PlayStation 3
  167. PlayStation 4
  168. PlayStation Vita
  169. PSP
  170. Saturn
  171. Sega 32X
  172. Sega CD
  173. Sega Master System
  174. SNES
  175. TI-99/4A
  176. TurboDuo
  177. TurboGrafx 16
  178. TurboGrafx 16 CD
  179. Vectrex
  180. Wii
  181. Wii U
  182. WonderSwan
  183. WonderSwan Color
  184. Xbox
  185. Xbox 360
  186. Xbox One
  187. ZX Spectrum
  188. Regiones:
  189. NTSC-J [Japan]
  190. NTSC-K [S. Korea]
  191. NTSC-U/C [Malaysia]
  192. NTSC [North America]
  193. PAL-A [UK-Italy]
  194. PAL-B [Europe]
  195. PAL-M [Brazil]
  196. PAL [Europe-Oceania]
  197. Region #FREE#
  198. SECAM
  199. Sagas:
  200. 2K Sports NBA
  201. Assassin’s Creed
  202. Battlefield
  203. Call of Duty
  204. Castlevania
  205. Civilization
  206. Dead or Alive
  207. Devil May Cry
  208. Doom
  209. Dragon Ball Z
  210. Dragon Quest
  211. Dungeons & Dragons
  212. Fallout
  213. FIFA Soccer
  214. Final Fantasy
  215. Gran Turismo
  216. Grand Theft Auto
  217. Guitar Hero
  218. Half-Life
  219. Halo
  220. Harry Potter
  221. LEGO
  222. Leisure Suit Larry
  223. Madden
  224. Mario Party
  225. Medal of Honor
  226. Mega Man
  227. Metal Gear
  228. Monkey Island
  229. Mortal Kombat
  230. Need for Speed
  231. Ninja Gaiden
  232. Pokemon
  233. Pro Evolution Soccer
  234. Quake
  235. Rayman
  236. Resident Evil
  237. Serious Sam
  238. SimCity
  239. Sonic
  240. Splinter Cell
  241. Star Trek
  242. Star Wars
  243. Street Fighter
  244. Super Mario
  245. Tekken
  246. The Elder Scrolls
  247. The Sims
  248. Tomb Raider
  249. Tony Hawks Pro Skater
  250. Unreal
  251. Warcraft
  252. Warhammer
  253. Zelda
  254. Tiendas:
  255. Alcampo
  256. Amazon
  257. Amazon.co.uk
  258. American’s Game Ocio
  259. App Store
  260. Carrefour
  261. eBay
  262. El Corte Inglés
  263. Fnac
  264. GAME
  265. GameFly
  266. GameStop
  267. Google Play
  268. Hipercor
  269. Media Markt
  270. OJGames
  271. OverGame
  272. Steam
  273. Worten
  274. Zavvi

 

Bien, como véis, la cosa avanza despacio pero con paso firme.

La vista en la que he estado trabajando estas dos semanas es la base del programa.

Internamente hay aspectos más técnicos en los que también se ha trabajado, como son el motor de datos, que es capaz, con solo cambiar 1 línea de código, trabajar con SQL CE, SQL Server, Access, MySQL, Oracle, etc…pero vamos, no me extenderé nada en ese aspecto 🙂

 

Objetivos para la semana 5, 6 y 7

Para las tres siguientes semanas los objetivos son dos:

1) Coger el código de "test" de la semana 3 e integrarlo en el programa.
2) Completar lo realizado hasta ahora y guardar en base de datos un juego (tanto nuevo, como editado) 

 

Repito y no me cansaré que si tenéis alguna duda o mejor aún, alguna sugerencia, me la indiquéis en los comentarios. 

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature    

Desarrollo de ‘Gamerz’. Semana 3

Ya tenemos algo de código (hurra!)

En esta tercera semana he implementado el servicio WCF.

De momento solo tengo dos métodos, uno nos devuelve una lista de juegos y otro nos devuelve toda la información de un determinado juego.

Una vez alojado el servicio WCF en mi servidor he realizado un pequeño test para ver como se comporta.

Básicamente tendremos una caja de texto donde escribiremos el título que deseamos añadir a nuestra colección, para que plataforma y un botón para iniciar la búsqueda.

Para que os hagáis una idea: 

 

En este pequeño vídeo se puede comprobar como funciona:

Un par de apuntes:

El servicio va bastante rápido, tendiendo en cuenta que el servidor se encuentra en California y yo estoy en España.

Las carátulas se cargan directamente desde mi cuenta de Dropbox que subí la semana pasada.

Objetivos para la semana 4 y 5: 

Para las próximas dos semanas tengo pesando diseñar la base de datos y poder dar de alta un juego.

Apenas dispongo de dos horas a la semana para dedicar a este proyecto, así que iremos despacio pero con buena letra.

 

Dudas, comentarios, sugerencias…en el botón de abajo

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature   

Desarrollo de ‘Gamerz’. Semana 2

Esta segunda semana  no ha sido ‘muy interesante’.

Básicamente he subido todas las carátulas descargadas la semana anterior a mi cuenta de Dropbox, después de conseguir algo más de espacio.

Semana 2. Subir las carátulas de los juegos a Dropbox… 

Como no tengo el programa de Dropbox instalado en mi PC (ni pienso instalarlo de momento) la subida de las carátulas las he realizado desde el propio navegador web.

Como dato curioso, desde el navegador web, Dropbox no permite subir más de 3000 archivos a la vez. Por lo que he tenido que ir subiendo los archivos poco a poco.

Objetivos para la semana 3:

Bien, para esta nueva semana tengo pensado en empezar a desarrollar el servicio WCF.

Para empezar básicamente necesito dos métodos:

– Un método que me devuelva una lista de juegos en función del título especificado.
– Un método que me devuelva la información de un juego en concreto.

 

Cualquier duda, o sugerencia, por aquí andamos.

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature  

 

Desarrollo de ‘Gamerz’. Semana 1

Nota: el título es provisional

Nuevo año, nuevos proyectos!.

¿Qué pretende ser Gamerz?

– Un programa para catalogar todos los juegos que tienes.

Objetivos:

– De fácil manejo.
– Dar de alta un juego en tu catálogo con un simple click, recuperando la carátula, título, año de lanzamiento, desarrollador, publicador, plataforma, etc.
– Llevar un control de a quién y cuando le has prestado un juego.
– Gráficas e informes del total de juegos completados, dinero gastado, juegos que tienes por géneros, desarrollador, etc.
– Generación de plantillas en HTML/otros formatos para poder consultar tu catálogo desde un móvil/tablet.
G R A T U I T O
– Cualquier otra característica que vaya surgiendo durante el desarrollo.

 

Semana 1. Datos, datos, necesito datos…

Lo primero que se ha desarrollado es la base de datos principal (SQL Server) que estará alojada en un servidor desde donde se recuperará la información vía servicio WCF / SOAP.

Esta información ha sido "parseada" de distintas fuentes de internet. Las categorías ("plataformas") seleccionadas han sido las siguientes: 


(haz click para agrandar)

Una vez diseñada la base de datos y la aplicación de "parsing", se procedió al llenado de la base de datos. Este proceso recuperaba la información de varias fuentes y portales de internet. El proceso duró más de 6 horas:


(haz click para agrandar)

La herramienta de "parsing" no solo rellenaba la base de datos, sino que también descargó las carátulas de los juegos que iba analizado. En total se descargaron más de 1.6 GB en carátulas:


(haz click para agrandar)

Aquí se puede ver un fragmento de los datos insertados en la tabla principal: 


(Haz clic para agrandar)

Se puede observar que se "parsearon" mas de 48.000 juegos.

La cantidad de juegos por plataforma han sido los siguientes:  

El tamaño de la tabla tampoco es excesivo, ya que apenas llega a los 10 MB:  

Bien, objeto 1 complido, ya tenemos datos para empezar a trabajar.

Objetivos para la semana 2:

– Revisar la base de datos para detectar posibles errores.
– Subir los 1.6 GB de las carátulas a mi cuenta de Dropbox, para lo cual necesito ampliarla. Actualmente tengo 1.6 / 2 GB ocupados.
Para ello tengo que hacer lo siguiente:

– Activar la subida de fotos desde mi móvil y subir 1 foto (creo que te dan 500 MB por eso)  
– Completar el asistente de primer bienvenida (125 MB)
– Enviar 1 o dos invitaciones para que alguien use Dropbox (osea, a mi mismo a cuentas "bot") con lo que conseguiría 500 MB / 1 GB más
– Borrar toda la "purria" que tengo actualmente y que no me sirve para nada de mi carpeta de Dropbox

Con todo eso creo que conseguiré los 1.6 GB libres para poder alojar las carátulas en la "nube" y que puedan ser transferidas via WCF / SOAP por Gamerz.

Por cierto, da la suerte que dispongo de una cuenta de Dropbox "de las antiguas", donde el link es fijo.

 

Cualquier duda, o sugerencia, por aquí andamos.

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature