Iniciar sesión

Ver la versión completa : EXP para GP2X y WIZ. Por fin tenemos logros!!!!



saboteur
22/08/2010, 17:44
EXP es un programa que permite añadir Experiencias (logros, trofeos o como queráis llamarlo) a vuestros juegos en GP2X y WIZ.
Por una parte está el SDK, que es una librería que se incluye en cada juego.
Y por otro, la aplicación que muestra los premios y resultados.

Vayamos por partes!!!

Para los jugones (meter todo en la carpeta games):

Aplicación EXP (http://www.saboteur.arrakis.es/juegos/download/exp-20100822.zip). Crear vuestro EXP (o el de toda vuestra familia). Seleccionar uno y salir. El último EXP será el perfil activo para los juegos.
Escape from Minos (Versión EXP) (http://www.saboteur.arrakis.es/juegos/download/minos_exp-20100822.zip). 32 EXPERIENCIAS, 1000 PUNTOS.
Rock Rain 2 (versión EXP) (http://www.saboteur.arrakis.es/juegos/download/rockrain2_exp-20100822.zip). 18 EXPERIENCIAS, 500 PUNTOS.

Por favor, sobre todo me gustaría conocer el resultado en GP2X, porque tengo la consola sin baterías y apenas he podido probarlo. En WIZ, el rendimiento es excelente. Sé que hay gente que odia los mensajes de los logros, pero ponerlo o quitarlo depende de cada programador. Yo los he dejado activos para que comprobéis el resultado en directo.

Para los programadores:

EXP_SDK (http://www.saboteur.arrakis.es/juegos/download/exp_sdk-20100822.zip). Ya sabéis, el fichero exp.h al directorio include, el fichero libexp.a al directorio lib del toolchain. (No he probado con el SDK oficial de GPH).

Ejemplo de código:

exp_init(“Autor”,”Escape from Minos”,screen); // screen es la superficie SDL de la pantalla (opcional)

exp_add(1,10); // el logro 1 vale 10
exp_add(2,20); // el logro 2 vale 20
exp_add(3,30,1); // el logro 3 vale 30 y es secreto

exp_add_desc(1,”tonto”,”te has caído”); // descripcion del logro 1

Si quieres varios idiomas, el sistema cargará en memoria el idioma seleccionado en la aplicación de los EXP.

exp_add_desc(1,”tonto”,”te has caído”,”Spanish”); // descripcion español
exp_add_desc(1,”silly”,”you falled”,”English”); // descripcion inglés

exp_win(1); // activa la experiencia 1
exp_win(2); // activa la experiencia 2
exp_win(3); // activa la experiencia 3

Sólo hay que recordar meter:

exp_update(); // justo antes del SDL_Flip() para mostrar los mensajes
exp_end(); // al salir del juego

Con esto ya vale para meter logros. Pero tienes otras funciones útiles como:

exp_user(); // te devuelve el nombre del perfil activo
exp_data_path(); // te devuelve la ruta de datos donde puedes grabar las partidas, etc... de ese perfil.
exp_add_img() // añade una imagen del logro
exp_add_icon() // añade un icono del juego

Si no utilizáis SDL pero queréis usar los logros, podéis pasar el parámetro screen como NULL en el init, y no mostrará nada. Pero sí guardará los datos del perfil activo.
Todos los datos se guardan en una carpeta en la raiz de la SD llamada EXP.

Necesito testers, sobre todo de los juegos, así que ir contando vuestras “experiencias”.

¡OPINIONES PLEASE!


PD: por cierto, todavía lo considero beta. ;)

kappa64
22/08/2010, 17:46
Tio te lo has currado !! Muchas gracias!

jduranmaster
22/08/2010, 18:07
me parece genial. espero probarlo cuando tenga algo mas de tiempo.:awesome:

chipan
22/08/2010, 18:19
Mandaselo a GPH a ver si les mola

jean la montard
22/08/2010, 18:49
¿es aplicable via bennu?

juanvvc
22/08/2010, 19:19
Muchas gracias por el trabajo, pero déjame que te haga dos críticas por las que muchos programadores no podrán usar EXP:

1- Una técnica: el código fuente no está disponible, así que si mañana aparece una nueva consola de GPH (¿Caanoo?), el programa no será portable. Tampoco se puede utilizar en Pandora, iPhone... Has cerrado la librería a una sola consola, y quizá a un solo firmware para esa consola.
2- Una legal: no hay licencia de software explícita, así que por defecto pasa a ser la más restrictiva y por tanto no se puede utilizar en programas GPL de ninguna forma, y además todos los programadores que quieran usarlo tendrán que pedirte permiso previo.

Por ejemplo, no es aplicable via Bennu como pregunta Jean, y no podrá serlo nunca. Por una parte porque tendrías que portarlo tú, que a lo mejor no sabes suficiente de Bennu (la razón 1), y aunque le pases el código por privado a Splinter él tampoco podría portarlo, porque Bennu es GPL y tu librería no es compatible con la GPL (la razón 2)

saboteur
22/08/2010, 20:51
¿es aplicable via bennu?

Todavía no he mirado lo del Bennu. A ver si lo que hay se queda más o menos estable, y luego ya veremos.

< - >

Muchas gracias por el trabajo, pero déjame que te haga dos críticas por las que muchos programadores no podrán usar EXP:

1- Una técnica: el código fuente no está disponible, así que si mañana aparece una nueva consola de GPH (¿Caanoo?), el programa no será portable. Tampoco se puede utilizar en Pandora, iPhone... Has cerrado la librería a una sola consola, y quizá a un solo firmware para esa consola.
2- Una legal: no hay licencia de software explícita, así que por defecto pasa a ser la más restrictiva y por tanto no se puede utilizar en programas GPL de ninguna forma, y además todos los programadores que quieran usarlo tendrán que pedirte permiso previo.

Por ejemplo, no es aplicable via Bennu como pregunta Jean, y no podrá serlo nunca. Por una parte porque tendrías que portarlo tú, que a lo mejor no sabes suficiente de Bennu (la razón 1), y aunque le pases el código por privado a Splinter él tampoco podría portarlo, porque Bennu es GPL y tu librería no es compatible con la GPL (la razón 2)

El código fuente no lo he metido porque primero quiero que funcione. He sacado la beta a toda prisa porque a partir de mañana tendré menos tiempo libre, y quiero que la gente lo pruebe. En cuanto a otras consolas, ahora mismo no me interesan así que tampoco le veo mucho problema... con GP2X y WIZ hay bastante vida por delante.

Yo mismo me he encontrado las primeras versiones de SDL para Wiz en forma de librería sin el código fuente, y no por eso las dejé de usar.

Drumpi
22/08/2010, 20:53
Muchas gracias por el trabajo, pero déjame que te haga dos críticas por las que muchos programadores no podrán usar EXP:

1- Una técnica: el código fuente no está disponible, así que si mañana aparece una nueva consola de GPH (¿Caanoo?), el programa no será portable. Tampoco se puede utilizar en Pandora, iPhone... Has cerrado la librería a una sola consola, y quizá a un solo firmware para esa consola.
2- Una legal: no hay licencia de software explícita, así que por defecto pasa a ser la más restrictiva y por tanto no se puede utilizar en programas GPL de ninguna forma, y además todos los programadores que quieran usarlo tendrán que pedirte permiso previo.

Por ejemplo, no es aplicable via Bennu como pregunta Jean, y no podrá serlo nunca. Por una parte porque tendrías que portarlo tú, que a lo mejor no sabes suficiente de Bennu (la razón 1), y aunque le pases el código por privado a Splinter él tampoco podría portarlo, porque Bennu es GPL y tu librería no es compatible con la GPL (la razón 2)

¿Y que el autor haya dicho que se puede usar en nuestros proyectos no es suficiente permiso legal para poder usarlo con programas GPL o noGPL sin tener que pedírselo?
Para Bennu tendría que crearla como libería (dll/so) y distribuir las instrucciones de uso como mínimo, no se yo si se pueden crear librerías a partir de .h y .a o si hay algún requisito extra para la integración con Bennu.

juanvvc
22/08/2010, 21:52
¿Y que el autor haya dicho que se puede usar en nuestros proyectos no es suficiente permiso legal para poder usarlo con programas GPL o noGPL sin tener que pedírselo?

No, porque si tú haces un juego GPL y viene otro detrás, podría querer modificarlo a su gusto pero no tendría el permiso de saboteur :) Así que saboteur tendría que crear una licencia con mucho cuidado para que nosotros y los que vengan detrás de nosotros no tengan problemas. En particular, hay que crear una licencia del tipo "compatible con la GPL". Hay un grupo de gente en la FSF que se dedica a evaluar qué licencias son compatibles, pero son leeeentos así que lo mejor es usar una licencia que ya sepamos que es compatible y nos quitamos problemas :)

Saboteur, a mí me parece un error publicar una librería que solo es compatible con consolas que ya no se fabrican :) Además, si GPH cambia el firmware de la Wiz para hacer esas cosas que quiere hacer de compatibilidad con Caanoo, tu librería podría dejar de funcionar incluso en Wiz.

