Entre Joseba y yo hemos empezado a dar soporte oficial en PixTudio a Steamworks (la API de Steam) en un módulo propio (mod_steam).
Por ahora todo lo que se puede hacer es inicializarla (se hacen ciertas comprobaciones) y cerrarla.
int steam_init(int appID);
int steam_close();
El código fuente del módulo está en el repositorio de PixTudio, y podéis compilarla si tenéis acceso a Steamworks API, pero me falta saber si puedo distribuir binarios del engine (pxtb y pxtp) que lo lleven integrado. He mandado la pregunta a Valve, cuando tenga respuesta os informo.
De todas formas, para poder utilizar la API de Steam es necesario ser partner de Steam y tener permisos para publicar un juego (superando un Steam Greenlight, por ejemplo)
Un saludo
Proof:
(http://forum.bennugd.org/index.php?action=dlattach;topic=4373.0;attach=3748)
Pd: Agradezco el esfuerzo de l1nk3rn3l con su librería de módulos externos, pero preferí crear una implementación directa para hacerla más simple.
muy bueno!
Bueno yo no se para qué sirve.
- ¿para hacer juegos en red?
- ¿pasa subir juegos a steam?
- ¿para usar tu usario steam para hacer que?
Supongo que para poder hacer uso de las características de Steam, como ver a los amigos, saber a qué están jugando (o que tu estás jugando a eso, por si quieres unirte a la partida) o usar el sistema de logros y recompensas de Steam.
Aunque eso es todo lo que te puedo decir, tengo Steam por el Sonic Generations, el Source Filmmaker y algunas ofertas de juegos de regalo de Sega :D
@DCelso y @Drumpi, deberíais jugar a más juegos xD
Sirve para utilizar todas las características de Steam: DRM, logros, gestión de partidas, usuarios, tablas de récords, regalo de cromos coleccionables...
Quote from: panreyes on October 31, 2016, 08:27:15 PM
...
De todas formas, para poder utilizar la API de Steam es necesario ser partner de Steam y tener permisos para publicar un juego (superando un Steam Greenlight, por ejemplo)
...
Sale caro ser partner de Steam unos 150€ creo recordar.
creo que pagas una vez y te olvidas.
Tienes que hacer un donativo de 100$ (lo pagas a Steam y ellos lo redirigen a una ONG) para poder publicar el primer proyecto en Steam Greenlight.
Luego ya puedes mandar todos los que te apetezcan.
Esto realmente es muy util. Bennu,Pixstudio y los Divlike en general tienen como desventaja que no implementan soluciones para la hora en el que el juego esta terminado y hay que empezar a distribuirlo.
Este es un gran avance
Comentar que una vez ésto funcione el código debería ser fácilmente convertible a BennuGD (renombré algunos símbolos de los módulos, pero por lo demás debería ser muy compatible).
Por supuesto, el módulo de steam es completamente opcional y sólo se compila si el SDK de steam está disponible. Actualizamos las instrucciones de compilación en pixtudio.divhub.org (https://pixtudio.divhub.org).
¿Entonces cada uno debe compilarse su módulo + Bennu para poder usarlo?
Quote from: Drumpi on November 02, 2016, 06:12:37 PM
¿Entonces cada uno debe compilarse su módulo + Bennu para poder usarlo?
En anteriores episodios...
Quotepero me falta saber si puedo distribuir binarios del engine (pxtb y pxtp) que lo lleven integrado. He mandado la pregunta a Valve, cuando tenga respuesta os informo.
De todas formas, lo que sí necesitarás es una cuenta de Steamworks, habiendo pasado un Greenlight. Hasta entonces, de poco te vale el módulo.
Josebita ha dado a entender que se necesita el SDK de Steam... pero yo he entendido eso, que cada uno debía hacer el suyo (lo mismo el tema de la firma de otro engina me ha confundido).
¿Y por qué integrarlo en PXTB y PXTP y no dejarlo en un módulo aparte, como el resto?
PixTudio es monolítico, no modular :)
Quote from: Drumpi on November 03, 2016, 01:38:48 AM
Josebita ha dado a entender que se necesita el SDK de Steam... pero yo he entendido eso, que cada uno debía hacer el suyo (lo mismo el tema de la firma de otro engina me ha confundido).
¿Y por qué integrarlo en PXTB y PXTP y no dejarlo en un módulo aparte, como el resto?
A ver. En PixTudio los módulos van integrados en un único ejecutable/librería, lo cual no quita que haya que cargar los módulos para poder usarlos, igual que en BennuGD.
Entonces el
código fuente del módulo será
casi compatible directamente con BennuGD y a quien le haga falta lo podrá utilizar ahí. En función de lo que contesten los de Steam, ese módulo lo podrá compilar alguien y distribuirlo y ya o quizás se pudiera distribuir el módulo sin las librerías de Steam o algo así, no lo sé pero enlazo con el siguiente párrafo.
Respondiendo a tu comentario: recuerda que en PixTudio no distribuyo binarios sino que doy instrucciones muy detalladas (https://pixtudio.divhub.org/#compiling), creo que muy sencillas de seguir y suficientemente actualizadas para compilar vosotros mismos el código, de forma que cuando digo que hace falta el SDK de Steam estoy hablando de que es necesario para tener la funcionalidad cuando os compiléis vosotros PixTudio.
Pixel y link3rn3l son tan amables de proporcionar binarios, pero no son oficiales, son aportaciones suyas.
monolitico para todo? no permite modulos?
Quote from: SplinterGU on November 03, 2016, 02:00:36 PM
monolitico para todo? no permite modulos?
A ver: PixTudio es modular, pero los módulos van dentro del ejecutable.
No se pueden cargar módulos externos de .dll/.so/.dylib cuando se compila en modo monolítico. Lo pensé en su momento y me pareció complicar el diseño sin ver la ventaja evidente.
Dicho lo cual, debería ser posible compilar PixTudio con una arquitectura donde los módulos estén como librerías dinámicas externas. Hay que escribir los CMakeLists.txt adecuados y siempre me ha dado pereza.
Ok, me lo creo, pero que conste que tengo en mi disco duro las compilaciones de Pixel del 10 de Enero, del 26 de Enero, del 17 de Febrero y del 30 de Marzo (por decir algunas fechas :D) con un puñado de .dlls y de .sos según la plataforma compilada :D
Ya, ya sé que me tengo que actualizar ^^U Don't panic que me ha surgido un proyecto para PC y Android con el que voy a experimentar ;)
Quote from: josebita on November 03, 2016, 02:28:26 PM
Quote from: SplinterGU on November 03, 2016, 02:00:36 PM
monolitico para todo? no permite modulos?
A ver: PixTudio es modular, pero los módulos van dentro del ejecutable.
No se pueden cargar módulos externos de .dll/.so/.dylib cuando se compila en modo monolítico. Lo pensé en su momento y me pareció complicar el diseño sin ver la ventaja evidente.
Dicho lo cual, debería ser posible compilar PixTudio con una arquitectura donde los módulos estén como librerías dinámicas externas. Hay que escribir los CMakeLists.txt adecuados y siempre me ha dado pereza.
se entiende, gracias por la respuesta.
Quote from: SplinterGU on November 04, 2016, 01:58:00 AM
Quote from: josebita on November 03, 2016, 02:28:26 PM
Quote from: SplinterGU on November 03, 2016, 02:00:36 PM
monolitico para todo? no permite modulos?
A ver: PixTudio es modular, pero los módulos van dentro del ejecutable.
No se pueden cargar módulos externos de .dll/.so/.dylib cuando se compila en modo monolítico. Lo pensé en su momento y me pareció complicar el diseño sin ver la ventaja evidente.
Dicho lo cual, debería ser posible compilar PixTudio con una arquitectura donde los módulos estén como librerías dinámicas externas. Hay que escribir los CMakeLists.txt adecuados y siempre me ha dado pereza.
se entiende, gracias por la respuesta.
;)
Hemos hecho algunas cosas más:
* El nombre de usuario de Steam se guarda en una variable global.
* El id de la aplicación se guarda también en una variable global (aunque no sé si sirve para mucho, la aplicación ya lo debería saber...).
* Función para desbloquear logros.
* Función para bloquear logros (por si queréis castigar a los jugadores).
* Función para comprobar si el jugador ha conseguido un logro en particular.
* Función para obtener el gráfico asociado a un logro en particular en su estado actual (si el usuario no ha conseguido el logro aparecerá "desactivado" y si lo ha conseguido aparecerá "activado").
* Función para obtener un gráfico con el avatar de Steam del jugador.
La idea es ir ampliando poco a poco, pero va progresando.
Esta muy bien este progreso,
pero en un futuro un poco lejano podria hacerme una cuenta de desarrolladora steam...es un poco caro economicamente.
de google play ya la tengo y puedo trabajar en ella.
aun asi animos!
muy buen trabajo joseba!
Excelente noticia!
El steam es para Windows cierto?
Animo con el desarrollo!
Quote from: alicesimu on November 24, 2016, 11:51:42 PM
El steam es para Windows cierto?
Animo con el desarrollo!
Para Windows, Linux y MacOS. Confirmado que ya funciona correctamente en Windows y Linux :)
Mola, mi novia usa diariamente Steam, le gustara mucho!
El código que hay ahora mismo funciona para macOS, también.
He añadido soporte para más funciones de steam relacionadas con los amigos (de steam) de cada cual:
INT STEAM_FRIEND_COUNT() -> Obtiene el número total de amigos que uno tiene en Steam
STRING STEAM_FRIEND_NAME(INT friend_id) -> Obtiene el nombre de un amigo de Steam en particular
STRING STEAM_FRIEND_NICKNAME(INT friend_id) -> Obtiene el apodo que se le ha dado a un amigo en Steam
INT STEAM_FRIEND_AVATAR(INT friend_id, INT tamaño) -> Obtiene un gráfico con el avatar del amigo, con el tamaño pedido de entre los tres posibles.
Aún no he documentado las funciones, pero podéis ver cómo se usan aquí:
https://bitbucket.org/josebagar/pixtudio/src/c8487d0dc71801ef0168bd93f40c90099a40dc18/examples/20_mod_steam.prg?at=bigmap&fileviewer=file-view-default (https://bitbucket.org/josebagar/pixtudio/src/c8487d0dc71801ef0168bd93f40c90099a40dc18/examples/20_mod_steam.prg?at=bigmap&fileviewer=file-view-default)
Pongo también un screenshot de qué pinta tiene el código ejecutándose en mi ordenador (el avatar grande con la interrogación es el propio, el resto es de mis amigos de Steam):
(http://forum.bennugd.org/index.php?action=dlattach;topic=4373.0;attach=3845)