Bennu Game Development

Foros en Español => Otros DIV-likes => PixTudio => Topic started by: panreyes on October 31, 2016, 08:27:15 PM

Title: Soporte preliminar de Steam en PixTudio
Post by: panreyes on October 31, 2016, 08:27:15 PM
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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: SplinterGU on November 01, 2016, 01:56:32 PM
muy bueno!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: DCelso on November 01, 2016, 01:58:09 PM
Bueno yo no se para qué sirve.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: Drumpi on November 01, 2016, 06:17:51 PM
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
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: panreyes on November 01, 2016, 07:10:44 PM
@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...
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: alicesimu on November 02, 2016, 06:06:39 AM
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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: panreyes on November 02, 2016, 10:12:44 AM
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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: JaViS on November 02, 2016, 01:24:43 PM
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
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 02, 2016, 02:27:36 PM
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.org (https://pixtudio.org).
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: Drumpi on November 02, 2016, 06:12:37 PM
¿Entonces cada uno debe compilarse su módulo + Bennu para poder usarlo?
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: panreyes on November 02, 2016, 08:20:51 PM
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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: 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?
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: panreyes on November 03, 2016, 09:37:21 AM
PixTudio es monolítico, no modular :)
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 03, 2016, 12:15:16 PM
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.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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: SplinterGU on November 03, 2016, 02:00:36 PM
monolitico para todo? no permite modulos?
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: 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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: Drumpi on November 04, 2016, 01:25:59 AM
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 ;)
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: 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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 04, 2016, 02:48:33 PM
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.
;)
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 21, 2016, 02:57:42 PM
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.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: alicesimu on November 21, 2016, 04:44:18 PM
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!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: SplinterGU on November 21, 2016, 04:45:16 PM
muy buen trabajo joseba!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: JaViS on November 21, 2016, 05:04:32 PM
Excelente noticia!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: alicesimu on November 24, 2016, 11:51:42 PM
El steam es para Windows cierto?

Animo con el desarrollo!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: panreyes on November 25, 2016, 12:00:35 AM
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 :)
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: alicesimu on November 25, 2016, 12:38:06 AM
Mola, mi novia usa diariamente Steam, le gustara mucho!
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 27, 2016, 05:57:28 PM
El código que hay ahora mismo funciona para macOS, también.
Title: Re:Soporte preliminar de Steam en PixTudio
Post by: josebita on November 28, 2016, 03:42:53 PM
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)