Eso no quita que no crea que esta biblioteca es una buena cosa para la scene. Pero creo que tú mismo te estás cerrando puertas para que los programadores no la usen.

Por cierto, ¿has pensado en algún tipo de registro online de las Experiencias? ¿Y detección de tramposos?

Jonazan2
22/08/2010, 21:58
Gran trabajo saboteur, espero que muchos programadores lo incluyan en sus juegos porque me encantan los logros :brindis:

eolpxw
22/08/2010, 22:12
Lo he probado en tus dos juegos. Ahora vas a hacer que quiera exprimirlos para conseguir todos los logros. ;)

valdivia
22/08/2010, 22:21
una gran noticia saboteur un gran trabajo

saboteur
22/08/2010, 22:24
No, porque si tú haces un juego GPL y viene otro detrás, podría querer modificarlo a su gusto pero no tendría el permiso de saboteur :) Así que saboteur tendría que crear una licencia con mucho cuidado para que nosotros y los que vengan detrás de nosotros no tengan problemas. En particular, hay que crear una licencia del tipo "compatible con la GPL". Hay un grupo de gente en la FSF que se dedica a evaluar qué licencias son compatibles, pero son leeeentos así que lo mejor es usar una licencia que ya sepamos que es compatible y nos quitamos problemas :)

Saboteur, a mí me parece un error publicar una librería que solo es compatible con consolas que ya no se fabrican :) Además, si GPH cambia el firmware de la Wiz para hacer esas cosas que quiere hacer de compatibilidad con Caanoo, tu librería podría dejar de funcionar incluso en Wiz.

Eso no quita que no crea que esta biblioteca es una buena cosa para la scene. Pero creo que tú mismo te estás cerrando puertas para que los programadores no la usen.

Por cierto, ¿has pensado en algún tipo de registro online de las Experiencias? ¿Y detección de tramposos?

Mi intención era meter la misma licencia que la SDL, pero eso ahora mismo no me preocupa. Si no funciona, no se usa, no gusta... no va a valer de mucho por muy código libre que sea. ;)

No sólo funciona en gp2x y wiz, el testeo de los juegos los he hecho en windows, así que la portabilidad creo que está más que asegurada. Lo que pasa es que quiero dejarla totalmente cerrada (me refiero a estabilidad), y mejorar algunas cosas... incluso intentar separarla de SDL por si alguien accede a la pantalla sin utilizar SDL (y limpiar las guarrerias que he metido, que me doy verguenza ajena a mi mismo).

En cuanto a lo del registro online no he pensado nada, porque creo que los tramposos no tienen remedio. Esta librería la he hecho para los que quieran divertirse y picarse con los amigos comparando premios. Antes de funcionar online tendrá que funcionar in situ. Pero molaría bastante!! :D

Drumpi
23/08/2010, 01:13
me doy verguenza ajena a mi mismo

¿Epic frase? :quepalmo::quepalmo::quepalmo:

Aiken
23/08/2010, 02:37
Saboteur, a mí me parece un error publicar una librería que solo es compatible con consolas que ya no se fabrican :) Además, si GPH cambia el firmware de la Wiz para hacer esas cosas que quiere hacer de compatibilidad con Caanoo, tu librería podría dejar de funcionar incluso en Wiz.

juanvvc, ultimamente te noto un poco a disgusto con la scene, tienes algun rencor o algo que te inquiete? recuerda que la scene hace lo que puede y lo que como hobbie le da tiempo, no tiene porque ser para todas las consolas del mundo, y ni siquiera tiene por que caer bajo ninguna licencia, mas si no usa trabajo de otras personas.

Tu consejo es muy valido, pero la forma de decirlo parece como si intentaras afear su trabajo por alguna extraña y oculta razon. En lugar de afearle lo que ha hecho podrias decirle lo que molaria que hiciera como le comentas ;)

sin animo de ofender, solo de ayudar :brindis:

Aiken

< - >

En cuanto a lo del registro online no he pensado nada, porque creo que los tramposos no tienen remedio.

estarias bien lo de online, pero como bien dice saboteur es meterse en lios de tramposos, servidores, etc.

a mi como forma de saber si te has pasado el 100% del juego o de medir lo bien que lo has hecho me parece bien aunque sea en local.


animo con el proyecto, que tiene muy buena pinta :brindis:
Aiken

Kune
23/08/2010, 09:58
Muchas gracias.

A mí me parece una idea genial, haber si van apareciendo más juegos con esa exp jejeje..

Un saludo y ánimo con el proyecto. :brindis:

juanvvc
23/08/2010, 10:03
Tu consejo es muy valido, pero la forma de decirlo parece como si intentaras afear su trabajo por alguna extraña y oculta razon. En lugar de afearle lo que ha hecho podrias decirle lo que molaria que hiciera como le comentas ;)

Ah, no, no, no. No estoy afeando nada. Siento si ha parecido así. :) Es un gran trabajo sobre algo que no hay nada en ninguna scene de ninguna consola, y además parece muy-muy sencilla de utilizar tanto para jugadores como para programadores. No tengo absolutamente ninguna queja desde el lado técnico, solo alabanzas. Lo de la detección de tramposos y registro online me parecen retos muy interesantes y divertidos para el programador, pero en absoluto imprescindibles para utilizar la librería.

Pero supongo que el objetivo de saboteur es que su librería se use, y desde mi punto de vista de programador ocasional, a pesar de que su librería es una idea magnífica, no la usaría precisamente porque si no hay código fuente me puede dejar vendido en cualquier momento y dejar de funcionar, o no puedo aprovechar el trabajo para otras consolas. También están los escrúpulos legales, aunque reconozco que de esos tengo menos. Y estoy seguro de que hay más gente ahí fuera que puede pensar similar :) Mi interés es que saboteur publique el código fuente, porque creo que si no lo hace los programadores no usarán la librería.

Saboteur, la licencia de la SDL es LGPL, que tendrías que publicar el código fuente y solucionaría los problemas que le veo a la librería. Así que es una buena opción.

saboteur
23/08/2010, 17:05
Hombre, a un librería que se podría usar en muchos proyectos distintos si veo lógico liberar el código (que sería yo sin SDL). Pero sobre todo, porque si a alguien se le ocurre alguna mejora buena (actualización del perfil online, por ejem.) lo podría hacer sin problemas y a mí me vendría de perlas.

Pero bueno. Lo primero es ver si es estable, y los programadores están interesados. Además, quiero hacerle un par de retoques sutiles.

sharek
19/10/2010, 20:11
Anda! justo he escrito hace unos minutos un post con la misma idea, no pensé en buscar la idea en el foro!

Que te parece si subes el código a algun sitio (google code es una buena opción)

Podríamos tratar de hacer ports a otros lenguajes y ampliar las funcionalidades!

Mi idea iba un poco mas online, podríamos añadir un generador de tags y una web online para que la gente cruce sus puntos

Que te parece? Animate! yo me presto a ayudarte si lo necesitas, pero solo con la condición que sea GNU, por otra parte puedo ofrecerte horas de programación, soporte moral, ideas y hosting para guardar todo (la web de la librería, el código fuente y toda la infraestructura para genera tags y mantener usuarios)

Me gustaría discutirlo contigo aqui en abierto para que la gente aporte sus ideas, que te parece?

P.D. porqué no proponemos mover este hilo a Programación?

saboteur
19/10/2010, 21:44
Sí, ya he visto el tocho que has soltado en el otro hilo con esta misma idea. :D

Bueno, te cuento mi idea. Lo que pretendo hacer es una API sencilla a base de funciones... eso ya está hecho, pero me gustaría convertirlo completamente a C. Ahora mismo tiene cosas mezcladas de C++, y si se pasara a C podría hacerse una librería fácilmente para Bennu. Me parece que esto es importante.

Pero también quiero terminar un tutorial de programación de videojuegos que he abierto en la sección de tutoriales y que incluye un sencillo jueguecillo con Experiencias.

Así que:

1) espero terminar ese tutorial y en la última lección subir el código fuente y los binarios de esa librería al foro. Para que al menos se pueda ir practicando con lo que hay, porque funciona perfectamente.

La librería estaba pensando en liberarla como LGPL (como las SDL), pero me gustaría que se pudiera enlazar estáticamente, así que tengo que echarle un ojo al rollo ese de las licencias, a ver qué hay.

2) hay que convertirla a C. O sea, eliminar todo lo que tenga de C++ y pasarla a C puro sin añadir funcionalidades. En este momento se podría meter en Bennu sin problemas.

3) pensar nuevas cosas que se puedan añadir, como cambiar de perfil durante los juegos, estudiar si es posible un menú EXP en mitad de un juego estilo xbox, o una posible conexión web a un servidor para dejar los logros (este puede ser el más complicado).


Lo que pasa es que voy a estar liado unas semanas con otras cosas y casi no tengo tiempo. Así que hasta mediados de Noviembre tengo complicado dedicarme al 100% a esto. Pero ya llegará. ;)

En cuanto a lo de mover este hilo a programación creo que no es necesario. Si hay que programar se crea uno nuevo dedicado a eso. :brindis:

sharek
19/10/2010, 22:09
Bien pensado, si quieres yo si tengo tiempo, me puedo poner a trabajar ya.

Querrías compartir el proyecto? me interesaría tirarlo adelante, y si lo hacemos público podemos ir tirando, yo puedo ocuparme de traducirlo a C puro, como quieres para pasarlo a beenuu (del que porcierto no tengo ni idea), mientras podríamos ir recogiendo opiniones de la gente incluso algo mejor, convertirlo en algo mas social, pensar en un sistema de módulos o "yo que se" para que la gente pueda hacer suyo el proyecto y hacerlo prosperar.

Abre el código! seguro que ganamos todos (y sobretodo tu!) abrir el código no es en absoluto perder el control del proyecto o perder la propiedad

Estopero
19/10/2010, 22:12
No se puede decir que Sharek, nuestra nueva incorporación no sea un verdadero entusiasta XDD

Me alegro, has entrado por la puerta grande!

A mi me parce buena idea que alguien como Sharek se meta en ello, entendería que igual de momento no quiera abrir el código fuente aunque es bueno saber que tiene la intención de hacerlo :)

saboteur
19/10/2010, 22:27
A mi me parce buena idea que alguien como Sharek se meta en ello, entendería que igual de momento no quiera abrir el código fuente aunque es bueno saber que tiene la intención de hacerlo :)

No es que no quiera... es que me da verguenza enseñar cómo de mal ha quedado mientras dudaba si tirar hacia c, como SDL, o si lo hacía como objeto, por eso quería convertirlo a C antes de nada. :D

@sharek, déjame que acabe el tutorial de programación y así puedo documentar bien la API, al menos para que se entienda cómo hay que programarlo... que es muy sencillo.

sharek
20/10/2010, 00:21
Mal código? RAZON DE MAS! jeje

No hay nada mejor que un código horrible para motivar a la gente a colaborar!

Estoy seguro que podemos hacerlo mejor, el proyecto es tuyo, quiero que quede claro, solo pretendo que haya una buena base para que todo podamos aunar esfuerzos.

Tu proyecto EXP puede ser una buena puerta de entrada a estandarizar los juegos, eso es mas comodidad para el programador y mejor integración para el usuario.

No podemos pasarnos la vida escogiendo donde guardar los savegames, hay que hacer contenedores, hay que tener motores 3D (yeti?) hay que montar protocolos de comunicación faciles para juegos, toda una API que permita programar rápidamente.

El diseñador de juegos debe gastar su tiempo pensando en juegos mejores no en leer como funciona el hardware y recortando expectativas para adaptarse a el.

No te pido que regales tu código, solo que lo abras, no hace falta que la gente colabore escribiendo código (que a ti puede gustarte o no), abre una wiki, deja que la gente se exprese... luego decides tu hacia donde sigue el proyecto.

Recuerda que si licencias tu código como GNU, también deben citarte en los créditos, eso también es interesante para ti, tu trabajo no quedará oculto o enterrado.

< - >
He tenido un par de ideas, creo que pueden ser bastante interesantes, me gustaría compartirlas con el foro para ver opiniones...


Idea 1:

No se como se guardan actualmente los logros en el directorio EXP/ peeero sea lo que sea que se guarda en disco me da bastante miedo el tema del cheating...

Solución: (a bote pronto)

Usar OpenSSL para encriptar los datos en disco (he "portado" la librería libcrypto a caanoo y wiz) podemos usarla sin problemas... te explico el prociedimiento:

* El programador incluye el header y la lib de EXP, el hader incluye un fichero llamado "exp_key.h", junto con la documentación se explican los pasos para el Makefile para generar ese exp_key.h, con un sencillo script de bash cogemos datos random de /dev/random y los colocamos en un array de 32byte en ese .h, ese será la llave y será desconocida por el usuario (binario) y por el programador antes de la compilación, esa será la llave para leer los datos del fichero almacenado en EXP/nombrebinario y solo el binario los conocerá. Encriptamos ese fichero con AES 256 y santas pascuas, un cheater podrá hacer reversing y obtener la llave... pero ¿tanto trabajo para solo subirse unos puntos?

* Problemas: cada compilación del binario incluirá su llave y será incompatible con los logros anteriores, los updates y patches harán que se tengan que volver a superar los logros (el programador siempre puede escoger no ejecutar el script generador y todos felices)

* Complejidad: Esto nos obliga a usar una capa intermedia en EXP para manejar los ficheros en disco... se tendrá que implementar

Idea 2:

Igual que usas actualmente exp_end y exp_init, lo usaremos para generar un descriptor (una struct con mutexes y los datos necesarios para las siguientes llamadas) igual que hace por ejemplo fopen, es nos permite que la librería sea segura para hilos y demás cosas que puedan pasar en la ejecución de código, además nos permitirá almacenar la configuración que el programador desee para el comportamiento (skins, posición de los avisos etc...)


Idea 3:

El uso de la llamada exp_update me parece cojonuda, usando el descriptor que comentaba en la idea2 podemos posicionar en la pantalla los avisos a gusto del desarrollador, así como su comportamiento y sus opciones, por ejemplo, si se decide implementar un sistema de sincronización de experiencias online, esta llamada podría usarse para mostrar una pequeña aspa en la esquina inferior derecha o un mundo dando vueltas mientras EXP realiza acciones en un hilo separado que no moleste al programa principal sin entorpecer la experiencia de usuario.

Idea 4:

Se podría instalar un servicio en el dispositivo (un demonio) que arrancara el primer juego que usa EXP y lo dejase corriendo (sleep) para que cuando el usuario abandone el juego se pueda seguir trabajando (por ejemplo sincronizando experiencias) aunque desconozco si la caanoo o la wiz pueden ejecutar varias tareas en paralelo (depende de como esté compilado el kernel)

Idea 5:

El SDK debe saber cual es el fichero de la carátula del juego (el PNG que se incluye como icono) para poder alterarlo así cuando el usuario esté fuera del juego podrá ver sus logros en el menú de la caanoo (evidentemente, todo esto configurable en el exp_init por el programador)

Imagen de la idea 5:
http://img411.imageshack.us/img411/2021/games1l.png

Se que esto añade mucha complejidad a lo que ya tienes, pero creo que son buenas ideas, me gustaría que me dieras tu parcer. Pero se puede implementar sin problemas! te puedo ayudar en todo lo que necesites!

Drumpi
20/10/2010, 01:17
Creo que Bennu ya incorpora OpenSSL, es una de las modificaciones que me tienen parada la compilación del port a GP2X, así que se dispone de la mod_crypto para trabajar con ficheros, y sus funciones para ser usadas desde otros módulos (pero eso generará dependencias que hay que documentar).

Lo que sí deberíais hablar con Splinter, porque creo que Bennu soporta de forma nativa cualquier tipo de librería y podría acerse una compatible con cualquier programa, no sólo con Bennu, pero no estoy mu seguro de ello.

sharek
20/10/2010, 09:40
Bueno, no conozco bennu, pero si saboteur quiere portar el código a C creo que es mas bien para crear una librería, no para crear una versión nativa para bennu.

Supongo que desde bennu se pueden hacer llamadas o crear librerías que bennu pueda entender, creo que esa es la forma adecuada de hacerlo.

< - >
Mas ideas...

la librería EXP debería aportar un valor añadido al programador que lo incluye, ahora mismo solo lo aporta al usuario...

Por ejemplo recoger estadísticas anónimas de uso del programa o un sistema para comunicar dispositivos de forma centralizada, o guardar datos para perfile móviles, ¿juegos en red?

Supongamos que podemos guardar la partida en local o en un servidor remoto de forma automática, eso produciría efectos interesantes, por ejemplo, continuar la partida en la versión PC del juego o usar indistintamente las consolas GPH (wiz, caanoo) para jugar sin preocuparse de copiar los datos de una máquina a otra.

Creo que eso sería algo que haría que mas programadores añadieran la librería EXP a sus proyectos.

saboteur
20/10/2010, 11:47
Comparto muchas de tus ideas, y me gustaría ver cómo salen adelante. Pero lo de los cheaters, creo que no tiene remedio. Si saben como conseguir las claves al final estaríamos en las mismas. De todas formas, la gente que se anota tantos sin haber jugado no se merecen ni el apodo de jugones. Yo creo que esto está hecho para divertirse y picarse con los amigos, si alguien es tan pobre mentalmente que tiene que recurrir a eso... ¿por qué no se dedica a cosas más placenteras? Los únicos cheaters que vigilaría son los que hacen trampas en red, porque fastidian a otros jugadores que sólo quieren pasárselo bien.

En cuanto a la librería, ahora mismo la he dividido en dos partes:
1) exp_core. El núcleo de la aplicación, controla las experiencias, y si consigue una que no tenía antes la guarda en disco. Además, puedes asignarle una función callback que reciba todos los mensajes de eventos, etc...
2) exp_sdl. Es la librería que recibe los mensajes de core y los muestra en pantalla mediante sdl. Así, exp_core no depende de librerías externas y exp_sdl se dedica exclusivamente a mostrarlos con el diseño que se le diga.

Esto está pensado para en algún momento hacer otras librerías como: exp_opengl (muestra los mensajes con opengl), exp_raw (los muestra directamente en pantalla), etc... Así, cada uno usa la que mejor se ajuste a su programa.

Estas librerías serían sólo para los juegos. Para mostrar una puntuación en los iconos, habría que buscar otra forma, pero es que los menús de wiz y caanoo son distintos. Yo tengo una wiz, y ahí no merece la pena meter esa puntuación.

Mi otra idea era hacer un menú en la aplicación EXP que incluyese un listado con los juegos que usan experiencias, con estadísticas, donde se puedan arrancar, etc... Sería muy sencillo añadir una línea al final del código de cada juego para que vuelva a la aplicación EXP si existen las experiencias, o al menú normal si no existen. Además, me gustaría añadir opciones para comparar experiencias con otros usuarios de la misma consola. Lo que pasa es que hacer menús para eso me parece repetir cosas sin sentido, porque molaría que la aplicación EXP tuviera su propio icono en la pantalla principal y se pudiera integrar el resto fácilmente. Pero bueno, eso se hará con tiempo...

Si te crees capaz de convertir la librería a C puro mientras yo acabo mis cosas lo podemos hablar en privado y así liberar una primera versión en condiciones. ;) Lo difícil ya está hecho, sólo queda maquearlo.

sharek
20/10/2010, 16:27
Oeee! me alegra verte con emuje y ganas! es justo lo que hay que hacer!

Vamos allá

< - >
Podemos usar esto para generar ID's únicos referentes a la experiencias:

http://en.wikipedia.org/wiki/Universally_Unique_Identifier

Así no habrá colisiones cuando los desarrolladores generen estos ID's y a la hora de compartirlos en red o mostrarlos.

Saludos!